Rag.ingest : embed D'ABORD, n'écrit la base qu'ensuite, via la nouvelle RagDb.replaceSource (delete+insert dans UNE transaction). Un échec transitoire d'embedding ne détruit plus les chunks existants (auparavant deleteSource était appelé avant la boucle d'embed → corpus tronqué/vidé en silence, non rattrapé par reingestMissing qui ne reprend que les docs à zéro chunk). KazeiaService.buildRag/teardownRag : synchronized(ragLock) + buildRag idempotent (retourne l'instance existante si déjà active). onCreate et un toggle config RAG peuvent se chevaucher (deux coroutines serviceScope) → sans verrou, deux EngineEmbedder natifs étaient créés et le perdant fuyait (jamais close()). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| app | ||
| app-admin | ||
| gradle/wrapper | ||
| scripts | ||
| COMPILE_WHISPER_NPU.md | ||
| RAPPORT_TTS_NPU.md | ||
| RAPPORT_TTS_QWEN3_TESTS.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle.kts | ||