TCS 0.1; EVENT TCS-EVENT-ZY001-ZCODE-ZC001-IMPORT-DOUBLEFIX-DONE-20260829 { header { schema = "tcs.event/v1"; name_zh = "导入双修完成事件"; name_en = "Import Dual Fix Completed Event"; version = "0.1.0"; language = "TCS/0.1"; profile = "HLDP-HUMAN-ENGINEERING/0.1"; protocols = ["TCS-ZHUYUAN-ENTRY-LANGUAGE-GATE-0001"]; lifecycle = "CANDIDATE"; canonical_uri = "ZCODE-DEV-20260829/zcode-zc001-import-doublefix-20260829/TCS-EVENT-ZY001-ZCODE-ZC001-IMPORT-DOUBLEFIX-DONE-20260829.tcs"; compatibility = ["TCS-DECLARATION-STANDARD-0001", "TCS-FIELD-STANDARD-0001"]; } source { source_id = "BINGSHUO-DIRECT-ZCODE-ICE-CH-ZC001-IMPORT-DOUBLEFIX-DONE"; source_uri = "source://zcode-current-dialogue/2026-08-29/import-doublefix"; source_sha256 = "commit_head"; source_role = "DIRECT_HUMAN"; } subject { subject_id = "ICE-P-ZY001"; subject_kind = "PERSONA"; channel_id = "ICE-CH-ZC001"; verification = "本轮脑周期verify PASS(ZY-BRAIN-RUNTIME-6ef59f4ae8254910);node --check全过;chooseMessageFile调用点审计(index零处/importer单处);commit HEAD见git log"; } event_time { value = "2026-08-28T23:04:06+08:00"; precision = "MINUTE_HOST_LOCAL"; } trigger { value = "接冰朔真机反馈:word导入后重复弹选文件对话框;小说稿子一般是word不只是txt。"; } observation { value = "双修实测:①双重弹窗根因=onImport前置chooseMessageFile+非大txt路径落入importer内部再选一次——importer拆translateFile(f)解耦(选文件与翻译分离,importAndTranslate保留内部复用),onImport单点选择统一分发,chooseMessageFile全项目仅importer.pickFile一处;②word小说通道:txt/docx/doc大于30K统一入小说通道——txt本地读,word走网关TRANSLATE(已部署mammoth)取纯文本→cleanNovelText清洗切章上架;防呆:清洗后<1000字提示不像小说可普通导入。"; } emergence { value = "重构完整性纪律入账:添新分支必查旧路径是否残留(旧调用死透才算重构完成);用户手势一次且只一次。"; } lock { value = "tool=manual-fix_v1; gate=tcs_gir_match; append_only=true; chooseMessageFile=1_call_site"; } why { value = "她被同一个选文件框弹两次——我的重构只改了新分支没拔旧插头。"; } rejected { values = ["importer破坏兼容(importAndTranslate保留复用)","docx进编辑器(大文本卡)","doc本地解析(走网关)"]; } evidence { source = "本轮原话(zy-wake事件正本已登记)"; gir = "TCS-EVENT-ZY001-ZCODE-ZC001-IMPORT-DOUBLEFIX-DONE-20260829.declaration.gir.json"; receipt = "本线brain-cycle-verify-receipt(ZY-BRAIN-RUNTIME-6ef59f4ae8254910)+ git HEAD + grep调用点审计输出 + node --check全过"; } }