"""岗位简历技能差距分析 + 定制简历接口""" from fastapi import APIRouter from app.core.context import RequestContext from app.core.database import get_db from app.schemas.skill_gap import SkillGapParam, CustomizeResumeParam, AiEditParam, CustomizeResume from app.services.skill_gap_service import SkillGapService from app.services import customize_resume_store router = APIRouter(prefix="/job", tags=["岗位简历"]) @router.post("/skill-gap", summary="技能差距分析") async def skill_gap(param: SkillGapParam): """根据岗位技能标签和用户简历,分析技能差距""" user_id = RequestContext.user_id.get() async for session in get_db(): service = SkillGapService(session) result = await service.analyze_skill_gap(user_id, param.job_id) return result @router.post("/customize-resume", summary="生成定制简历") async def generate_customize_resume(param: CustomizeResumeParam): """根据差距分析结果,AI 生成定制简历""" user_id = RequestContext.user_id.get() async for session in get_db(): service = SkillGapService(session) await service.generate_customize_resume( user_id, param.job_id, param.resume_id, param.optimize_modules, param.add_skills, ) return {"success": True} @router.get("/customize-resume", summary="查询定制简历") async def get_customize_resume(): """查询当前用户的定制简历""" user_id = RequestContext.user_id.get() return await customize_resume_store.get(user_id) @router.put("/customize-resume", summary="修改定制简历") async def update_customize_resume(data: CustomizeResume): """手动编辑定制简历(整体覆盖)""" user_id = RequestContext.user_id.get() await customize_resume_store.save(user_id, data) @router.post("/customize-resume/rollback", summary="回滚定制简历") async def rollback_customize_resume(): """回滚到上一版本的定制简历""" user_id = RequestContext.user_id.get() await customize_resume_store.rollback(user_id) @router.post("/customize-resume/ai-edit", summary="AI对话编辑定制简历") async def ai_edit_customize_resume(param: AiEditParam): """AI 对话式编辑定制简历""" user_id = RequestContext.user_id.get() # 短事务:查岗位信息 async for session in get_db(): service = SkillGapService(session) result = await service.ai_edit_customize_resume( user_id, param.job_id, param.instruction, [msg.model_dump() for msg in param.chat_history], ) return result