import schedule
from sample_cloud_modules import SampleCloudModules
from log_config import configure_task_logger, configure_error_task_logger
from utils import load_tasks_on_start, load_tasks_and_execute
import time
from datetime import datetime

# 获取常规日志记录器
logger = configure_task_logger()

# 获取错误任务日志记录器
error_task_logger = configure_error_task_logger()


def main():
    try:
        # 在程序启动时加载并执行任务
        load_tasks_on_start()
        logger.info("程序已启动...")

        # 设置定时任务，从云端获取并保存到 csv 文件
        schedule.every().day.at("01:00").do(SampleCloudModules.fetch_and_save_tasks)

        # 设置每分钟检查一次是否有新任务需要加载到队列
        schedule.every(1).minutes.do(load_tasks_and_execute)

        # 主循环，用于持续检查和执行定时任务
        while True:
            schedule.run_pending()
            time.sleep(1)
            # 每秒检查一次
            now = datetime.now()
            if now.hour == 23:
                logger.info("23点，程序结束。")
                break
    except Exception as e:
        error_task_logger.error(f"程序异常: {e}")


if __name__ == "__main__":
    # 测试时候每次从简道云获取任务列表
    SampleCloudModules.fetch_and_save_tasks()
    logger.info("任务列表已保存到 csv 文件中。")
    main()
