fix(academy): use proxy path instead of unreachable localhost:8093
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 35s
CI / test-python-backend-compliance (push) Successful in 28s
CI / test-python-document-crawler (push) Successful in 26s
CI / test-python-dsms-gateway (push) Successful in 19s
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 35s
CI / test-python-backend-compliance (push) Successful in 28s
CI / test-python-document-crawler (push) Successful in 26s
CI / test-python-dsms-gateway (push) Successful in 19s
The Academy API client was using NEXT_PUBLIC_SDK_API_URL with fallback to http://localhost:8093, which is unreachable from the browser. Changed to use the existing Next.js proxy at /api/sdk/v1/academy/.
This commit is contained in:
@@ -26,7 +26,7 @@ import {
|
|||||||
// CONFIGURATION
|
// CONFIGURATION
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
const ACADEMY_API_BASE = process.env.NEXT_PUBLIC_SDK_API_URL || 'http://localhost:8093'
|
const ACADEMY_API_BASE = '/api/sdk/v1/academy'
|
||||||
const API_TIMEOUT = 30000 // 30 seconds
|
const API_TIMEOUT = 30000 // 30 seconds
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
@@ -111,7 +111,7 @@ async function fetchWithTimeout<T>(
|
|||||||
*/
|
*/
|
||||||
export async function fetchCourses(): Promise<Course[]> {
|
export async function fetchCourses(): Promise<Course[]> {
|
||||||
return fetchWithTimeout<Course[]>(
|
return fetchWithTimeout<Course[]>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/courses`
|
`${ACADEMY_API_BASE}/courses`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ export async function fetchCourses(): Promise<Course[]> {
|
|||||||
*/
|
*/
|
||||||
export async function fetchCourse(id: string): Promise<Course> {
|
export async function fetchCourse(id: string): Promise<Course> {
|
||||||
return fetchWithTimeout<Course>(
|
return fetchWithTimeout<Course>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/courses/${id}`
|
`${ACADEMY_API_BASE}/courses/${id}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ export async function fetchCourse(id: string): Promise<Course> {
|
|||||||
*/
|
*/
|
||||||
export async function createCourse(request: CourseCreateRequest): Promise<Course> {
|
export async function createCourse(request: CourseCreateRequest): Promise<Course> {
|
||||||
return fetchWithTimeout<Course>(
|
return fetchWithTimeout<Course>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/courses`,
|
`${ACADEMY_API_BASE}/courses`,
|
||||||
{
|
{
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify(request)
|
body: JSON.stringify(request)
|
||||||
@@ -142,7 +142,7 @@ export async function createCourse(request: CourseCreateRequest): Promise<Course
|
|||||||
*/
|
*/
|
||||||
export async function updateCourse(id: string, update: CourseUpdateRequest): Promise<Course> {
|
export async function updateCourse(id: string, update: CourseUpdateRequest): Promise<Course> {
|
||||||
return fetchWithTimeout<Course>(
|
return fetchWithTimeout<Course>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/courses/${id}`,
|
`${ACADEMY_API_BASE}/courses/${id}`,
|
||||||
{
|
{
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
body: JSON.stringify(update)
|
body: JSON.stringify(update)
|
||||||
@@ -155,7 +155,7 @@ export async function updateCourse(id: string, update: CourseUpdateRequest): Pro
|
|||||||
*/
|
*/
|
||||||
export async function deleteCourse(id: string): Promise<void> {
|
export async function deleteCourse(id: string): Promise<void> {
|
||||||
await fetchWithTimeout<void>(
|
await fetchWithTimeout<void>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/courses/${id}`,
|
`${ACADEMY_API_BASE}/courses/${id}`,
|
||||||
{
|
{
|
||||||
method: 'DELETE'
|
method: 'DELETE'
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ export async function fetchEnrollments(courseId?: string): Promise<Enrollment[]>
|
|||||||
params.set('courseId', courseId)
|
params.set('courseId', courseId)
|
||||||
}
|
}
|
||||||
const queryString = params.toString()
|
const queryString = params.toString()
|
||||||
const url = `${ACADEMY_API_BASE}/api/v1/academy/enrollments${queryString ? `?${queryString}` : ''}`
|
const url = `${ACADEMY_API_BASE}/enrollments${queryString ? `?${queryString}` : ''}`
|
||||||
|
|
||||||
return fetchWithTimeout<Enrollment[]>(url)
|
return fetchWithTimeout<Enrollment[]>(url)
|
||||||
}
|
}
|
||||||
@@ -185,7 +185,7 @@ export async function fetchEnrollments(courseId?: string): Promise<Enrollment[]>
|
|||||||
*/
|
*/
|
||||||
export async function enrollUser(request: EnrollUserRequest): Promise<Enrollment> {
|
export async function enrollUser(request: EnrollUserRequest): Promise<Enrollment> {
|
||||||
return fetchWithTimeout<Enrollment>(
|
return fetchWithTimeout<Enrollment>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments`,
|
`${ACADEMY_API_BASE}/enrollments`,
|
||||||
{
|
{
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify(request)
|
body: JSON.stringify(request)
|
||||||
@@ -198,7 +198,7 @@ export async function enrollUser(request: EnrollUserRequest): Promise<Enrollment
|
|||||||
*/
|
*/
|
||||||
export async function updateProgress(enrollmentId: string, update: UpdateProgressRequest): Promise<Enrollment> {
|
export async function updateProgress(enrollmentId: string, update: UpdateProgressRequest): Promise<Enrollment> {
|
||||||
return fetchWithTimeout<Enrollment>(
|
return fetchWithTimeout<Enrollment>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/progress`,
|
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/progress`,
|
||||||
{
|
{
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
body: JSON.stringify(update)
|
body: JSON.stringify(update)
|
||||||
@@ -211,7 +211,7 @@ export async function updateProgress(enrollmentId: string, update: UpdateProgres
|
|||||||
*/
|
*/
|
||||||
export async function completeEnrollment(enrollmentId: string): Promise<Enrollment> {
|
export async function completeEnrollment(enrollmentId: string): Promise<Enrollment> {
|
||||||
return fetchWithTimeout<Enrollment>(
|
return fetchWithTimeout<Enrollment>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/complete`,
|
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/complete`,
|
||||||
{
|
{
|
||||||
method: 'POST'
|
method: 'POST'
|
||||||
}
|
}
|
||||||
@@ -227,7 +227,7 @@ export async function completeEnrollment(enrollmentId: string): Promise<Enrollme
|
|||||||
*/
|
*/
|
||||||
export async function fetchCertificate(id: string): Promise<Certificate> {
|
export async function fetchCertificate(id: string): Promise<Certificate> {
|
||||||
return fetchWithTimeout<Certificate>(
|
return fetchWithTimeout<Certificate>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/certificates/${id}`
|
`${ACADEMY_API_BASE}/certificates/${id}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ export async function fetchCertificate(id: string): Promise<Certificate> {
|
|||||||
*/
|
*/
|
||||||
export async function generateCertificate(enrollmentId: string): Promise<Certificate> {
|
export async function generateCertificate(enrollmentId: string): Promise<Certificate> {
|
||||||
return fetchWithTimeout<Certificate>(
|
return fetchWithTimeout<Certificate>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/certificate`,
|
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/certificate`,
|
||||||
{
|
{
|
||||||
method: 'POST'
|
method: 'POST'
|
||||||
}
|
}
|
||||||
@@ -252,7 +252,7 @@ export async function generateCertificate(enrollmentId: string): Promise<Certifi
|
|||||||
*/
|
*/
|
||||||
export async function submitQuiz(lessonId: string, answers: SubmitQuizRequest): Promise<SubmitQuizResponse> {
|
export async function submitQuiz(lessonId: string, answers: SubmitQuizRequest): Promise<SubmitQuizResponse> {
|
||||||
return fetchWithTimeout<SubmitQuizResponse>(
|
return fetchWithTimeout<SubmitQuizResponse>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/lessons/${lessonId}/quiz`,
|
`${ACADEMY_API_BASE}/lessons/${lessonId}/quiz`,
|
||||||
{
|
{
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify(answers)
|
body: JSON.stringify(answers)
|
||||||
@@ -269,7 +269,7 @@ export async function submitQuiz(lessonId: string, answers: SubmitQuizRequest):
|
|||||||
*/
|
*/
|
||||||
export async function fetchAcademyStatistics(): Promise<AcademyStatistics> {
|
export async function fetchAcademyStatistics(): Promise<AcademyStatistics> {
|
||||||
return fetchWithTimeout<AcademyStatistics>(
|
return fetchWithTimeout<AcademyStatistics>(
|
||||||
`${ACADEMY_API_BASE}/api/v1/academy/statistics`
|
`${ACADEMY_API_BASE}/statistics`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user