| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/usr/bin/env python
- """Run Feishu controls and the ten-minute real-time control loop."""
- from __future__ import annotations
- import argparse
- import logging
- import os
- import sys
- from pathlib import Path
- ROOT = Path(__file__).resolve().parents[2]
- AUTO_DIR = ROOT / "examples" / "auto_put_ad_mini"
- for path in (ROOT, AUTO_DIR):
- if str(path) not in sys.path:
- sys.path.insert(0, str(path))
- from run_once import load_environment # noqa: E402
- from run_scheduler import run_forever # noqa: E402
- from storage import initialize_schema # noqa: E402
- from roi_control.config import RoiConfig # noqa: E402
- logger = logging.getLogger("tencent_realtime_control.service")
- def _env_flag(name: str, default: bool = False) -> bool:
- raw = os.getenv(name)
- if raw is None:
- return default
- return raw.strip().lower() in {"1", "true", "yes", "on"}
- def parse_args() -> argparse.Namespace:
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument(
- "--apply",
- action="store_true",
- help="Enable confirmed Feishu commands and real Tencent updates.",
- )
- return parser.parse_args()
- def main() -> None:
- load_environment()
- args = parse_args()
- apply = args.apply or _env_flag("RTC_APPLY_ENABLED")
- roi_config = RoiConfig.from_env()
- initialize_schema()
- if os.getenv("RTC_COMMAND_ENABLED", "1").strip().lower() in {
- "1",
- "true",
- "yes",
- }:
- from feishu_command_service import FeishuCommandService
- FeishuCommandService(apply=apply).start()
- logger.info("Feishu command WebSocket started")
- else:
- logger.warning("Feishu command WebSocket is disabled")
- if roi_config.sheet_approval_enabled:
- from roi_control.sheet_approval import RoiSheetApprovalService
- RoiSheetApprovalService().start()
- logger.info("ROI sheet approval polling started")
- else:
- logger.warning("ROI sheet approval polling is disabled")
- run_forever(apply=apply)
- if __name__ == "__main__":
- logging.basicConfig(
- level=os.getenv("LOG_LEVEL", "INFO"),
- format="%(asctime)s %(levelname)s %(name)s %(message)s",
- )
- main()
|