yj
2025-09-03 f28ac0166536a2a4b68cac685a41ea667f60f7e9
main.py
@@ -7,10 +7,15 @@
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager
from loguru import logger
import time
from config import settings
from app.api.callback import router as callback_router
from app.api.friend_ignore import router as friend_ignore_router
from app.api.message_aggregation import router as message_aggregation_router
from app.models.database import create_tables
from app.workers.message_worker import message_worker
from app.services.contact_sync import contact_sync_service
from app.services.message_aggregator import message_aggregator
@asynccontextmanager
@@ -33,12 +38,33 @@
    except Exception as e:
        logger.error(f"消息工作进程启动失败: {str(e)}")
    # 同步联系人信息并建立好友忽略列表
    try:
        if settings.ecloud_w_id:
            logger.info("开始同步联系人信息...")
            success = contact_sync_service.sync_contacts_on_startup(settings.ecloud_w_id)
            if success:
                logger.info("联系人同步完成,好友忽略列表已建立")
            else:
                logger.warning("联系人同步失败")
        else:
            logger.warning("未配置ecloud_w_id,跳过联系人同步")
    except Exception as e:
        logger.error(f"联系人同步异常: {str(e)}")
    logger.info("应用启动完成")
    yield
    # 关闭时执行
    logger.info("正在关闭应用...")
    # 停止消息聚合服务
    try:
        message_aggregator.stop()
        logger.info("消息聚合服务已停止")
    except Exception as e:
        logger.error(f"消息聚合服务停止失败: {str(e)}")
    # 停止消息工作进程
    try:
@@ -69,6 +95,8 @@
# 注册路由
app.include_router(callback_router, prefix="/api/v1", tags=["回调接口"])
app.include_router(friend_ignore_router, prefix="/api/v1", tags=["好友忽略管理"])
app.include_router(message_aggregation_router, prefix="/api/v1/aggregation", tags=["消息聚合管理"])
@app.get("/")
@@ -81,12 +109,22 @@
    }
@app.get("/health")
async def health_check():
    """健康检查接口"""
    return {
        "status": "healthy",
        "message": "E云管家-DifyAI对接服务运行正常",
        "timestamp": int(time.time()),
    }
if __name__ == "__main__":
    # 配置日志
    logger.add(
        settings.log_file,
        rotation="1 day",
        retention="30 days",
        retention="7 days",
        level=settings.log_level,
        format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} - {message}",
    )