Moteur analytique V1 pour suivre le marche cartes Pokemon, calculer des features simples et produire un scoring interpretable.
- base SQLite locale
- import PKM Portal
- ingestion marche Pokemon TCG API
- scoring journalier lisible
Hors scope ici: UI, ML, nouvelles sources externes complexes, V2/V3.
- schema cible aligne avec
db/schema.sql - migrations versionnees dans
db/migrations/ - pipeline V1 relancable localement: migrate -> import Portal -> snapshot marche -> scoring
- repricing protege: pas de
portal_refinterne fiable =>score_reprice=0,reprice_direction=NONE
- Node.js 22+ (utilisation de
node:sqlite) - npm
- Copier
.env.examplevers.env - Ajuster au minimum
PKM_DB_PATHet les chemins de fichiers locaux - Ajouter
PKM_POKEMONTCG_API_KEYsi vous utilisezmarket:snapshot
npm run db:migrateVerifier le statut des migrations:
npm run db:migrate:statusSource de reference V1 pour alimenter targets + portal_stock_snapshot:
npm run portal:import:v1 -- --file=data/export/portal-stock.json --snapshot-at=YYYY-MM-DDnpm run market:snapshot -- --market-date=YYYY-MM-DD --scope=allOptions utiles:
--scope=hot--target-source=portal_stock--usd-eur-rate=<number>--db=<path>
npm run scores:daily -- --score-date=YYYY-MM-DD --scope=allDeux flux coexistent volontairement:
portal:import:v1(import-stock.js): flux operationnel V1 du moteur (tablestargetsetportal_stock_snapshot)portal:import(import-snapshot.js): flux detaille et traceable (tablesportal_snapshot_*,portal_*_items, etc.)
Decision V1 actuelle:
- pour faire tourner le pipeline moteur jusqu'au scoring, utiliser
portal:import:v1 - utiliser
portal:importpour l'audit detaille et la qualite d'import Portal
db:migratedb:migrate:statusportal:import:v1portal:importmarket:snapshotmarket:import(import local JSON, utile pour tests offline)scores:daily
docs/schema-v1.mddocs/sources-market.mddocs/scoring-v1.mddocs/v1-runbook.mddocs/v1-consolidation.md