BC-066B — Catalog Intelligence Boundary & Dependencies¶
Status: HISTORICAL
For the current architecture, see: ./dependances.md, ../runtime/overview.md.
Projet : /mnt/data/cmonchoix-platform
Branche : bc-048-samsung-wearable-enrichment
Verdict¶
BC-066B est fermable.
Cette tranche :
- rend explicite le port canonique du repository catalogue ;
- conserve
PriceAggregationEngineetCatalogRankingEnginecomme dépendances legacy retenues ; - retire l’alias de test devenu inutile ;
- garde la chaîne dormante, sans nouvel entrypoint runtime.
Avant / après¶
| Élément | Avant | Après |
|---|---|---|
repository injecté dans CatalogIntelligenceEngine |
CMonChoix\Domain\Catalog\Repository\CatalogRepositoryInterface |
CMonChoix\Platform\Domain\Catalog\Repository\CatalogRepositoryInterface |
| alias de test local | oui | non |
| comportement métier | implicite et partiellement non testé | caractérisé et inchangé |
| mutation item existant | mutation directe d’un CatalogItem readonly |
reconstruction d’un CatalogItem équivalent puis save() unique |
Repository¶
Interface canonique retenue :
CMonChoix\Platform\Domain\Catalog\Repository\CatalogRepositoryInterface
Implémentation prouvée :
| Implementation | Current interface | Target interface | Storage | Active |
|---|---|---|---|---|
CMonChoix\Platform\Infrastructure\Catalog\InMemoryCatalogRepository |
canonique | canonique | mémoire | oui |
Le FQCN legacy CMonChoix\Domain\Catalog\Repository\CatalogRepositoryInterface n’était pas une vraie interface maintenue : aucun fichier source ne le définissait, et aucun autoload Composer ne le supportait.
PriceAggregationEngine¶
Statut retenu :
- legacy conservé ;
- helper pur ;
- aucune migration canonique en BC-066B.
| Method | Input | Output | Side effects |
|---|---|---|---|
aggregate(array $offers) |
liste d’offres | min/max/count/best |
aucun |
CatalogRankingEngine¶
Statut retenu :
- legacy conservé ;
- aucune migration canonique en BC-066B ;
- comportement figé par test.
| Rule | Input | Output | Complexity |
|---|---|---|---|
| score descendant | liste d’offres | liste triée par score décroissant | O(n log n) |
Note : aucune stabilité de tri supplémentaire n’a été introduite.
CatalogIntelligenceEngine¶
Invariants conservés :
| Invariant | Avant | Après | Identique |
|---|---|---|---|
rebuild(string $productId, array $offers): void |
oui | oui | oui |
findById() avant write |
oui | oui | oui |
return immédiat si item absent |
oui | oui | oui |
| agrégation prix | oui | oui | oui |
| normalisation merchant | oui | oui | oui |
metadata offers / best |
oui | oui | oui |
save() unique |
oui | oui | oui |
| propagation d’exception | oui | oui | oui |
RealtimeCatalogRebuilder¶
Aucun changement d’ordre ni d’entrypoint :
boot()inchangéprocess()inchangé- ordre
ranking -> intelligenceinchangé - événements supportés inchangés
- extraction d’identifiant inchangée
Compatibilité / réflexion¶
| API | FQCN avant | FQCN après | Runtime compat | Reflection compat |
|---|---|---|---|---|
| repository constructor param | legacy inexistant en pratique | canonique | oui | non significatif hors surface interne |
PriceAggregationEngine |
legacy | legacy | oui | oui |
CatalogRankingEngine |
legacy | legacy | oui | oui |
Dette restante¶
PriceAggregationEngineencore en namespace legacyCatalogRankingEngineencore en namespace legacy- chaîne Realtime toujours dormante
ProjectionEngineplaceholderAsyncEventQueueplaceholder
BC-066C pourra traiter la rationalisation de l’orchestration dormante sans rouvrir cette frontière repository.
Note postérieure BC-066C¶
BC-066C a confirmé que cette frontière repository peut rester stable pendant la rationalisation Projection/Realtime :
- aucun changement supplémentaire sur
CatalogIntelligenceEngine; - aucune activation de worker/queue/rebuild ;
- aucune dépendance plugin/runtime ajoutée.
Note postérieure BC-066D¶
BC-066D confirme que cette frontière reste une surface interne non activée :
CatalogIntelligenceEnginegarde son rôle applicatif/testé ;- aucun usage live n’est autorisé ;
- toute activation future doit d’abord résoudre les gaps opérationnels documentés.
Note postérieure BC-066E¶
BC-066E clôture la trajectoire :
- frontière repository canonique certifiée ;
CatalogIntelligenceEngineconfirmé dormant ;- aucun branchage runtime/plugin introduit.