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.
39 lines
1.7 KiB
39 lines
1.7 KiB
# -*- 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))
|
|
|