| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #!/usr/bin/env python3
- """手动触发地磅计划按月自动生成(与 APScheduler 任务同逻辑)。"""
- from __future__ import annotations
- import argparse
- import sys
- from pathlib import Path
- BACKEND_ROOT = Path(__file__).resolve().parents[1]
- if str(BACKEND_ROOT) not in sys.path:
- sys.path.insert(0, str(BACKEND_ROOT))
- from app.core.database import SessionLocal
- from app.services.db.auto_generate_plans import run_auto_generate_monthly_plans
- def main() -> int:
- parser = argparse.ArgumentParser(description="Run db monthly plan auto-generation once")
- parser.add_argument(
- "--force",
- action="store_true",
- help="Skip first-day-of-month guard (for local verification)",
- )
- args = parser.parse_args()
- db = SessionLocal()
- try:
- result = run_auto_generate_monthly_plans(db, force=args.force)
- print(result)
- return 0
- except Exception:
- db.rollback()
- raise
- finally:
- db.close()
- if __name__ == "__main__":
- raise SystemExit(main())
|