# -*- coding: utf-8 -*- """票 05 结构裁决落地:11 个 .bru 按 ADR-0024 原型页面树迁移(内容字节不动,纯移动)。 1) 战略协议 5 个:A4 客户管理/战略协议/ → A4 客户管理/客户详情/战略协议/ (原型 a4-4-6 页签 + a4-4-9/10 弹页,全在 A4-4 客户详情组) 2) 联系人导入 6 个:A4 客户管理/客户详情/联系人导入/ → A4 客户管理/联系人/联系人导入/ (原型 a4-5-4 在 A4-5 联系人独立菜单组) 目标目录已确认不存在(无覆盖);迁后源目录仅剩 folder.bru 时一并移走再删空壳。 """ import shutil import sys from pathlib import Path DOCS = Path(r'E:\code\crm-api-docs') MOVES = [ (DOCS / 'A4 客户管理' / '战略协议', DOCS / 'A4 客户管理' / '客户详情' / '战略协议'), (DOCS / 'A4 客户管理' / '客户详情' / '联系人导入', DOCS / 'A4 客户管理' / '联系人' / '联系人导入'), ] moved = [] for src, dst in MOVES: assert src.is_dir(), f'源目录缺失:{src}' assert not dst.exists(), f'目标已存在,拒绝覆盖:{dst}' dst.mkdir(parents=True) for f in sorted(src.iterdir()): shutil.move(str(f), str(dst / f.name)) moved.append(f'{f.relative_to(DOCS)} -> {(dst / f.name).relative_to(DOCS)}') leftovers = sorted(src.iterdir()) if leftovers: # 宁停不删:意外残留即中止并报告 print('意外残留(未删源目录):', *map(str, leftovers), sep='\n ') sys.exit(1) src.rmdir() print(f'OK 源目录已清空移除:{src.name}') print(f'\n共迁移 {len(moved)} 个文件:') print('\n'.join(' ' + m for m in moved))