Files
dofus-manager/docs/prd/epic-6-dofusdb-integration.md
2026-01-19 08:52:38 +01:00

95 lines
3.5 KiB
Markdown

# Epic 6: DofusDB Integration
**Goal:** Intégrer l'API DofusDB pour importer automatiquement les données de référence du jeu (quêtes, donjons, succès, recherchés). L'utilisateur n'a plus besoin de saisir manuellement ces informations.
## Story 6.1: DofusDB API Client
**As a** developer,
**I want** a typed HTTP client for the DofusDB API,
**so that** I can fetch game reference data reliably.
**Acceptance Criteria:**
1. Module `lib/dofusdb.ts` avec client HTTP typé
2. Types TypeScript pour les réponses API (quêtes, donjons, succès, etc.)
3. Gestion des erreurs API (timeout, rate limit, 404)
4. Configuration via variables d'environnement (API URL, éventuels tokens)
5. Retry automatique en cas d'échec temporaire (max 3 retries)
6. Logging des appels API pour debug
7. Tests unitaires avec mocks des réponses API
## Story 6.2: Dungeon Data Import
**As a** user,
**I want** to import the list of dungeons from DofusDB,
**so that** I don't have to add them manually.
**Acceptance Criteria:**
1. Endpoint ou script pour importer les donjons depuis DofusDB
2. Mapping des données DofusDB vers le model `ProgressionType` (category: DUNGEON)
3. Import des métadonnées : nom, niveau requis, zone/région
4. Gestion des doublons : mise à jour si existant, création sinon
5. Rapport d'import : X créés, Y mis à jour, Z erreurs
6. Bouton "Importer donjons" dans `/settings/data`
7. Indicateur de dernière synchronisation
## Story 6.3: Quest Data Import
**As a** user,
**I want** to import Dofus quest chains from DofusDB,
**so that** I can track my progress on main quests.
**Acceptance Criteria:**
1. Import des quêtes Dofus (les 10 quêtes principales identifiées)
2. Mapping vers `ProgressionType` (category: DOFUS_QUEST)
3. Import des métadonnées : nom, Dofus associé
4. Option de filtrer quelles quêtes importer (sélection manuelle ou toutes)
5. Gestion des doublons
6. Bouton "Importer quêtes" dans `/settings/data`
7. Rapport d'import
## Story 6.4: Wanted Posters Import
**As a** user,
**I want** to import wanted poster data from DofusDB,
**so that** I can track bounties by region.
**Acceptance Criteria:**
1. Import des recherchés par région depuis DofusDB
2. Mapping vers `ProgressionType` (category: WANTED)
3. Métadonnées : nom, région associée
4. Regroupement par région (Astrub, Amakna, Frigost I/II/III, etc.)
5. Gestion des doublons
6. Bouton "Importer recherchés" dans `/settings/data`
7. Rapport d'import
## Story 6.5: Sync Settings & Automation
**As a** user,
**I want** to configure automatic synchronization with DofusDB,
**so that** my reference data stays up to date.
**Acceptance Criteria:**
1. Page `/settings/data` avec configuration de sync
2. Option sync manuelle (boutons par type de données)
3. Option sync automatique périodique (daily, weekly, disabled)
4. Cron job ou scheduled task pour sync auto
5. Notification (toast ou log) après sync automatique
6. Historique des syncs (date, type, résultat)
7. Option de réinitialiser toutes les données de référence
## Story 6.6: Data Conflict Resolution
**As a** developer,
**I want** a strategy for handling conflicts between local and API data,
**so that** user modifications aren't lost during sync.
**Acceptance Criteria:**
1. Les `ProgressionType` importés ont un flag `source: API | MANUAL`
2. Sync API ne modifie que les entrées `source: API`
3. Entrées `source: MANUAL` préservées lors du sync
4. Option de forcer l'écrasement (avec confirmation)
5. Détection des entrées supprimées de l'API (soft delete ou warning)
6. Log des conflits détectés pour review
---