from __future__ import annotations """ Feishu Integration Service - 飞书集成服务 功能: 1. 接收飞书群聊消息事件 2. AI 判断消息是否为有价值的信号 3. 自动创建信号并关联到项目 4. 推送通知给相关角色 飞书开放平台配置: - App ID: 从飞书开放平台获取 - App Secret: 从飞书开放平台获取 - 事件接收: 统一使用长连接模式 """ import asyncio import json import hashlib import re import time from uuid import uuid4 from datetime import datetime, timedelta, timezone from typing import Any, Dict, List, Optional import httpx from sqlalchemy import and_, or_, text, update from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from ....models import ( User, Project, Signal, ProjectSignalLink, Integration, FeishuReplyOutbox, AIProcessingLog, ) from ....core.database import AsyncSessionLocal from ....config.ai_prompts import PROMPT_FEISHU_HUMANIZED_REPLY from ...notification_service import NotificationService from ...signal.signal_capture_service import ProactiveSignalCaptureService from ...llm_service import LLMService from ....utils.timezone import now_cn_naive CN_TZ = timezone(timedelta(hours=8)) WEEKDAY_CN = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] OUTBOX_MAX_ATTEMPTS = 3 OUTBOX_STALE_SENDING_SECONDS = 120 _OUTBOX_PERF_T0_BY_ID: dict[int, float] = {} __all__ = [name for name in globals() if not name.startswith("__")]