45 lines
1.9 KiB
Markdown
45 lines
1.9 KiB
Markdown
# Dược Thư RAG — Medical Chatbot Platform
|
|
|
|
Medical chatbot grounded in the Vietnamese National Drug Formulary
|
|
(Dược thư quốc gia Việt Nam 2018), built as a microservices monorepo.
|
|
|
|
See [docs/architecture.md](docs/architecture.md) for the full design
|
|
(service responsibilities, data stores, RAG ingestion strategy, safety
|
|
guardrails), [docs/adr](docs/adr) for architecture decision records,
|
|
[docs/pdf-parsing-outlier-catalog.md](docs/pdf-parsing-outlier-catalog.md)
|
|
for a reusable checklist of confirmed PDF-parsing risks (useful for this
|
|
book and any similarly-structured PDF), and
|
|
[docs/progress-log.md](docs/progress-log.md) for a running log of what's
|
|
been done and what's next.
|
|
|
|
> **Status**: directory scaffold only — no business logic implemented yet.
|
|
> See the build roadmap in `docs/architecture.md` for the phased plan.
|
|
|
|
## Directory map
|
|
|
|
```
|
|
apps/
|
|
web/ Next.js frontend
|
|
ai-service/ Python FastAPI — RAG orchestration + OpenAI calls
|
|
api-gateway/ NestJS — public entry point, routes to internal services
|
|
auth-service/ NestJS — signup/login/JWT
|
|
user-service/ NestJS — profile/preferences
|
|
chat-service/ NestJS — chat session + message history
|
|
mobile/ reserved for a future mobile app
|
|
packages/
|
|
shared-types/ TS DTOs shared across Node services + web
|
|
api-client/ typed HTTP client for web
|
|
ui/ shared React components
|
|
config/ shared eslint/tsconfig presets
|
|
ingestion/ offline batch pipeline: PDF -> monographs -> chunks -> embeddings -> Qdrant
|
|
infra/ docker-compose, k8s/Helm, Terraform, CI
|
|
docs/ architecture docs and ADRs
|
|
```
|
|
|
|
## Prerequisites (once implementation starts)
|
|
|
|
- Node.js + pnpm (JS workspace: `apps/web`, `apps/api-gateway`, `apps/auth-service`,
|
|
`apps/user-service`, `apps/chat-service`, `packages/*`)
|
|
- Python 3.11+ (`apps/ai-service`, `ingestion`)
|
|
- Docker (local Postgres/Qdrant/Redis via `infra/docker/docker-compose.yml`)
|