# -*- coding: utf-8 -*- """票 05:三份「workspace 列表分页.bru」focusFlag 结构 patch(票 01 字段变更 → 文档对齐)。 - 结构表 +1 行(DTO 末字段 lastViewTime 之后,示例值取 E2E 实测 1) - 响应示例 JSON +1 字段(序列化序 = DTO 声明序) - docs 说明段 +1 句语义(源码 @Schema 注释初稿改写,面向前端读者) 铁律:新增结构条目允许初稿注入;既有表述一个字不动。 """ from pathlib import Path DOCS = Path(r'E:\code\crm-api-docs\A4 客户管理') FILES = [ DOCS / '客户公海' / 'workspace 列表分页.bru', DOCS / '客户总览' / 'workspace 列表分页.bru', DOCS / '我的客户' / 'workspace 列表分页.bru', ] PATCHES = [ # (old, new, 期望命中次数) ('| content[].lastViewTime | string | null |', '| content[].lastViewTime | string | null |\n | content[].focusFlag | number | 1 |', 1), (' "lastViewTime": null\n }', ' "lastViewTime": null,\n "focusFlag": 1\n }', 1), ('projectCount 恒 null 前端显 "--"(契约)。', 'projectCount 恒 null 前端显 "--"(契约)。focusFlag:是否关注(1=已关注 0=未关注;' 'customer_focus 行存在=1),列表关注星标列数据源,三 workspace 通用。', 1), ] for f in FILES: txt = f.read_text(encoding='utf-8') for old, new, expect in PATCHES: n = txt.count(old) assert n == expect, f'{f}: 锚点命中 {n} 次(期望 {expect}):{old[:40]}...' txt = txt.replace(old, new, 1) f.write_text(txt, encoding='utf-8', newline='') # newline='' 保持原行尾,不加 BOM ok = all(p[1] in (txt := f.read_text(encoding='utf-8')) for p in PATCHES) # 复核 print(f'PATCHED {f.relative_to(DOCS)} focusFlag×3 复核={"OK" if ok else "FAIL"}') print('\nDONE:3 份 × 3 处 = 9 处 patch')