Initial monorepo scaffold for Duoc Thu RAG medical chatbot

This commit is contained in:
2026-07-30 20:38:34 +07:00
commit 9bad1f61ea
91 changed files with 740 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# Progress Log
Chronological record of work done on this project, newest entry on top. The
goal is continuity across sessions: if a work session ends unexpectedly
(context/token limit, interruption), whoever picks this up next — human or
Claude — should be able to read the latest entry and know exactly what's
done and what's next, without having to reconstruct it from git history.
**Convention**: add a new entry at the top before ending a session whenever
meaningful progress was made, and proactively the moment it looks like the
session might run out of context/tokens mid-task — don't wait until the very
end if that risk is showing.
---
## 2026-07-30 — Initial monorepo scaffold
**Done:**
- Designed the microservices architecture (see `docs/architecture.md`):
Python/FastAPI `ai-service` for RAG, NestJS for `api-gateway`/`auth-service`/
`user-service`/`chat-service`, Next.js `web`, Qdrant for vectors, Postgres
for relational data, Redis reserved for caching/queues.
- Scaffolded the full monorepo directory tree (`apps/`, `packages/`,
`ingestion/`, `infra/`, `docs/`) with baseline config (package.json/
pyproject.toml stubs, pnpm workspace, docker-compose topology stub).
- Moved `duoc-thu-quoc-gia-viet-nam-2018.pdf` into `ingestion/data/raw/`.
- Decided vector DB: **Qdrant** over pgvector (`docs/adr/0001-vector-db-qdrant.md`).
- Decided deployment: GitOps via the **team's existing ArgoCD instance**,
not a custom push-based CD pipeline (`docs/adr/0002-argocd-gitops.md`,
`infra/argocd/`). CI's job is build/test/push image + bump the Helm values
image tag; ArgoCD does the actual sync.
- `git init` + initial commit (this scaffold).
- Created a private GitHub repo and pushed the initial commit.
**Not done yet / next up (Phase 1 of the build roadmap in `docs/architecture.md`):**
- No business logic exists yet anywhere — this was scaffold only.
- Phase 1: build the `ingestion/` pipeline for real (PDF extraction via
PyMuPDF, monograph/section segmentation, section-aware chunking, OpenAI
embeddings, Qdrant upsert) and validate retrieval quality via the
`ingestion/notebooks/` QA step.
- Still pending/TBD: which cloud provider (AWS/GCP/Azure) for Terraform
(`infra/terraform/README.md`), and the team's ArgoCD instance's actual
cluster/server + project details (`infra/argocd/README.md` TODOs).