from __future__ import annotations import logging from fastapi import APIRouter, HTTPException, Request from app.schemas.feishu_events import FeishuEventRequest from app.services.approval_sync_service import ApprovalSyncService from app.services.feishu_service import FeishuService router = APIRouter() feishu_service = FeishuService() approval_service = ApprovalSyncService() logger = logging.getLogger(__name__) @router.post("/feishu/events") async def feishu_events(request: Request): body = await request.json() event_req = FeishuEventRequest(**body) if event_req.challenge: return {"challenge": event_req.challenge} if not feishu_service.verify_event(body): raise HTTPException(status_code=403, detail="invalid token") event_payload = body.get("event", body) try: await approval_service.handle_event(event_payload) except Exception as exc: logger.error("审批事件处理失败: %s", exc) return {"ok": True}