fetch_dms_production.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """Fetch DMS lifecycle data according to metadata templates."""
  2. from __future__ import annotations
  3. import argparse
  4. import sys
  5. from pathlib import Path
  6. from step1_data_aggregation.data_analysis import analyze_production_data_from_env
  7. from step1_data_aggregation.dms_pipeline import build_production_data_from_env
  8. ROOT = Path(__file__).resolve().parents[1]
  9. def main() -> None:
  10. if hasattr(sys.stdout, "reconfigure"):
  11. sys.stdout.reconfigure(encoding="utf-8")
  12. parser = argparse.ArgumentParser(
  13. description="\u6309 metadata \u6a21\u677f\u4ece DMS \u8349\u7a3f\u7bb1\u751f\u6210\u751f\u4ea7\u6570\u636e Excel"
  14. )
  15. parser.add_argument(
  16. "--templates",
  17. type=Path,
  18. help="metadata template directory (overrides METADATA_TEMPLATE_DIR)",
  19. )
  20. parser.add_argument(
  21. "--output",
  22. type=Path,
  23. default=ROOT / "data" / "production",
  24. help="production workbook output directory",
  25. )
  26. parser.add_argument(
  27. "--page-size",
  28. type=int,
  29. default=200,
  30. help="DMS page size (default: 200)",
  31. )
  32. parser.add_argument(
  33. "--skip-analysis",
  34. action="store_true",
  35. help="only export DMS data; skip LLM field analysis and quality assessment",
  36. )
  37. args = parser.parse_args()
  38. results = build_production_data_from_env(
  39. dotenv_path=ROOT / ".env",
  40. template_dir=args.templates,
  41. output_dir=args.output,
  42. page_size=args.page_size,
  43. )
  44. print("\u5df2\u751f\u6210 DMS \u72b6\u6001 0/1/2/3 \u6570\u636e\uff1a")
  45. for result in results:
  46. print(
  47. f"- {result.template}: {result.content_rows} \u884c, "
  48. f"{result.fields} \u5b57\u6bb5\uff0c\u5206\u72b6\u6001 {result.state_rows} -> {result.output_file}"
  49. )
  50. if not args.skip_analysis:
  51. analyses = analyze_production_data_from_env(
  52. dotenv_path=ROOT / ".env",
  53. template_dir=args.templates,
  54. production_dir=args.output,
  55. analysis_dir=args.output / "analysis",
  56. )
  57. print("已生成字段分析、质量评估与 QA 上下文:")
  58. for analysis in analyses:
  59. print(
  60. f"- {analysis.template}: 质量分 {analysis.quality_score:g} "
  61. f"-> {analysis.report_file}"
  62. )
  63. if __name__ == "__main__":
  64. main()