feat: 新增飞书长连接模式,无需公网域名
## 🚀 重大更新 ### 飞书集成升级 - ✅ 迁移到飞书官方 SDK 的事件订阅 2.0(长连接模式) - ✅ 无需公网域名和 webhook 配置 - ✅ 支持内网部署 - ✅ 自动重连机制 ### 核心功能优化 - ✅ 优化群聊隔离机制(每个用户在每个群独立会话) - ✅ 增强日志输出(emoji 标记便于快速识别) - ✅ 完善错误处理和异常恢复 - ✅ 添加 SSL 证书问题解决方案 ### 新增文件 - `src/integrations/feishu_longconn_service.py` - 飞书长连接服务 - `start_feishu_bot.py` - 启动脚本 - `test_feishu_connection.py` - 连接诊断工具 - `docs/FEISHU_LONGCONN.md` - 详细使用文档 - `README.md` - 项目说明文档 ### 技术改进 - 添加 lark-oapi==1.3.5 官方 SDK - 升级 certifi 包以支持 SSL 验证 - 优化配置加载逻辑 - 改进会话管理机制 ### 文档更新 - 新增飞书长连接模式完整文档 - 更新快速开始指南 - 添加常见问题解答(SSL、权限、部署等) - 完善架构说明和技术栈介绍 ## 📝 使用方式 启动飞书长连接服务(无需公网域名): ```bash python3 start_feishu_bot.py ``` 详见:docs/FEISHU_LONGCONN.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,18 @@ class AIAccuracyConfig:
|
||||
human_resolution_confidence: float = 0.90
|
||||
|
||||
|
||||
@dataclass
|
||||
class RedisConfig:
|
||||
"""Redis缓存配置"""
|
||||
enabled: bool = True
|
||||
host: str = "localhost"
|
||||
port: int = 6379
|
||||
db: int = 0
|
||||
password: Optional[str] = None
|
||||
pool_size: int = 10
|
||||
default_ttl: int = 3600 # 默认缓存过期时间(秒)
|
||||
|
||||
|
||||
# --- 统一配置管理器 ---
|
||||
|
||||
class UnifiedConfig:
|
||||
@@ -86,6 +98,7 @@ class UnifiedConfig:
|
||||
self.server = self._load_server_from_env()
|
||||
self.feishu = self._load_feishu_from_env()
|
||||
self.ai_accuracy = self._load_ai_accuracy_from_env()
|
||||
self.redis = self._load_redis_from_env()
|
||||
self.validate_config()
|
||||
|
||||
def _load_database_from_env(self) -> DatabaseConfig:
|
||||
@@ -146,6 +159,19 @@ class UnifiedConfig:
|
||||
logger.info("AI Accuracy config loaded.")
|
||||
return config
|
||||
|
||||
def _load_redis_from_env(self) -> RedisConfig:
|
||||
config = RedisConfig(
|
||||
enabled=os.getenv("REDIS_ENABLED", "True").lower() in ('true', '1', 't'),
|
||||
host=os.getenv("REDIS_HOST", "localhost"),
|
||||
port=int(os.getenv("REDIS_PORT", 6379)),
|
||||
db=int(os.getenv("REDIS_DB", 0)),
|
||||
password=os.getenv("REDIS_PASSWORD") or None,
|
||||
pool_size=int(os.getenv("REDIS_POOL_SIZE", 10)),
|
||||
default_ttl=int(os.getenv("REDIS_DEFAULT_TTL", 3600))
|
||||
)
|
||||
logger.info("Redis config loaded.")
|
||||
return config
|
||||
|
||||
def validate_config(self):
|
||||
"""在启动时验证关键配置"""
|
||||
if not self.database.url:
|
||||
@@ -166,6 +192,7 @@ class UnifiedConfig:
|
||||
'server': asdict(self.server),
|
||||
'feishu': asdict(self.feishu),
|
||||
'ai_accuracy': asdict(self.ai_accuracy),
|
||||
'redis': asdict(self.redis),
|
||||
}
|
||||
|
||||
# --- 全局单例模式 ---
|
||||
|
||||
Reference in New Issue
Block a user