refactor: types frontend alignés backend — zéro as any, monstres triés par level
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s

types.ts: rewrite complet — Character, Monster, CombatResult, CombatLog
alignés sur les champs réels du backend. Plus de mapping approximatif.

CombatPage: réécriture propre — monstres triés par level (appropriés en
haut, trop forts en bas avec opacity + warning), historique avec vrais
noms de monstres et valeurs XP/or, level up affiché dans le résultat.

Cleanup: 0 occurrence de "as any" dans tout le frontend.
This commit is contained in:
2026-03-24 17:24:59 +01:00
parent e3c870bb9f
commit 014ffdd789
5 changed files with 103 additions and 58 deletions

View File

@@ -46,8 +46,8 @@ export function HudBar() {
if (!char) return null;
const endurance = (char as any).enduranceCurrent ?? (char as any).endurance ?? 0;
const xpNext = (char as any).xpToNextLevel ?? Math.round(100 * Math.pow(char.level, 1.5));
const endurance = char.enduranceCurrent;
const xpNext = char.xpToNextLevel;
const questCount = activeQuests?.filter((pq: any) => pq.status === 'active').length ?? 0;
const questReady = activeQuests?.filter((pq: any) => pq.status === 'completed').length ?? 0;
@@ -88,11 +88,11 @@ export function HudBar() {
<span style={{ color: endurance < 5 ? '#e84040' : '#6b7a99' }}>
{endurance}/{char.enduranceMax}
</span>
{(char as any).lastEnduranceTs && (
{char.lastEnduranceTs && (
<RegenTimer
endurance={endurance}
enduranceMax={char.enduranceMax}
lastEnduranceTs={(char as any).lastEnduranceTs}
lastEnduranceTs={char.lastEnduranceTs}
/>
)}
</Link>