fix(M9): corrections d'audit FIXME_M9 — secrets, messages, validation, tests

Cinq corrections de l'audit FIXME_M9 :
- redact_secrets() étendue avec extra_secrets pour masquer les clés brutes ;
  providers stockent SecretStr jusqu'à l'appel SDK.
- _build_prompt() inclut le contenu des messages (tronqué à 500 car.) ;
  prompt système renforcé contre l'injection.
- _validate_output() supprime les emojis et rejette titre/liste/HTML → None.
- Tests litellm utilisent importorskip + LITELLM_LOCAL_MODEL_COST_MAP=true.
- .env.example désactive l'IA par défaut (AI_ENABLED=false).
- Documentation §9.2-§9.5 alignée avec l'implémentation (SDK openai, SecretStr,
  factory réelle, validation sortie, politique hors réseau).

Co-authored-by: opencode/coder <coder@agents.invalid>
Co-authored-by: opencode/test-engineer <test-engineer@agents.invalid>
Co-authored-by: opencode/tech-writer <tech-writer@agents.invalid>
This commit is contained in:
2026-09-07 19:01:25 +02:00
parent 4b0e2858a6
commit 19cbf8f13f
10 changed files with 687 additions and 250 deletions

View File

@@ -41,10 +41,12 @@ XMPP_USE_TLS=true
XMPP_TIMEOUT=30
# --- IA (optionnelle) ---
AI_ENABLED=true
# L'IA est désactivée par défaut ; l'activer volontairement (AI_ENABLED=true)
# et renseigner une clé API valide avant tout envoi.
AI_ENABLED=false
AI_PROVIDER=openai
AI_BASE_URL=https://api.openai.com/v1
AI_API_KEY=your_ai_api_key
# AI_API_KEY=
# AI_MODEL=gpt-4o-mini # exemple recommandé, non activé par défaut
# --- Blog ---