# RIA (Reglement Interieur Achats) — 179 articles verbatim dans le RAG, fiabilite citation **Instance auteur** : hermes-tt **Date** : 2026-08-06 **Tags** : [ria, rag, nyora-notes-tt, fts, achats] **Statut** : valide --- ## Probleme Ingestion du RIA (reglement interieur achats TT, 179 articles) dans NyoraNotes REST (:8787) avec exigence stricte de Nabil : toute question RIA doit retourner l'article ou les articles correspondants, cites VERBATIM sans aucune modification. Audit demande apres l'ingestion initiale pour valider avant mise en confiance operationnelle. Verification manuelle a revele que 12 des 179 fichiers `articles/article-NNN.txt` (et les notes NyoraNotes correspondantes) se terminaient par les premieres lignes du TITRE/Chapitre/Section qui introduit le groupe d'articles SUIVANT, au lieu que ce texte de structure reste attache a la suite. Consequence demontree en conditions reelles : la recherche FTS `pénalité retard` remontait l'article 97 en position 2 (score -7.3) alors que l'article 97 traite en realite des delais de signature de contrat, sans rapport avec les penalites — il ne remontait que parce que son fichier se terminait par "Section 1 - Delais et penalites de retard" (titre de la section qui commence a l'article 98). --- ## Contexte et contraintes - Source : `reglement-interieur-achats-TT.docx`, hash MD5 `a6b534bb06473ce2ab6ac0f13ca4b0ea` (verifie). - Extraction mecanique DOCX->XML vers 179 fichiers `article-NNN.txt` (parse_ria_articles.py) + fichier canonique `RIA_INTEGRAL_179_articles.txt`. - Le fichier canonique integral N'EST PAS affecte (les headers TITRE/Chapitre y sont normaux et attendus, c'est un document continu). - Seuls les fichiers PAR ARTICLE (split) sont concernes, car le parseur attachait le header de section suivant a la fin de l'article precedent plutot qu'au debut du suivant. - Ingestion NyoraNotes : 179 notes "RIA — Article N" + 1 note index = 180 notes, tags `ria`, `hermes-tt`, `article`. --- ## Ce qui NE fonctionne PAS | Tentative | Erreur obtenue | Raison de l'echec | |-----------|----------------|-------------------| | Faire confiance au rapport d'ingestion sans re-verifier le contenu reel des fichiers | Aucune erreur visible dans le rapport — le defaut n'apparait qu'en testant des requetes FTS reelles | Le rapport verifiait "la question renvoie le bon article en position 1" mais pas "aucun autre article n'est pollue par du texte hors-sujet" | | Se fier au seul comptage (179 fichiers, 180 notes, sequence 1-179 complete) | Comptage correct, mais insuffisant | Un comptage exact ne garantit pas la purete du contenu de chaque fichier | --- ## Solution validee 1. Detection : scanner les 6 dernieres lignes non-vides de chaque fichier `article-NNN.txt`, chercher un match sur `^(TITRE|Chapitre|Section\s+\d)` en debut de ligne complete. 2. 12 fichiers concernes : 2, 5, 41, 97, 109, 127, 132, 142, 148, 152, 164, 172. 3. Pour chacun : tronquer le fichier a la derniere ligne substantielle de l'article (avant le header), reecrire le fichier local. 4. Recuperer l'ID de la note NyoraNotes correspondante (`GET /notes?tag=ria&limit=100&page=N`, filtrer par titre "RIA — Article N"). 5. `PUT /notes/{id}` avec le nouveau contenu (`# RIA — Article N` + texte article corrige). 6. Aucune reindexation FTS manuelle necessaire : la recherche reflete le contenu corrige immediatement apres le PUT (verifie sur article 97 / requete "penalite retard"). --- ## Verification ``` curl -s -H "Authorization: Bearer $TOKEN" --get http://localhost:8787/search --data-urlencode "q=penalite retard" # Attendu : article 99 en position 1, article 97 absent du top (ou present uniquement si legitimement pertinent) ``` Confirme le 06/08/2026 : article 97 n'apparait plus dans les 5 premiers resultats pour "penalite retard", le classement restant (99, 129, 30, 40, 105) est desormais coherent avec le contenu reel de chaque article. --- ## Pieges specifiques DSM / NAS - mcp-nas : la commande `docker` n'est PAS disponible directement dans le shell du container mcp-nas (pas de docker.sock monte, pas de binaire docker). Il faut passer par `ssh nas-host` (alias configure vers Best0f@172.17.0.1:22222) puis utiliser le binaire complet `/usr/local/bin/docker`. - L'API NyoraNotes REST pagine avec le parametre `page` (1-indexe), PAS `offset` — passer `offset` est silencieusement ignore et retourne toujours la page 1. - `limit` est plafonne a 100 par l'API (le depasser renvoie une 422 Pydantic, pas une troncature silencieuse). - Le hash affiche dans les noms de fichiers du pipeline OneDrive (ex. `...a6b534bb.md`) est un MD5, pas un SHA256. --- ## References - Skill : `gsd-ao-evaluation/references/ria-articles-cles.md` (procedure de citation verbatim, articles cles, structure du RIA) - Fichier canonique : `/opt/data/workspace/reference/RIA/RIA_INTEGRAL_179_articles.txt` - Memoire hermes-tt : `/opt/data/memories/MEMORY.md` (entree RIA ajoutee 06/08/2026)