You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.9 KiB
41 lines
1.9 KiB
|
1 day ago
|
# -*- 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')
|