run_db_auto_generate_plans.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env python3
  2. """手动触发地磅计划按月自动生成(与 APScheduler 任务同逻辑)。"""
  3. from __future__ import annotations
  4. import argparse
  5. import sys
  6. from pathlib import Path
  7. BACKEND_ROOT = Path(__file__).resolve().parents[1]
  8. if str(BACKEND_ROOT) not in sys.path:
  9. sys.path.insert(0, str(BACKEND_ROOT))
  10. from app.core.database import SessionLocal
  11. from app.services.db.auto_generate_plans import run_auto_generate_monthly_plans
  12. def main() -> int:
  13. parser = argparse.ArgumentParser(description="Run db monthly plan auto-generation once")
  14. parser.add_argument(
  15. "--force",
  16. action="store_true",
  17. help="Skip first-day-of-month guard (for local verification)",
  18. )
  19. args = parser.parse_args()
  20. db = SessionLocal()
  21. try:
  22. result = run_auto_generate_monthly_plans(db, force=args.force)
  23. print(result)
  24. return 0
  25. except Exception:
  26. db.rollback()
  27. raise
  28. finally:
  29. db.close()
  30. if __name__ == "__main__":
  31. raise SystemExit(main())