40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
#!/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())
|