"""只读核验汇总任务方法已注册、导入计划保持禁用,不触发实际数据重建。""" import argparse import json import urllib.request from pathlib import Path def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('--base-url', default='http://127.0.0.1:18000') parser.add_argument('--token-file', required=True, type=Path) parser.add_argument('--output', required=True, type=Path) args = parser.parse_args() token = args.token_file.read_text(encoding='utf-8').strip() def get(path): req = urllib.request.Request(args.base_url + path, headers={'x-token': token}) with urllib.request.urlopen(req, timeout=30) as response: data = json.load(response) assert data['code'] == 0, data.get('msg') return data['data'] methods = get('/timedTask/getRegisteredMethods')['methods'] names = {row['name'] for row in methods} expected = {f'swReport{kind}{period}Task' for kind in ['Day', 'ServerDay'] for period in ['Today', 'Yesterday', 'Backfill']} tasks = get('/timedTask/getTimedTaskList?page=1&pageSize=1000') imported = [row for row in tasks['list'] if row.get('name', '').startswith('SW/')] report = {'scope': '真实 sw7 会话,只读任务接口;正向创建和触发通过隔离数据库原生任务 HTTP 测试。', 'registeredMethods': sorted(names & expected), 'importedTasks': len(imported), 'enabledImportedTasks': sum(bool(row['enabled']) for row in imported), 'passed': expected <= names and not any(row['enabled'] for row in imported)} args.output.write_text(json.dumps(report, ensure_ascii=False, indent=2) + '\n', encoding='utf-8') print(json.dumps(report, ensure_ascii=False)) if not report['passed']: raise SystemExit(1) if __name__ == '__main__': main()