Revue : etat des leviers joint a chaque constat, transmis au conseiller et historise
This commit is contained in:
@@ -28,7 +28,7 @@ function run(code, inputJson, nodeOutputs = {}, D = DateFixe) {
|
||||
|
||||
// Constats reels du 07-08/10 (sortie de tools/revue-jour.mjs sur la base).
|
||||
const CONSTATS = [
|
||||
{ code: 'batterie_sous_objectif_midi', gravite: 'a_examiner', texte: 'Fin des heures creuses de midi (14:24) : batterie a 35 % pour 43,6 % vises, il manquait 2,6 kWh.', contexte: 'Maintien du courant' },
|
||||
{ code: 'batterie_sous_objectif_midi', gravite: 'a_examiner', texte: 'Fin des heures creuses de midi (14:24) : batterie a 35 % pour 43,6 % vises, il manquait 2,6 kWh.', contexte: 'Maintien du courant', etat: "a 13:24 : SOC 33 %, consigne reseau 5198 W, courant de charge max fixe par l'ACM 30 A, mode de nuit sans_edf" },
|
||||
{ code: 'edf_heures_pleines', gravite: 'a_examiner', texte: 'EDF ferme en heures pleines de 18:06 a 01:24 (7 h 18), 8,3 kWh achetes, batterie a 21 % a la fermeture ; ferme par Victron - Grid ON si SoC < 22%.', contexte: 'Conditions de démarrage non réunies' },
|
||||
{ code: 'voiture_bloquee_session_hc', gravite: 'a_examiner', texte: "Voiture branchee mais bloquee de 01:24 a 05:14 (3 h 50) alors qu'EDF etait ferme en heures creuses (etat night_no_grid_hc_lock).", contexte: 'Nuit sans autorisation HC réseau | Nuit EVCS: target=38.8% (BILAN)' },
|
||||
{ code: 'charge_max_midi', gravite: 'info', texte: 'info', contexte: '' },
|
||||
@@ -52,6 +52,8 @@ check('PROMPT: rien a examiner -> inactif (pas d appel au modele)', run(BUILD_PR
|
||||
const D11 = class extends Date { constructor(...a) { super(...(a.length ? a : [Date.parse('2026-10-08T11:00:00+02:00')])); } };
|
||||
check('PROMPT: pas de relance apres 10 h', run(BUILD_PROMPT, snap(), {}, D11)[0].json.enabled === false);
|
||||
|
||||
check('PROMPT: l etat des leviers est transmis', /consigne reseau 5198 W/.test(p.messages[1].content) && /ACM 30 A/.test(p.messages[1].content));
|
||||
|
||||
// ---------- VALIDATE_PARSE ----------
|
||||
const ctxNode = { BUILD_PROMPT: p };
|
||||
const rep = (obj) => ({ model: 'qwen3-coder', choices: [{ message: { content: typeof obj === 'string' ? obj : JSON.stringify(obj) } }] });
|
||||
@@ -68,6 +70,7 @@ const o2 = v({ pistes: [{ code: 'edf_heures_pleines', piste: 'Il aurait fallu 60
|
||||
check('VALIDATE: ANTI-INVENTION — chiffre absent du constat (60) -> piste ecartee', o2.pistes.length === 0 && o2.rejetees === 1, JSON.stringify(o2));
|
||||
const o3 = v({ pistes: [{ code: 'edf_heures_pleines', piste: 'Fermeture a 21 %, 8,3 kWh : revoir la recharge de midi.' }] });
|
||||
check('VALIDATE: chiffres du constat (21, 8,3) acceptes', o3.pistes.length === 1, JSON.stringify(o3));
|
||||
check('VALIDATE: chiffres de l etat acceptes (30 A, 5198 W)', v({ pistes: [{ code: 'batterie_sous_objectif_midi', piste: 'ACM a 30 A et consigne tenue a 5198 W.' }] }).pistes.length === 1);
|
||||
check('VALIDATE: code inconnu -> ecarte', v({ pistes: [{ code: 'invente', piste: 'x' }] }).rejetees === 1);
|
||||
check('VALIDATE: un constat info n est pas relu', v({ pistes: [{ code: 'charge_max_midi', piste: 'x' }] }).pistes.length === 0);
|
||||
check('VALIDATE: doublon de code -> un seul garde', v({ pistes: [bon.pistes[0], bon.pistes[0]] }).pistes.length === 1);
|
||||
|
||||
@@ -78,5 +78,12 @@ const sessionMidi = (d, requis) => {
|
||||
const r = constatsRevue(d); const c = r.constats.find((x) => x.code === 'charge_max_midi');
|
||||
ok('midi-charge-max-info', !!c && c.gravite === 'info' && /31 % -> 35 % \(\+1,2 kWh\)/.test(c.texte) && !codes(r).includes('sous_objectif'), JSON.stringify(r.constats)); }
|
||||
|
||||
{ const d = base(); sessionMidi(d, 43.6);
|
||||
d.acmA = [{ ts: T('07T12:00:00'), v: 30 }]; d.consigneW = [{ ts: T('07T12:30:00'), v: 5198 }];
|
||||
d.modeNuit = [{ ts: T('07T12:00:00'), v: 'sans_edf' }];
|
||||
const c = constatsRevue(d).constats.find((x) => x.code === 'batterie_sous_objectif_midi');
|
||||
ok('etat-joint-au-constat', !!c && /a 13:24/.test(c.etat) && /ACM 30 A/.test(c.etat) && /consigne reseau 5198 W/.test(c.etat)
|
||||
&& /mode de nuit sans_edf/.test(c.etat) && /session HC engagee oui/.test(c.etat) && /budget voiture sans EDF inconnu/.test(c.etat), c && c.etat); }
|
||||
|
||||
console.log(echecs ? `\n${echecs} ECHEC(S)` : '\nREVUE OK');
|
||||
process.exit(echecs ? 1 : 0);
|
||||
|
||||
Reference in New Issue
Block a user