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
|
||||
// =============================================================================
|
||||
|
||||
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
|
||||
|
||||
// =============================================================================
|
||||
@@ -111,7 +111,7 @@ async function fetchWithTimeout<T>(
|
||||
*/
|
||||
export async function fetchCourses(): Promise<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> {
|
||||
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> {
|
||||
return fetchWithTimeout<Course>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/courses`,
|
||||
`${ACADEMY_API_BASE}/courses`,
|
||||
{
|
||||
method: 'POST',
|
||||
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> {
|
||||
return fetchWithTimeout<Course>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/courses/${id}`,
|
||||
`${ACADEMY_API_BASE}/courses/${id}`,
|
||||
{
|
||||
method: 'PUT',
|
||||
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> {
|
||||
await fetchWithTimeout<void>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/courses/${id}`,
|
||||
`${ACADEMY_API_BASE}/courses/${id}`,
|
||||
{
|
||||
method: 'DELETE'
|
||||
}
|
||||
@@ -175,7 +175,7 @@ export async function fetchEnrollments(courseId?: string): Promise<Enrollment[]>
|
||||
params.set('courseId', courseId)
|
||||
}
|
||||
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)
|
||||
}
|
||||
@@ -185,7 +185,7 @@ export async function fetchEnrollments(courseId?: string): Promise<Enrollment[]>
|
||||
*/
|
||||
export async function enrollUser(request: EnrollUserRequest): Promise<Enrollment> {
|
||||
return fetchWithTimeout<Enrollment>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments`,
|
||||
`${ACADEMY_API_BASE}/enrollments`,
|
||||
{
|
||||
method: 'POST',
|
||||
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> {
|
||||
return fetchWithTimeout<Enrollment>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/progress`,
|
||||
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/progress`,
|
||||
{
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(update)
|
||||
@@ -211,7 +211,7 @@ export async function updateProgress(enrollmentId: string, update: UpdateProgres
|
||||
*/
|
||||
export async function completeEnrollment(enrollmentId: string): Promise<Enrollment> {
|
||||
return fetchWithTimeout<Enrollment>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/complete`,
|
||||
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/complete`,
|
||||
{
|
||||
method: 'POST'
|
||||
}
|
||||
@@ -227,7 +227,7 @@ export async function completeEnrollment(enrollmentId: string): Promise<Enrollme
|
||||
*/
|
||||
export async function fetchCertificate(id: string): Promise<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> {
|
||||
return fetchWithTimeout<Certificate>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/enrollments/${enrollmentId}/certificate`,
|
||||
`${ACADEMY_API_BASE}/enrollments/${enrollmentId}/certificate`,
|
||||
{
|
||||
method: 'POST'
|
||||
}
|
||||
@@ -252,7 +252,7 @@ export async function generateCertificate(enrollmentId: string): Promise<Certifi
|
||||
*/
|
||||
export async function submitQuiz(lessonId: string, answers: SubmitQuizRequest): Promise<SubmitQuizResponse> {
|
||||
return fetchWithTimeout<SubmitQuizResponse>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/lessons/${lessonId}/quiz`,
|
||||
`${ACADEMY_API_BASE}/lessons/${lessonId}/quiz`,
|
||||
{
|
||||
method: 'POST',
|
||||
body: JSON.stringify(answers)
|
||||
@@ -269,7 +269,7 @@ export async function submitQuiz(lessonId: string, answers: SubmitQuizRequest):
|
||||
*/
|
||||
export async function fetchAcademyStatistics(): Promise<AcademyStatistics> {
|
||||
return fetchWithTimeout<AcademyStatistics>(
|
||||
`${ACADEMY_API_BASE}/api/v1/academy/statistics`
|
||||
`${ACADEMY_API_BASE}/statistics`
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user