| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import os
- import json
- import glob
- def main():
- base_dir = r"c:\Users\11304\gitlab\cybertogether\Agent\examples\process_research\output"
-
- # 遍历 output 目录下的所有子文件夹
- if not os.path.exists(base_dir):
- print(f"Directory not found: {base_dir}")
- return
- fixed_count = 0
- skip_count = 0
- for item in os.listdir(base_dir):
- sub_dir = os.path.join(base_dir, item)
- if not os.path.isdir(sub_dir):
- continue
-
- strategy_path = os.path.join(sub_dir, "strategy.json")
- if not os.path.exists(strategy_path):
- continue
-
- # 读取 strategy.json
- try:
- with open(strategy_path, "r", encoding="utf-8") as f:
- strategy_data = json.load(f)
- except Exception as e:
- print(f"Error reading {strategy_path}: {e}")
- continue
- # 如果已经有了,跳过
- if "requirement" in strategy_data:
- print(f"[{item}] skip: already has requirement")
- skip_count += 1
- continue
-
- # 寻找对应的 case.json 提取 requirement
- requirement_text = None
-
- # 1. 尝试直接找 case.json
- case_path = os.path.join(sub_dir, "case.json")
- if os.path.exists(case_path):
- try:
- with open(case_path, "r", encoding="utf-8") as f:
- case_data = json.load(f)
- requirement_text = case_data.get("requirement")
- except Exception:
- pass
-
- # 2. 如果没找到或 case.json 不存在,并且存在分散的 case_*.json
- if not requirement_text:
- case_files = glob.glob(os.path.join(sub_dir, "case_*.json"))
- for cf in case_files:
- try:
- with open(cf, "r", encoding="utf-8") as f:
- cf_data = json.load(f)
- if "requirement" in cf_data:
- requirement_text = cf_data["requirement"]
- break
- except Exception:
- continue
-
- if not requirement_text:
- print(f"[{item}] ERROR: could not find 'requirement' in any case files")
- continue
-
- # 更新 strategy.json
- # 为了保证 requirement 在最开头,创建一个新的 dict
- new_strategy_data = {"requirement": requirement_text}
- new_strategy_data.update(strategy_data)
-
- try:
- with open(strategy_path, "w", encoding="utf-8") as f:
- json.dump(new_strategy_data, f, ensure_ascii=False, indent=4)
- print(f"[{item}] fixed: added requirement successfully")
- fixed_count += 1
- except Exception as e:
- print(f"[{item}] ERROR writing back strategy data: {e}")
- print(f"\nSummary: Fixed {fixed_count} files, Skipped {skip_count} files.")
- if __name__ == "__main__":
- main()
|