Spaces:
Runtime error
Runtime error
Intentional Deviations from instructions v2.md
This deployment closes the v2 spec gap while preserving the following locked decisions.
Onboarding
- Spec:
POST /api/upload/templatefor tenant master upload + schema discovery. - This deployment: Operator PDF + Word bundle ingested at startup (
backend/startup.py) plus optional gated/admin/templateoverride. No tenant template upload route.
LLM provider
- Spec: Anthropic Claude (
anthropic_api_key,claude-sonnet-4-20250514). - This deployment: OpenAI via
backend/llm/openai_client.py(openai_api_key,gpt-4o-minidefaults).
Embeddings
- Spec: OpenAI
text-embedding-3-smallonly. - This deployment: Configurable
embedding_providerwith localall-MiniLM-L6-v2default.
Surveyor notes (Security #1)
- Spec: Scrub
raw_notesbefore any LLM call; middleware may return 400 on PII in requests. - This deployment: Notes are parsed verbatim. Request middleware logs EMAIL/POSTCODE but does not block. PII scrubbing applies to REFERENCE RAG ingest and generated DOCX output.
Generation RAG
- Spec: Allows REFERENCE tier as style fallback during mapping.
- This deployment: Mapping is sourced from each tenant's own past reports
(REFERENCE tier) at every interference level via
search_for_reference_mapping(). The shared MASTER boilerplate is disabled by default (master_template_auto_ingest=false);search_for_generation()(MASTER-only) remains for explicit opt-in but is not in the default path. Per-tenant isolation: a tenant only ever retrieves its own scrubbed reports.
Legacy app/
The original app/ package is untouched. All v2 work lives under backend/.
Additional extensions (beyond spec)
| Feature | Route / setting |
|---|---|
| JWT auth | /auth/register, /auth/login |
| Health | GET /health with reference_ready + FAISS counts |
| Admin reingest | POST /admin/template/reingest |