# -*- 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 后台管理\客户管理设置')))