| | |
| | | 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 |
| | |
| | | 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: |
| | |
| | | |
| | | # 注册路由 |
| | | 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("/") |
| | |
| | | } |
| | | |
| | | |
| | | @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}", |
| | | ) |