Files
gaokao-volunteer-system/scripts/gaokao-delivery-dispatch.py
Hermes Agent 7fabc23715
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
fix(t12): close payment delivery and governance remediation
2026-06-15 11:39:31 +08:00

55 lines
1.6 KiB
Python

from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
def main() -> int:
from admin.config import load_settings
from data.notifications.dispatcher import DeliveryDispatcher
from data.notifications.smtp_sender import SMTPDeliverySender, SMTPSettings
parser = argparse.ArgumentParser(
description="Dispatch delivery notification events"
)
parser.add_argument("--channel", default="station")
parser.add_argument("--limit", type=int, default=100)
args = parser.parse_args()
settings = load_settings()
email_sender = None
if args.channel == "email" and settings.smtp_host:
email_sender = SMTPDeliverySender(
SMTPSettings(
host=settings.smtp_host,
port=settings.smtp_port,
sender=settings.smtp_sender,
username=settings.smtp_username,
password=settings.smtp_password,
use_tls=settings.smtp_use_tls,
use_ssl=settings.smtp_use_ssl,
)
)
dispatcher = DeliveryDispatcher.for_db(
settings.orders_db_path,
email_sender=email_sender,
)
try:
result = dispatcher.dispatch_ready_events(
channel=args.channel, limit=args.limit
)
finally:
dispatcher.close()
print(json.dumps(result.__dict__, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())