Files
portal/tools/objection-format.mjs
T

25 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
/**
* objection-format — дословные сводки возражений для блок-сообщений (П1).
* Чистые форматтеры (презентация, не логика гейта): судья и наставник.
* Fail-safe: мусор/нет возражений → пустая строка.
*/
/** Дословная сводка возражений судьи (форма parseJudgeResponse: objections[{anchor:{ref},severity}]). */
export function formatJudgeObjection(verdict) {
const objs = verdict && Array.isArray(verdict.objections) ? verdict.objections : [];
const lines = objs
.filter((o) => o && o.anchor && o.anchor.ref)
.map((o) => `— [${o.severity || 'light'}] ${o.anchor.ref}`);
return lines.join('\n');
}
/** Дословная сводка замечания наставника (результат onPlanWrite {ok,wired,reason,verdict}). */
export function formatMentorObjection(r) {
if (!r || r.wired !== true || r.ok === true) return '';
const head = typeof r.reason === 'string' && r.reason ? `Замечание наставника: ${r.reason}` : 'Замечание наставника.';
const objs = r.verdict && Array.isArray(r.verdict.objections) ? r.verdict.objections : [];
const lines = objs.filter((o) => o && o.anchor && o.anchor.ref).map((o) => `${o.anchor.ref}`);
return [head, ...lines].join('\n');
}