Files
LoreMind/web/src/app/services/game-system.model.ts
IETM_FIXE\ietm6 439f43875b
All checks were successful
Build & Push Images / build (brain) (push) Successful in 1m28s
Build & Push Images / build (core) (push) Successful in 1m40s
Build & Push Images / build-switcher (push) Successful in 19s
Build & Push Images / build (web) (push) Successful in 1m46s
Ajout de 2 fonctionnalitées principales : import PDF que ce soit pour les règles ou les campagnes directement.
Fonctionnalité de comparaison PDF / campagne pour faire un mix et demander des conseils à l'IA
2026-06-04 13:55:27 +02:00

53 lines
1.7 KiB
TypeScript

import { TemplateField } from './template.model';
/**
* Interface TypeScript pour GameSystemDTO (jumeau du DTO Java).
*
* rulesMarkdown : markdown monolithique, sections decoupees par titres H2.
* characterTemplate / npcTemplate : champs templates pilotant le rendu des
* fiches PJ / PNJ d'une campagne adossee a ce systeme (cf. refonte 2026-04-30).
*/
export interface GameSystem {
id?: string;
name: string;
description?: string | null;
rulesMarkdown?: string | null;
characterTemplate?: TemplateField[];
npcTemplate?: TemplateField[];
author?: string | null;
isPublic?: boolean;
}
/**
* Réponse de l'import d'un PDF de règles : proposition de sections à réviser.
* `sections` = {titre → contenu markdown}. `ocrPageCount` > 0 ⇒ le PDF était
* (au moins partiellement) un scan passé à l'OCR.
*/
export interface RulesImportResponse {
sections: Record<string, string>;
pageCount: number;
ocrPageCount: number;
}
/**
* Évènements du flux SSE d'import streamé.
* - progress : avancement (total=0 ⇒ phase d'extraction en cours).
* - done : résultat final (sections proposées).
* - error : message d'erreur côté serveur.
*/
export type RulesImportStreamEvent =
| { type: 'progress'; current: number; total: number; pageCount: number; ocrPageCount: number; newSectionTitles: string[] }
| { type: 'done'; sections: Record<string, string>; pageCount: number; ocrPageCount: number }
| { type: 'error'; message: string };
/** Payload de creation/mise a jour (sans id). */
export interface GameSystemCreate {
name: string;
description?: string | null;
rulesMarkdown?: string | null;
characterTemplate?: TemplateField[];
npcTemplate?: TemplateField[];
author?: string | null;
isPublic: boolean;
}