preparation.py 1.4 KB

123456789101112131415161718192021222324252627
  1. """在研判之前,由宿主完成全部监测取数、预处理及报告接口查询。"""
  2. import json
  3. from extensions.main_fan import exploration, history, report_archive
  4. from extensions.main_fan.batch_context import scope_for
  5. from runtime.python_sandbox import digest, workspace_file
  6. async def assessment(identifier, user, session):
  7. scope = scope_for(user, session)
  8. reports = await report_archive.fetch(identifier, user, session)
  9. historical = await history.query(identifier, user, session)
  10. workflow = exploration._load(identifier, user, session)
  11. path = historical['agent_data_path']
  12. local = workspace_file(user, session, path)
  13. data = json.loads(local.read_text())
  14. report_fields = ('path', 'mode', 'sha256', 'page_count', 'archive_path', 'is_mock', 'binding')
  15. if reports['reports']:
  16. data['reports'] = [{key: row[key] for key in report_fields if row.get(key)} for row in reports['reports']]
  17. exploration._write(local, data)
  18. workflow['context']['query_exports'][path] = digest(local)
  19. receipt = {'mode': 'fixed_code', 'agent_data_path': path,
  20. 'agent_python_path': path.removeprefix('/workspace/'), 'history': historical, 'reports': reports}
  21. workflow['context']['prepared_data'] = receipt
  22. exploration._persist(workflow, user, session, '固定代码准备Agent输入', receipt)
  23. exploration._write(scope.output / scope.shaft.shaft_id / '给Agent的数据.json', data)
  24. return receipt