import { readFileSync } from "node:fs"; import { fillTemplate } from "../lib/editor135-core.ts"; const tpl = readFileSync("../public/template135.html", "utf8"); const DAY_EN: Record = { "星期一": "Mon", "星期二": "Tue", "星期三": "Wed", "星期四": "Thu", "星期五": "Fri", "星期六": "Sat", "星期日": "Sun" }; const mkDay = (day: string, counts: number[]) => { const mealNames = ["早餐", "早点", "午餐", "体弱儿餐", "午点"]; return { day, meals: mealNames.slice(0, counts.length).map((meal, i) => ({ meal, items: Array.from({ length: counts[i] }, (_, k) => ({ zh: day + meal + "菜" + (k + 1), en: DAY_EN[day] + "-M" + (i + 1) + "-D" + (k + 1) })), })) }; }; const strip = (h: string) => h.replace(/<[^>]+>/g, ""); // 场景1: 间隔天 一/三/五 const r1 = fillTemplate(tpl, { days: [mkDay("星期一", [4, 3, 5, 1, 1]), mkDay("星期三", [4, 3, 5, 1, 1]), mkDay("星期五", [4, 3, 5, 1, 1])] }); console.log("场景1(一/三/五) removedDays:", r1.report.removedDays, "mismatch:", r1.report.mismatch.length ? r1.report.mismatch : "无 ✓"); for (const d of ["星期一", "星期二", "星期三", "星期四", "星期五"]) console.log(" " + d + " 残留:", strip(r1.html).split(d).length - 1, "(含合成菜名)"); // 场景2: 全周 + 周末(模板无周末区块) const r2 = fillTemplate(tpl, { days: ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"].map((d) => mkDay(d, [4, 3, 5, 1, 1])) }); console.log("\n场景2(全周+周末) removedDays:", r2.report.removedDays, "mismatch:", r2.report.mismatch.length ? r2.report.mismatch : "无 ✓"); console.log(" warnings:", r2.report.warnings); // 场景3: 只有周末 const r3 = fillTemplate(tpl, { days: [mkDay("星期六", [4, 3, 5, 1, 1]), mkDay("星期日", [4, 3, 5, 1, 1])] }); console.log("\n场景3(仅周末) removedDays:", r3.report.removedDays, "mismatch:", r3.report.mismatch.length ? r3.report.mismatch : "无 ✓"); for (const d of ["星期一", "星期二", "星期三", "星期四", "星期五"]) console.log(" " + d + " 残留:", strip(r3.html).split(d).length - 1); console.log(" 尾部保留:", strip(r3.html).includes("三审三校") || strip(r3.html).includes("温馨提示")); // 场景4: 一/四 (中间连续缺) const r4 = fillTemplate(tpl, { days: [mkDay("星期一", [4, 3, 5, 1, 1]), mkDay("星期四", [4, 3, 5, 1, 1])] }); console.log("\n场景4(一/四) removedDays:", r4.report.removedDays, "mismatch:", r4.report.mismatch.length ? r4.report.mismatch : "无 ✓"); // 场景5: 条数不匹配(少/多) 触发增删路径 const r5 = fillTemplate(tpl, { days: [mkDay("星期一", [2, 1, 7, 1, 3]), mkDay("星期二", [4, 3, 5, 1, 1]), mkDay("星期三", [4, 3, 5, 1, 1]), mkDay("星期四", [4, 3, 5, 1, 1]), mkDay("星期五", [4, 3, 5, 1, 1])] }); console.log("\n场景5(增删路径) mismatch:", r5.report.mismatch.length ? r5.report.mismatch : "无 ✓"); console.log(" filled:", r5.report.filled.filter((f) => f.day === "星期一").map((f) => f.meal + ":" + f.replaced + "+" + f.added + "-" + f.removed).join(", ")); // 场景6: 完整周正常填充(等价真实回归) const r6 = fillTemplate(tpl, { days: ["星期一","星期二","星期三","星期四","星期五"].map((d) => mkDay(d, [4, 3, 5, 1, 1])) }); console.log("\n场景6(完整周) removedDays:", r6.report.removedDays, "mismatch:", r6.report.mismatch.length ? r6.report.mismatch : "无 ✓"); console.log(" verification:", JSON.stringify(r6.report.verification));