Commit History
-
[KM-560][KM-561] drop catalog LLM enrichment + rename store to data_catalog + add /data-catalog index endpoint
Rifqi Hafizuddin +1: Claude Opus 4.7- Remove CatalogEnricher entirely (cost cut). Planner reads stats + sample rows + column names directly. Deletes src/catalog/enricher.py, config/prompts/catalog_enricher.md, and the StructuredPipeline enrich step. render_source moves to src/catalog/render.py. - Rename jsonb table catalogs -> data_catalog. Class name unchanged; table created fresh on next init_db (no rows in prod yet, no migration needed). - Add GET /api/v1/data-catalog/{user_id} returning list[CatalogIndexEntry] (source_id, source_type, name, location_ref, table_count, updated_at). Wired in main.py. Lightweight summary intended for the catalog refresher. - Update ARCHITECTURE.md / REPO_CONTEXT.md / PROGRESS.md: LLM call sites now three (was four), ingestion flow is introspect -> validate -> upsert. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>2d6eca0
-
fixes: chain singleton, parquet logger, SSE event consistency, remove double DB fetch
ce20d89 -
fix planner prompt template parsing
f34af71 -
[NOTICKET] IntentRouter + planner + dispatcher + QueryService + AnswerAgent + ChatHandler
Rifqi Hafizuddin +1: Claude Opus 4.7Bundles every Both-PR work item that doesn't require teammate's tabular modules. Phase 1 endpoints and chatbot.py are intentionally NOT touched -- cleanup PR will rewire /chat/stream and rename answer_agent.py -> chatbot.py. - IntentRouter: classify chat / unstructured / structured; history-aware rewritten_query via Pydantic structured output. Prompt with full ruleset + few-shot in config/prompts/intent_router.md. - Planner prompt: build_planner_prompt(question, catalog, previous_error) reuses catalog.enricher.render_source so DB and tabular sources render identically across enricher and planner. System prompt has hard constraints + DB and tabular few-shot in config/prompts/query_planner.md. - QueryPlannerService: Azure OpenAI structured output -> QueryIR. Injectable chain. Supports retry via previous_error arg. - ExecutorDispatcher: pick(ir) routes by source.source_type. Lazy executor imports keep module import-safe. Caches per source_type. Tests inject factories. - Q…f65aee0
-
initial structure
efc0c0a -
initial commit
8557a20