/** * UI: only unit.isCurrent confirmable; history readonly + tag */ import fs from "fs"; // --- Shell --- { const path = "src/components/MailInstructionUnitShell.tsx"; let src = fs.readFileSync(path, "utf8"); const oldExtra = ` extra={ unit.keywords.length ? ( {unit.keywords.slice(0, 6).map((k) => ( {k} ))} ) : null }`; const newExtra = ` extra={ {unit.isCurrent ? "\u53ef\u786e\u8ba4" : "\u5386\u53f2\u53ea\u8bfb"} {unit.keywords.slice(0, 5).map((k) => ( {k} ))} }`; if (!src.includes(oldExtra)) throw new Error("shell extra block missing"); src = src.replace(oldExtra, newExtra); fs.writeFileSync(path, src); console.log("shell ok"); } // --- MailBusinessSummary confirm gates --- { const path = "src/components/MailBusinessSummary.tsx"; let src = fs.readFileSync(path, "utf8"); // transfer: only current can confirm / edit WO fallback src = src.replace( ` {blocked ? ( void submitWorkOrder()} > \u8f6c\u4ed3\u4e0d\u53ef\u7528\uff0c\u63d0\u4ea4\u5de5\u5355 ) : ( ); }`, ` if (canConfirmOps && unit.isCurrent) { actions = blocked ? ( ) : ( ); }`, ); // work_order mode src = src.replace( ` setWorkOrderValue((v) => ({ ...v, ...p }))} /> ); if (canConfirmOps && mail.mail_type === "WORK_ORDER") {`, ` setWorkOrderValue((v) => ({ ...v, ...p }))} /> ); if (canConfirmOps && unit.isCurrent) {`, ); // do_upload src = src.replace( ` setDoValue((v) => ({ ...v, ...p }))} /> ); if ( canConfirmOps && (mail.mail_type === "DO_UPLOAD" || unit.isCurrent) ) {`, ` setDoValue((v) => ({ ...v, ...p }))} /> ); if (canConfirmOps && unit.isCurrent) {`, ); fs.writeFileSync(path, src); console.log("summary ok", { transferCur: src.includes("canConfirmOps && unit.isCurrent"), woMode: src.includes('mode={canConfirmOps && unit.isCurrent ? "edit"'), }); }