# Proposition d'architecture des regles business CTRM Statut: `proposal` Date: `2026-05-11` Scope: documentation metier `purchase_trade` / CTRM ## Objectif Cette note garde la proposition de structure documentaire pour les regles business trading. L'objectif est de pouvoir s'appuyer sur une source de verite exhaustive sans charger trop de contexte quand une demande concerne seulement un theme precis. ## Etat des lieux - `modules/AGENTS.md` porte les regles courtes communes aux modules. - `modules/purchase_trade/AGENTS.md` porte les invariants critiques du module trading et les fichiers pivots. - `modules/purchase_trade/docs/business-rules.md` est la base metier la plus riche, mais elle melange regles canoniques, notes de session et quelques doublons de numerotation. - `notes/business_rules.md` sert de journal transverse de sessions. - `notes/accounting/` documente plutot le standard comptable Tryton, les gaps de reporting et les extensions comptables `purchase_trade`. - Les fichiers specialises comme `fees.md`, `padding-invoice-accounting.md`, `template-rules.md` et `template-properties.md` sont de bons exemples de documentation ciblee. ## Principe recommande Garder `purchase_trade` comme source de verite canonique pour le metier CTRM, mais decouper les regles par theme. `AGENTS.md` doit rester court et servir de routeur: - charger seulement les invariants toujours utiles; - indiquer quel fichier thematique lire selon la demande; - eviter d'embarquer toute la documentation business a chaque intervention. Les notes de session doivent rester historiques. Une decision devient canonique seulement quand elle est promue dans un fichier thematique. ## Structure cible proposee ```text modules/purchase_trade/docs/business/ README.md INDEX.md glossary.md invariants.md sessions.md contracts.md lots-and-quantities.md matching.md shipments-execution.md pricing.md fees.md valuation-pnl-mtm.md invoicing.md accounting-bridge.md payments-banking.md reports-templates.md risk-credit-forex.md lots-management.md ``` ## Role des fichiers - `README.md`: explique la convention documentaire et le statut des fichiers. - `INDEX.md`: routeur par theme, avec les fichiers a lire selon le sujet. - `glossary.md`: vocabulaire stable du CTRM Tradon. - `invariants.md`: principes structurants toujours vrais. - `sessions.md`: journal historique non canonique. - fichiers thematiques: source canonique exhaustive pour chaque domaine. ## Grands themes metier - `contracts.md`: achats, ventes, lignes, dates, lieux, banques, counterparties, quantite contractuelle, statut finished. - `lots-and-quantities.md`: lots virtuels/physiques, `lot.qt`, historique, weighing, split/merge, suppression de lot physique, solde ouvert. - `matching.md`: matching purchase/sale, open matching via `lot.qt`, wizard `Create contracts`, back-to-back, multi-lots. - `shipments-execution.md`: shipments, dropship/inbound, controller, SLA, locations, surveyor, weight reports, BL. - `pricing.md`: `priced`, `basis`, components, manual pricing, summary, linked currency, premium, settlement price. - `fees.md`: fees ligne/shipment, lots effectifs, `% rate`, `ppack`, maritime freight, insurance, declencheurs PnL. - `valuation-pnl-mtm.md`: valuation achat/vente, sale-first, references, MTM strategies, derivatives, exclusions fees. - `invoicing.md`: provisional/final, facture achat/vente, padding, quantites facturees, liens lot/facture, templates invoice. - `accounting-bridge.md`: effets sur `account_invoice`, `account.move`, taxes, devises, additional moves, validate/post. - `payments-banking.md`: payment terms, echeances, comptes bancaires party/company, payment order. - `reports-templates.md`: Relatorio, proprietes `report_*`, documents trade, regles XML, cache report. - `risk-credit-forex.md`: credit risk, forex, FX revaluation, exposition. - `lots-management.md`: rapports operationnels, filtres matching/side/shipping, dimension, strategy. ## Format conseille pour une regle ```md ### BR-PT-VAL-007 - Le MTM ne s'applique pas aux fees Theme: valuation-pnl-mtm Status: active Scope: purchase_trade Code: valuation.py, fee.py Depends on: BR-PT-FEE-002 Summary: Les lignes de fee ne portent jamais mtm, mtm_price ou strategy. Rule: - MTM autorise seulement pour `pur. priced`, `sale priced`, `derivative`. - Fees: `pur. fee`, `sale fee`, `shipment fee`, `line fee` restent hors MTM. Tests: - valuation fee sans mtm - valuation priced avec mtm ``` Les identifiants devraient encoder le theme (`LOT`, `MAT`, `PRI`, `FEE`, `VAL`, `INV`, `ACC`, etc.) plutot qu'une numerotation globale unique. Cela evite les collisions quand les regles sont ajoutees au fil des sessions. ## Routeur de contexte a ajouter plus tard dans `AGENTS.md` ```md Si la demande concerne: - lots, quantites, matching: lire `docs/business/lots-and-quantities.md` et `docs/business/matching.md` - pricing, premium, basis: lire `docs/business/pricing.md` - fees, freight, insurance: lire `docs/business/fees.md` - valuation, PnL, MTM: lire `docs/business/valuation-pnl-mtm.md` - facture, padding, payment order: lire `docs/business/invoicing.md` et `docs/business/accounting-bridge.md` - templates `.fodt`: lire `docs/business/reports-templates.md` et `docs/template-rules.md` ``` ## Migration proposee 1. Creer `docs/business/INDEX.md`, `invariants.md` et `glossary.md`. 2. Decouper `docs/business-rules.md` par theme, sans changer le fond. 3. Deplacer les notes de session dans `sessions.md`. 4. Promouvoir uniquement les decisions durables dans les fichiers thematiques. 5. Reduire `modules/purchase_trade/AGENTS.md` a un memo court + routeur. 6. Garder `notes/accounting/` comme documentation comptable Tryton et comme vue specialisee des extensions comptables `purchase_trade`. ## Risque actuel a traiter lors de la migration Le risque principal n'est pas le manque de regles, mais leur dilution entre plusieurs fichiers. Certaines decisions existent a la fois dans `AGENTS.md`, `notes/business_rules.md`, `business-rules.md`, `fees.md` et les notes accounting. La migration devra designer une source canonique par theme et laisser les autres fichiers jouer leur role d'index, de journal ou de vue specialisee.