Rifqi Hafizuddin commited on
Commit Β·
c5e2e1b
1
Parent(s): c333ec8
update md file
Browse files- REPO_STATUS.md +6 -5
REPO_STATUS.md
CHANGED
|
@@ -148,7 +148,7 @@ Two facts to internalise:
|
|
| 148 |
- **Unstructured RAG** over PGVector.
|
| 149 |
- **Analytics tools:** 4 registered composite `analyze_*` (descriptive, aggregate, correlation, trend) + 4 data-access tools (check_data, check_knowledge, retrieve_data, retrieve_knowledge). Four further composites (comparison, contribution, profile, segment) exist in code but are **not registered** with the Planner.
|
| 150 |
- **Versioned report generation** from persisted records.
|
| 151 |
-
- **Analysis sessions:** data-first creation gate (β₯1 bound source)
|
| 152 |
- **Langfuse tracing** (PII-masked), **Redis caching**, **pooled DB engines** + speculative prewarm.
|
| 153 |
|
| 154 |
---
|
|
@@ -185,7 +185,7 @@ unless `SKIP_INIT_DB=true`.
|
|
| 185 |
| `report_inputs` *(was `analysis_records`)* | jsonb `AnalysisRecord`, one per slow-path run; **Python-owned** | slow path | ReportGenerator, report readiness |
|
| 186 |
| `analyses` *(dedorch, plural)* | uuid `id`, `user_id`, `analysis_title`, `objective`, `business_questions` jsonb, `status` (active\|inactive), `data_bind`(+`data_bind_version`), `report_id`, `report_collection` β **defined by Go migrations**; `problem_statement`/`problem_validated`/`owner_id` already **dropped** there (`0003`/`0004`) | Go `/api/v1/analyses`; Python state store | gate (no-op), Help, report |
|
| 187 |
| `reports` *(dedorch)* | uuid, `analysis_id`, `user_id`, `title` + markdown `content` + `version` (UNIQUE per analysis) | Go + Python ReportStore | report API |
|
| 188 |
-
|
|
| 189 |
| `analyses_messages` *(dedorch)* | the analysis chat room (`role β user\|ai`); replaces deprecated `rooms`/`chat_messages` | Go `/analyses/{id}/messages` | Python chat path **not yet migrated here** (Β§12) |
|
| 190 |
|
| 191 |
> β
**Python ORM β dedorch drift β reconciled 2026-07-01.** `AnalysisStateRow` (`analyses`) dropped
|
|
@@ -339,7 +339,7 @@ Python is consumer-only). State **re-verified against the Go source 2026-06-29**
|
|
| 339 |
**Python-owned**; its finalized schema goes to Harry so the dedorch migration creates it post-cutover.
|
| 340 |
- **Connection-string cutover DONE (2026-07-01).** Python's `postgres_connstring` now points at
|
| 341 |
**dedorch** and reads the Go-migrated tables directly. Every ORM model Python reads (`analyses`,
|
| 342 |
-
`
|
| 343 |
**`init_db()` is now skipped by default** (`settings.skip_init_db` defaults **True**): its privileged
|
| 344 |
DDL (`ALTER TABLE rooms β¦`, index creation) fails on Go-owned tables
|
| 345 |
(`InsufficientPrivilegeError: must be owner of table rooms`). Skipping is safe β Go migration `0001`
|
|
@@ -374,9 +374,10 @@ records-based report; floor: β₯1 `analyze_*` success). Wiring Go β Python is
|
|
| 374 |
`cryptography.fernet.InvalidToken` β whose `str()` is **empty**, so it logged as `error=""` and
|
| 375 |
masqueraded as a DB-connection failure (the executor now logs `repr(e)` to expose it). Tell-apart:
|
| 376 |
a valid-but-wrong key β `InvalidToken`; a malformed key β a non-empty `ValueError` at cipher build.
|
| 377 |
-
- **Never-throw seams** are pervasive (tool invoker, query service, executors, state/
|
| 378 |
record persistence, report summary). Failures degrade into soft output rather than raising β good
|
| 379 |
-
for UX, but they can mask real breakage (e.g. a
|
|
|
|
| 380 |
- **Prompts** live in `src/config/prompts/*.md`. `chatbot_system.md` has `guardrails.md` appended so
|
| 381 |
guardrails win on conflict.
|
| 382 |
- **Tests** are gitignored (team decision) β run them locally.
|
|
|
|
| 148 |
- **Unstructured RAG** over PGVector.
|
| 149 |
- **Analytics tools:** 4 registered composite `analyze_*` (descriptive, aggregate, correlation, trend) + 4 data-access tools (check_data, check_knowledge, retrieve_data, retrieve_knowledge). Four further composites (comparison, contribution, profile, segment) exist in code but are **not registered** with the Planner.
|
| 150 |
- **Versioned report generation** from persisted records.
|
| 151 |
+
- **Analysis sessions:** data-first creation gate (β₯1 bound source); each turn reads the analysis-scope catalog so it sees only that analysis's bound sources.
|
| 152 |
- **Langfuse tracing** (PII-masked), **Redis caching**, **pooled DB engines** + speculative prewarm.
|
| 153 |
|
| 154 |
---
|
|
|
|
| 185 |
| `report_inputs` *(was `analysis_records`)* | jsonb `AnalysisRecord`, one per slow-path run; **Python-owned** | slow path | ReportGenerator, report readiness |
|
| 186 |
| `analyses` *(dedorch, plural)* | uuid `id`, `user_id`, `analysis_title`, `objective`, `business_questions` jsonb, `status` (active\|inactive), `data_bind`(+`data_bind_version`), `report_id`, `report_collection` β **defined by Go migrations**; `problem_statement`/`problem_validated`/`owner_id` already **dropped** there (`0003`/`0004`) | Go `/api/v1/analyses`; Python state store | gate (no-op), Help, report |
|
| 187 |
| `reports` *(dedorch)* | uuid, `analysis_id`, `user_id`, `title` + markdown `content` + `version` (UNIQUE per analysis) | Go + Python ReportStore | report API |
|
| 188 |
+
| `data_sources` *(dedorch, Go-owned)* | per-analysis binding table. **Python no longer reads or writes it** β bindings live in Go's `analyses.data_bind`, which Go materializes into the analysis-scope `data_catalog` row; Python scopes off that row. The table exists (Go migration) but Python is fully decoupled β do **not** drop it manually | Go migration | β (unused by Python) |
|
| 189 |
| `analyses_messages` *(dedorch)* | the analysis chat room (`role β user\|ai`); replaces deprecated `rooms`/`chat_messages` | Go `/analyses/{id}/messages` | Python chat path **not yet migrated here** (Β§12) |
|
| 190 |
|
| 191 |
> β
**Python ORM β dedorch drift β reconciled 2026-07-01.** `AnalysisStateRow` (`analyses`) dropped
|
|
|
|
| 339 |
**Python-owned**; its finalized schema goes to Harry so the dedorch migration creates it post-cutover.
|
| 340 |
- **Connection-string cutover DONE (2026-07-01).** Python's `postgres_connstring` now points at
|
| 341 |
**dedorch** and reads the Go-migrated tables directly. Every ORM model Python reads (`analyses`,
|
| 342 |
+
`analyses_messages`, `data_catalog`) has been reconciled to its dedorch shape.
|
| 343 |
**`init_db()` is now skipped by default** (`settings.skip_init_db` defaults **True**): its privileged
|
| 344 |
DDL (`ALTER TABLE rooms β¦`, index creation) fails on Go-owned tables
|
| 345 |
(`InsufficientPrivilegeError: must be owner of table rooms`). Skipping is safe β Go migration `0001`
|
|
|
|
| 374 |
`cryptography.fernet.InvalidToken` β whose `str()` is **empty**, so it logged as `error=""` and
|
| 375 |
masqueraded as a DB-connection failure (the executor now logs `repr(e)` to expose it). Tell-apart:
|
| 376 |
a valid-but-wrong key β `InvalidToken`; a malformed key β a non-empty `ValueError` at cipher build.
|
| 377 |
+
- **Never-throw seams** are pervasive (tool invoker, query service, executors, state/catalog reads,
|
| 378 |
record persistence, report summary). Failures degrade into soft output rather than raising β good
|
| 379 |
+
for UX, but they can mask real breakage (e.g. a missing analysis-scope catalog silently falling
|
| 380 |
+
back to the whole user catalog).
|
| 381 |
- **Prompts** live in `src/config/prompts/*.md`. `chatbot_system.md` has `guardrails.md` appended so
|
| 382 |
guardrails win on conflict.
|
| 383 |
- **Tests** are gitignored (team decision) β run them locally.
|