Kirana_AI / docs /plan_half_baked_features.md
Zappandy's picture
Deploy to HF Space
dae60e5
|
Raw
History Blame Contribute Delete
4.44 kB
# Audit: Remaining Feature Gaps For Hugging Face Spaces
Audit date: 2026-06-14. This document is now a status note for the current
FastAPI/static app running toward a Hugging Face Spaces deployment.
## Current HF Spaces Runtime Assumptions
- Public demo runtime is the Docker Space defined by `README.md`.
- The app should default to `RECEIPT_BACKEND=hf_inference` for receipt text
parsing with `HF_RECEIPT_MODEL_REPO` set in Space secrets/settings.
- Receipt image OCR and speech transcription are optional Modal-hosted services
called through thin HTTP clients:
- `MODAL_RECEIPT_ENDPOINT`
- `MODAL_SPEECH_ENDPOINT` or `SPEECH_ASR_ENDPOINT`
- ReAct is an app-side tool router. It is not a model; it calls tools, and
model-backed tools may call Modal, HF Inference, or local llama.cpp.
- Inventory writes remain owner-approved. Model output can only create editable
receipt rows or pending stock actions.
- SQLite state on HF Spaces is ephemeral unless persistent storage is enabled
and `DB_PATH` points at `/data/...`.
## Completed Since Original Audit
| Feature | Current status |
|---------|----------------|
| ReAct photo path | `POST /api/photo` uses `ReceiptReActAgent` first, with direct fallback. |
| ReAct voice command path | `_h_voice_command` routes through `run_command_parse`, which uses ReAct first. |
| Voice owner approval | Voice parse creates a pending action; `_h_voice_apply` writes only after explicit approval. |
| Dashboard Add to order | `_h_add_to_order` inserts a pending order row. |
| Dashboard Offer to route | `_h_offer_to_route` records a pending liquidation/order intent. |
| Dashboard insights | `run_analysis` now builds deterministic inventory/expiry prose from DB state. |
| Float quantity truncation | Immediate rounding fix added in `kirana_db.py` and `dukaan_saathi/storage.py`. |
| Receipt product matching | Parsed receipt rows are post-matched against existing inventory before display. |
| Orders Mark received | Approved orders can be marked received and stock is updated through the normal owner action. |
| Analytics date range | Analytics supports `7d`, `30d`, and `90d` seller windows. |
| Modal cold-start UX | UI copy explains cold starts; `/api/warm` fire-and-forgets Modal warm pings. |
| Safety tests | `smoke_tests/test_custom_app_safety.py` covers key approval gates and order transitions. |
## Still Worth Doing
### 1. Canonical inventory write boundary
The documented ideal is:
```text
owner approval -> dukaan_saathi/services/inventory.py -> storage ledger
```
The current custom FastAPI path still writes through `kirana_db.py`, which is a
compatibility adapter over the Dukaan storage layer. It preserves the approval
gate, but future code should either migrate these writes into
`dukaan_saathi/services/inventory.py` or keep the adapter boundary explicitly
documented.
### 2. Fractional stock follow-through
`stock_ledger.delta` now migrates to `REAL`, so fractional stock is supported at
the storage layer. Keep checking UI formatting, reorder math, and tests whenever
quantity semantics change.
### 3. HF Spaces persistence decision
For a hackathon demo, ephemeral SQLite may be acceptable. For a realistic public
Space, decide whether to:
- keep session-local state and reset on rebuild, or
- enable HF persistent storage and set `DB_PATH=/data/dukaan.db`.
Document the chosen behavior in the Space README/settings.
### 4. Modal endpoint health and warmup
`/api/warm` currently sends non-blocking `HEAD` requests. If Modal services
expose dedicated health routes, use those instead. Keep page load non-blocking
and avoid surfacing warmup failures as user-facing errors.
### 5. Model endpoint test coverage
Add mocked tests for:
- Modal OCR success and malformed responses.
- Modal speech success and failures.
- HF Inference receipt parser success and malformed JSON fallback.
- Modal receipt LLM success and malformed JSON fallback.
### 6. Voice NLU quality
The current parser is still deterministic/keyword-oriented. For stronger
Telugu/code-mixed commands on Spaces, add an optional HF Inference voice-NLU
path with deterministic fallback and the same owner approval gate.
## Lower Priority Ideas
- LLM-generated dashboard prose after deterministic insights are stable.
- Expanded receipt fine-tuning data and benchmark reports.
- Liquidation-agent routing through WhatsApp/SMS after the order-intent stub is
enough for the demo.