| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/usr/bin/env python
- """Run one versioned daily ROI computation and optional Feishu approval batch."""
- from __future__ import annotations
- import argparse
- import json
- import logging
- import os
- import sys
- from pathlib import Path
- from dotenv import load_dotenv
- HERE = Path(__file__).resolve().parent
- ROOT = HERE.parents[1]
- RTC_DIR = ROOT / "examples" / "tencent_realtime_control"
- for path in (ROOT, HERE, RTC_DIR):
- if str(path) not in sys.path:
- sys.path.insert(0, str(path))
- load_dotenv(HERE / ".env", override=False)
- load_dotenv(Path.cwd() / ".env", override=False)
- from roi_control.service import run_daily_roi # noqa: E402
- def parse_args() -> argparse.Namespace:
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument("--end-date", help="ODPS end partition in YYYYMMDD")
- parser.add_argument(
- "--output-dir",
- type=Path,
- default=HERE / "outputs" / "roi_control",
- )
- parser.add_argument(
- "--source-revision",
- help="Stable revision label for corrected upstream data",
- )
- parser.add_argument("--send-feishu", action="store_true")
- parser.add_argument(
- "--internal-test",
- action="store_true",
- help="Run an isolated full calculation and notify only the internal webhook",
- )
- return parser.parse_args()
- def main() -> None:
- args = parse_args()
- result = run_daily_roi(
- requested_end_date=args.end_date,
- output_dir=args.output_dir,
- send_feishu=args.send_feishu,
- source_revision=args.source_revision,
- internal_test=args.internal_test,
- )
- print(json.dumps(result, ensure_ascii=False, default=str))
- if __name__ == "__main__":
- logging.basicConfig(
- level=os.getenv("LOG_LEVEL", "INFO"),
- format="%(asctime)s %(levelname)s %(name)s %(message)s",
- )
- main()
|