From 2e391d599d08ea7a7c11442bc2845a1191494c3d Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期四, 07 八月 2025 17:55:58 +0800 Subject: [PATCH] 新增消息聚会,短时间内同一用户发送的消息聚合才后发送给AI --- main.py | 40 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 39 insertions(+), 1 deletions(-) diff --git a/main.py b/main.py index dd776b7..e6b60b3 100644 --- a/main.py +++ b/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("鏈厤缃甧cloud_w_id锛岃烦杩囪仈绯讳汉鍚屾") + except Exception as e: + logger.error(f"鑱旂郴浜哄悓姝ュ紓甯�: {str(e)}") + logger.info("搴旂敤鍚姩瀹屾垚") yield # 鍏抽棴鏃舵墽琛� logger.info("姝e湪鍏抽棴搴旂敤...") + + # 鍋滄娑堟伅鑱氬悎鏈嶅姟 + 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瀵规帴鏈嶅姟杩愯姝e父", + "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}", ) -- Gitblit v1.9.1