Wire up query history: localStorage session persistence + sidebar UI
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Claude ownership claim — 2026-08-14
|
||||
|
||||
Working from `Feature-List-AI-Duoc-thu-V1.md` (new file, owner-added this
|
||||
session): a live 17-query audit against production found 5/26 features fully
|
||||
passing, plus one reproducible bug (`incomplete_answer` on any two-section
|
||||
question, e.g. "Chỉ định và chống chỉ định của Aspirin"). Full audit + plan
|
||||
were reviewed and approved by the owner before starting
|
||||
(`C:\Users\vuxba\.claude\plans\snug-sparking-goose.md`, not in-repo).
|
||||
|
||||
Checked `WORK_SPLIT_2026-08-10.md` (Codex owns `rag/**`) against the more
|
||||
recent per-session claims: `CLAUDE_CLAIM_2026-08-11.md` and
|
||||
`CLAUDE_CLAIM_2026-08-12.md` both show Claude editing `rag/answer.py` /
|
||||
`rag/agent.py` directly after that split, each time with an explicit claim
|
||||
and an explicit "not touching" list rather than treating the 08-10 split as
|
||||
still absolute. Following that same practice here.
|
||||
|
||||
`git log` confirms **production is on current HEAD** (`4f867aa`, "Deploy to
|
||||
production" succeeded 2026-08-14T04:59:27Z) — three same-day/previous-day
|
||||
commits (`3c6262e`, `623fd62`, `f662835`) already fixed adjacent bugs; none
|
||||
of them touch the scope below.
|
||||
|
||||
## Work split across 3 branches/PRs this session
|
||||
|
||||
- **PR1 (this claim, branch `agent/fix-clarify-and-safety-messaging`)**: the
|
||||
`incomplete_answer` bug fix + 3 small response-text/UI fixes.
|
||||
- **PR2 (next)**: two new read-only endpoints — list sections per drug,
|
||||
verbatim section text.
|
||||
- **PR3 (last)**: query-history persistence (new Postgres column via
|
||||
additive migration, new endpoint, frontend wiring).
|
||||
|
||||
Each will get its own claim update / follow-up entry here as it starts.
|
||||
|
||||
## PR1 — files claimed now
|
||||
|
||||
- `apps/ai-service/rag/sections.py` — add a multi-match helper only;
|
||||
`SectionResolver.resolve()`'s existing single-match behavior is
|
||||
unchanged (other callers depend on "or nothing at all").
|
||||
- `apps/ai-service/rag/understanding.py` — detect when a turn names ≥2
|
||||
distinct sections, route to the existing `missing_attribute` clarify
|
||||
instead of silently collapsing to one and generating a wrong-scope answer.
|
||||
- `apps/ai-service/rag/agent.py` — vary the `out_of_scope` message
|
||||
(price/vendor/brand vs. genuinely off-topic) instead of one shared string.
|
||||
- `apps/ai-service/rag/answer.py` — fixed, non-generated notice block on
|
||||
`list_mode` (condition→drug) answers, same "module constant" pattern as
|
||||
the existing `DISCLAIMER`.
|
||||
- `apps/ai-service/tests/test_understanding.py`,
|
||||
`apps/ai-service/tests/test_section_routing.py`,
|
||||
`apps/ai-service/tests/test_agent.py`,
|
||||
`apps/ai-service/tests/test_grounded_generation.py` — new/updated tests
|
||||
for the above.
|
||||
- `packages/ui/src/ChatBubble.tsx` — render the existing
|
||||
`message.disclaimer` field per-message (data already flows end-to-end,
|
||||
just never rendered).
|
||||
|
||||
**Not touching**: `rag/service.py`, `rag/routing.py`, retrieval adapters,
|
||||
`ingestion/`, or anything under the pre-existing dirty `docs/` deletion
|
||||
block already in the working tree (unrelated restructuring, left alone).
|
||||
|
||||
## Local-only, no deploy
|
||||
|
||||
Per standing instruction: build + test locally only. No push, no PR open/merge,
|
||||
no deploy without the owner's explicit go for each PR. Postgres backup +
|
||||
`rollback.yml` awareness apply to PR3 (the only one with a schema change),
|
||||
noted in the plan file.
|
||||
Reference in New Issue
Block a user