Files

36 lines
1.5 KiB
Markdown

# web
Next.js frontend: chat UI, citation/evidence panel, drug autocomplete,
persistent clinical disclaimer banner.
**Current call path: browser → this app's own route handlers → `ai-service`.**
`api-gateway` is not built yet (its directory holds a `README.md` and a
`package.json`), so requests go through `app/api/` and on to `ai-service`
(`API_GATEWAY_URL ?? AI_SERVICE_URL`, set to `http://ai-service:8000` in
production). There is no authentication layer in this path today. When the
gateway and auth services are built, this is the seam that changes.
`app/api/chat/route.ts` is more than a proxy: it maps `ai-service`'s abstain
`reason` codes to the Vietnamese text the user reads. A reason code with no
entry there falls back to wording that reads as "no data in the formulary",
which would misrepresent an outage or a timeout — so a new backend reason
code needs an entry here in the same change.
Timeouts: `_components/ChatPanel.tsx` aborts a request at 65s, derived from
the backend's ceiling (a 40s request budget that can overrun by one in-flight
model call). A lower value can cut off answers the server has successfully
produced, so keep it above that ceiling if it is ever revisited.
## Running
```powershell
pnpm install
pnpm --filter web dev # http://localhost:3000, expects ai-service on :8079
```
## Tests
There are none, and no test runner is configured. Verify changes by driving
the real UI in a browser; `pytest` passing in `apps/ai-service` says nothing
about this app.