import json import os import sys from datetime import datetime from pathlib import Path # Thư mục state WATCH_PATH = Path("/opt/ai-os/products/ceo/.state/task_progress.json") def trigger_auto_handoff(dest, done_msg, next_msg, output_msg): """Gọi trực tiếp command-line tool để gửi bàn giao sang topic đích.""" # Tránh các lỗi shell-escaping bằng cách quote chuỗi cmd = ( f'python3 /opt/ai-os/products/ceo/lib/topic_handoff.py send ' f'--to {dest} ' f'--source "IT & AI" ' f'--done "{done_msg}" ' f'--next "{next_msg}" ' f'--output "{output_msg}"' ) print(f"Executing: {cmd}") os.system(cmd) def check_and_trigger(): if not WATCH_PATH.exists(): print("No task progress file found.") return try: data = json.loads(WATCH_PATH.read_text()) if data.get("notebook_ready") and not data.get("triggered"): print("Notebook is ready. Starting automatic workflow...") # 1. Bàn giao cho Policy Lab trigger_auto_handoff( dest="policy-lab", done_msg="Đã cài đặt thành công NotebookLM MCP CLI trên VPS Ubuntu.", next_msg="Tự động kiểm tra notebook Báo cáo Du Lịch và đối chiếu với các nguồn chính sách du lịch.", output_msg="Bảng so sánh chính sách xúc tiến của VN với các quốc gia đối thủ (Thái Lan/Singapore)." ) # 2. Bàn giao cho Research & Inno. trigger_auto_handoff( dest="research-inno", done_msg="Đã liên kết thành công môi trường tri thức NotebookLM với AI OS.", next_msg="Ứng dụng use case [Tóm tắt học thuật] trên kho tài liệu VN Digitalized Tourism Research.", output_msg="Đề xuất 1-3 use case cụ thể để áp dụng vào quy trình nghiên cứu của phòng ban." ) # Đánh dấu đã trigger để tránh gửi lặp data["triggered"] = True WATCH_PATH.write_text(json.dumps(data)) print("Auto-handoff completed successfully.") else: print("Workflow already triggered or notebook not ready.") except Exception as e: print(f"Watcher error: {e}") if __name__ == "__main__": check_and_trigger()