alf
|
84793cdd76
|
feat(medical): feature RAG thérapeutique — authoring corpus + retrieval (RPC)
Débloqué par rag_dump/rag_upsert/rag_delete/rag_query (RPC vc19).
- provider : + rag_delete (content delete /rag/{source}).
- service : status, list_docs, get_doc (rag_dump, texte riche), upsert_doc (rag_upsert +
audit sans le contenu), delete_doc, query (test retrieval).
- router /api/rag/{serial}[/status|/doc/{source}|/query] ; enregistré dans _FEATURES.
- UI : section RAG (statut index, corpus, éditeur de fiche multiligne, test retrieval).
- tests +3. 54/54.
- validé LIVE : PUT fiche riche → rag_dump la relit intacte (':' + saut de ligne) → DELETE.
(retrieval renvoie vide car l'index device n'est pas prêt sur tablette fraîche —
mécanisme OK, données à venir.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-01 19:33:31 +02:00 |
alf
|
8d90c49e54
|
feat(provider): client RPC base64-JSON (débloqué — app patiente vc19 livrée)
Le blocage est levé : PROVIDER_RPC_SPEC implémenté+validé côté app (vc19, schema 2).
- ProviderClient.rpc() : content_call base64 → décode result_b64 (JSON) | {path,count} ;
RpcError(code) sur ok=false (http_status 404 not_found sinon 502, lu par Ctx.guard).
- Méthodes typées : capabilities/supports, cfg_dump/apply, presets_dump/apply,
profile_dump/upsert, rag_dump/upsert, rag_sync, conversations_export, export_purge,
voices_reload.
- Validé LIVE sur vc19 : capabilities (16 méthodes), cfg_dump (prompt 718c avec ':'
intact — ce qui casse en content query).
Débloque config/presets, push profils (fiche+langue), authoring RAG, export conversations.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-01 18:01:24 +02:00 |
alf
|
2731b37b20
|
refactor: architecture modulaire core/features + routers par domaine (phase 1)
Refonte évolutive (pas de page blanche) : on garde le code validé hardware, on impose
la structure.
- core/ : adb, provider, store (socle validé) + context.py (Ctx injecté + guard
centralisé exceptions→HTTP) + operator_router (santé/unlock/audit).
- features/ : voices/ (ex-voice/, sous-système complet) + fleet/ (service + router) ;
chaque feature expose make_router(ctx). Ajouter un domaine = un dossier + l'enregistrer.
- app.py slim : compose les routers (_FEATURES). Fini le monolithe api/app.py.
- imports migrés, __main__ et tests adaptés. VoiceWorkerError.http_status=503 (découplage).
- 42/42 ; validé live (santé, devices, voices/catalog).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 16:57:26 +02:00 |