feat: persist authenticated diagnoses

Implement diagnosis persistence routes with image upload, classification,
and prediction storage. Add missing HTTP error helpers (unauthorized,
forbidden) and update uploader client to use configurable base URL.

- Create POST /api/v1/diagnoses to upload images and store classifications
- Create GET /api/v1/diagnoses to list user's diagnoses (30 most recent)
- Create GET /api/v1/diagnoses/:id to retrieve diagnosis with predictions
- Add loadDiagnosisRecord helper for consistent diagnosis data loading
- Update uploader-client.ts to use env.uploaderBaseUrl
- Add unauthorized and forbidden error helpers to http-errors.ts
- Register diagnosisRoutes in main app

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Asep Haryana Saputra
2026-05-22 16:08:18 +00:00
co-authored by Claude Opus 4.7
parent 5eb195cbeb
commit 1a36ae5cbc
4 changed files with 270 additions and 10 deletions
+2
View File
@@ -4,6 +4,7 @@ import { healthRoutes } from './routes/health';
import { statusRoutes } from './routes/status';
import { diseaseRoutes } from './routes/diseases';
import { classificationRoutes } from './routes/classifications';
import { diagnosisRoutes } from './routes/diagnoses';
import { dashboardRoutes } from './routes/dashboard';
import { authRoutes } from './routes/auth';
@@ -15,6 +16,7 @@ const app = new Elysia()
.use(authRoutes)
.use(diseaseRoutes)
.use(classificationRoutes)
.use(diagnosisRoutes)
.use(dashboardRoutes)
.listen(env.port);