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.
 
 
 
 
 

89 lines
5.7 KiB

# -*- coding: utf-8 -*-
# 票 11 bruno-sync tag 迁移收尾:写 11 个新 folder.bru + 删 49 个旧文件(删除前验证新文件已存在)
import os, sys
sys.stdout = open(sys.stdout.fileno(), 'w', encoding='utf-8', buffering=1)
ROOT = r'E:\code\crm-api-docs'
# ---------- 1. folder.bru(name 与源码 tag 一致;seq 沿旧惯例:商机规则下 10 步长,数据字典下 1/2) ----------
FOLDERS = [
(r'A7 后台管理\业务规则', '业务规则', 10),
(r'A7 后台管理\业务规则\商机规则', '商机规则', 1),
(r'A7 后台管理\业务规则\商机规则\商机阶段设置', '商机阶段设置', 10),
(r'A7 后台管理\业务规则\商机规则\方案卡模板', '方案卡模板', 20),
(r'A7 后台管理\业务规则\商机规则\公海与提醒', '公海与提醒', 30),
(r'A7 后台管理\业务规则\商机规则\商机相关字典', '商机相关字典', 40),
(r'A7 后台管理\业务规则\客户规则', '客户规则', 2),
(r'A7 后台管理\系统设置', '系统设置', 11),
(r'A7 后台管理\系统设置\数据字典', '数据字典', 1),
(r'A7 后台管理\系统设置\数据字典\分组', '分组', 1),
(r'A7 后台管理\系统设置\数据字典\字典项', '字典项', 2),
]
for rel, name, seq in FOLDERS:
full = os.path.join(ROOT, rel)
assert os.path.isdir(full), 'missing dir: ' + full
with open(os.path.join(full, 'folder.bru'), 'w', encoding='utf-8', newline='\n') as f:
f.write('meta {\n name: %s\n seq: %s\n}\n' % (name, seq))
print('folder.bru written:', len(FOLDERS))
# ---------- 2. 删除旧文件(每个文件删除前验证对应新文件已存在,否则保留并报错) ----------
MIG = [
(r'A7 后台管理\商机规则\阶段模板', r'A7 后台管理\业务规则\商机规则\商机阶段设置'),
(r'A7 后台管理\商机规则\方案卡模板', r'A7 后台管理\业务规则\商机规则\方案卡模板'),
(r'A7 后台管理\商机规则\公海规则', r'A7 后台管理\业务规则\商机规则\公海与提醒'),
(r'A7 后台管理\客户管理设置\超期未跟进提醒', r'A7 后台管理\业务规则\客户规则\客户管理设置(超期未跟进提醒)'),
(r'A7 后台管理\客户管理设置\查重设置', r'A7 后台管理\业务规则\客户规则\客户管理设置(客户查重设置)'),
(r'A7 后台管理\数据字典\分组', r'A7 后台管理\系统设置\数据字典\分组'),
(r'A7 后台管理\数据字典\字典项', r'A7 后台管理\系统设置\数据字典\字典项'),
]
deleted, errors = [], []
for old_dir, new_dir in MIG:
for fn in sorted(os.listdir(os.path.join(ROOT, old_dir))):
must = os.path.join(ROOT, new_dir, 'folder.bru' if fn == 'folder.bru' else fn)
if not os.path.exists(must):
errors.append('NEW MISSING, keep old: ' + old_dir + '\\' + fn)
continue
os.remove(os.path.join(ROOT, old_dir, fn))
deleted.append(old_dir + '\\' + fn)
# 旧父目录 folder.bru(迁移后父目录空掉)
for old_f, new_f in [
(r'A7 后台管理\商机规则\folder.bru', r'A7 后台管理\业务规则\商机规则\folder.bru'),
(r'A7 后台管理\数据字典\folder.bru', r'A7 后台管理\系统设置\数据字典\folder.bru'),
]:
if os.path.exists(os.path.join(ROOT, new_f)):
os.remove(os.path.join(ROOT, old_f))
deleted.append(old_f)
else:
errors.append('NEW MISSING, keep old: ' + old_f)
print('deleted:', len(deleted))
for d in deleted:
print(' -', d)
# ---------- 3. 清理空目录(rmdir 仅删空目录,失败静默跳过) ----------
for d in [r'A7 后台管理\商机规则\阶段模板', r'A7 后台管理\商机规则\方案卡模板', r'A7 后台管理\商机规则\公海规则',
r'A7 后台管理\商机规则', r'A7 后台管理\客户管理设置\超期未跟进提醒', r'A7 后台管理\客户管理设置\查重设置',
r'A7 后台管理\客户管理设置', r'A7 后台管理\数据字典\分组', r'A7 后台管理\数据字典\字典项', r'A7 后台管理\数据字典']:
try:
os.rmdir(os.path.join(ROOT, d))
print('rmdir:', d)
except OSError:
pass
# ---------- 4. 台账 ----------
if errors:
print('ERRORS:')
for e in errors:
print(' !', e)
print('--- new structure ---')
for rel in [r'A7 后台管理\业务规则', r'A7 后台管理\业务规则\商机规则', r'A7 后台管理\业务规则\商机规则\商机阶段设置',
r'A7 后台管理\业务规则\商机规则\方案卡模板', r'A7 后台管理\业务规则\商机规则\公海与提醒',
r'A7 后台管理\业务规则\商机规则\商机相关字典', r'A7 后台管理\业务规则\客户规则',
r'A7 后台管理\业务规则\客户规则\客户管理设置(超期未跟进提醒)',
r'A7 后台管理\业务规则\客户规则\客户管理设置(客户查重设置)',
r'A7 后台管理\系统设置', r'A7 后台管理\系统设置\数据字典',
r'A7 后台管理\系统设置\数据字典\分组', r'A7 后台管理\系统设置\数据字典\字典项']:
full = os.path.join(ROOT, rel)
print('%2d files: %s' % (len(os.listdir(full)), rel))
print('old 商机规则 exists:', os.path.exists(os.path.join(ROOT, r'A7 后台管理\商机规则')))
print('old 数据字典 exists:', os.path.exists(os.path.join(ROOT, r'A7 后台管理\数据字典')))
print('old 客户管理设置 exists:', os.path.exists(os.path.join(ROOT, r'A7 后台管理\客户管理设置')))