Décidé : une tablette héberge plusieurs profils patients. La localisation du .cvps ne
suffit pas → mécanisme sidecar cosyvoice/<id>.owner (profileId, absent=généraliste)
poussé par Kazeia-central ; app lit le sidecar, expose owner_profile_id à /voices,
filtre le picker, repli runtime sur DEFAULT_VOICE_ID si profil non-propriétaire.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Recadrage suite échange : pas un blocage fonctionnel ; c'est l'inventaire voulu
(distinguer voix à convertir vs prêtes, garder les prêtes visibles après suppression WAV).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Spec livrée au dev kazeia-android (stack figée §11) :
- BLOQUANT : /voices doit inclure cosyvoice/*.cvps (cvps_exists, state=ready, ids∪cvps)
— sinon une voix dont le WAV est supprimé (workflow voulu) DISPARAÎT de l'inventaire.
- voices_reload (rescan + ACTION_RELOAD_VOICES) après push direct.
- conditionnel : exclusivité on-device si tablettes multi-patients (sinon la règle de
déploiement côté central suffit en mono-patient/tablette).
Fondé sur le code réel (voicesCursor blind aux .cvps, résolution par nom de fichier,
pas de notion de propriété).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>