Files
2026-01-23 13:57:48 +08:00

70 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
面试初始化接口
"""
from fastapi import APIRouter, UploadFile, File, Form, HTTPException
from loguru import logger
from app.schemas import ApiResponse
from app.services.coze_service import coze_service
router = APIRouter()
@router.post("/init-interview", response_model=ApiResponse)
async def init_interview(
name: str = Form(..., description="候选人姓名"),
file: UploadFile = File(..., description="简历文件PDF"),
):
"""
初始化面试
1. 上传简历到 Coze
2. 获取文件临时 URL
3. 调用工作流 A解析简历、创建记录
4. 返回 session_id
后续使用 session_id 创建语音房间进行面试
"""
try:
# 验证文件类型
if not file.filename.lower().endswith('.pdf'):
raise HTTPException(status_code=400, detail="仅支持 PDF 格式")
# 读取文件内容
content = await file.read()
# 验证文件大小(最大 10MB
if len(content) > 10 * 1024 * 1024:
raise HTTPException(status_code=400, detail="文件大小不能超过 10MB")
logger.info(f"Init interview: name={name}, file={file.filename}, size={len(content)} bytes")
# 执行完整的初始化流程(返回详细调试信息)
result = await coze_service.init_interview(
name=name,
file_content=content,
filename=file.filename,
)
session_id = result.get("session_id", "")
debug_info = result.get("debug_info", {})
logger.info(f"Interview initialized: session_id={session_id}")
logger.info(f"Debug info: {debug_info}")
return ApiResponse(
code=0,
message="success",
data={
"sessionId": session_id,
"name": name,
"debugInfo": debug_info,
}
)
except HTTPException:
raise
except Exception as e:
logger.error(f"Init interview error: {e}")
raise HTTPException(status_code=500, detail=str(e))