重构简历优化
This commit is contained in:
+15
-2
@@ -1,10 +1,11 @@
|
||||
"""简历上传解析接口"""
|
||||
|
||||
from fastapi import APIRouter, UploadFile, File
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from app.core.context import RequestContext
|
||||
from app.core.database import get_db
|
||||
from app.services.resume_parse_service import ResumeParseService
|
||||
from app.services.resume_service import ResumeService
|
||||
|
||||
router = APIRouter(prefix="/resume", tags=["简历"])
|
||||
|
||||
@@ -15,7 +16,7 @@ async def upload_resume(file: UploadFile = File(...)):
|
||||
user_id = RequestContext.user_id.get()
|
||||
content = await file.read()
|
||||
|
||||
service = ResumeParseService()
|
||||
service = ResumeService()
|
||||
# 文件解析 + AI 结构化(不占数据库连接)
|
||||
parsed = await service.parse_and_extract(file.filename, content)
|
||||
# 短事务:只做数据库写入
|
||||
@@ -23,3 +24,15 @@ async def upload_resume(file: UploadFile = File(...)):
|
||||
async for session in get_db():
|
||||
resume_id = await service.save_resume(session, user_id, file.filename, parsed)
|
||||
return {"resumeId": resume_id}
|
||||
|
||||
|
||||
class PolishParam(BaseModel):
|
||||
content: list[str] = Field(..., description="待润色的简历段落文本数组")
|
||||
|
||||
|
||||
@router.post("/polish", summary="AI润色简历段落")
|
||||
async def polish_resume(param: PolishParam):
|
||||
"""对前端提交的简历段落做表达层面的润色(格式/错字/表达),不改内容,返回等长数组"""
|
||||
service = ResumeService()
|
||||
result = await service.polish_paragraphs(param.content)
|
||||
return {"content": result}
|
||||
|
||||
@@ -5,7 +5,7 @@ import time
|
||||
from fastapi import APIRouter, Depends
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from app.ai.resume_diagnoser.diagnoser import diagnose_all, generate_summary, polish_content
|
||||
from app.ai.resume_diagnoser.diagnoser import diagnose_all, generate_summary
|
||||
from app.core.auth import func_permission
|
||||
from app.core.context import RequestContext
|
||||
from app.core.database import get_db
|
||||
@@ -98,25 +98,3 @@ async def feedback_issue(issue_id: int, param: FeedbackParam):
|
||||
async for session in get_db():
|
||||
service = ResumeDiagnoseService(session)
|
||||
await service.update_feedback(issue_id, user_id, param.user_feedback)
|
||||
|
||||
|
||||
class PolishParam(BaseModel):
|
||||
content: list[str] = Field(..., description="用户编辑后的文本段落数组")
|
||||
|
||||
|
||||
@router.post("/issue/{issue_id}/polish", summary="AI润色用户编辑的文本")
|
||||
async def polish_issue_content(issue_id: int, param: PolishParam):
|
||||
"""基于诊断问题上下文,AI润色用户编辑后的文本"""
|
||||
user_id = RequestContext.user_id.get()
|
||||
|
||||
async for session in get_db():
|
||||
service = ResumeDiagnoseService(session)
|
||||
ctx = await service.get_issue_for_polish(issue_id, user_id)
|
||||
|
||||
result = await polish_content(
|
||||
module_type=ctx["module_label"],
|
||||
reference_content=ctx["optimized_content"],
|
||||
user_content=param.content,
|
||||
is_summary=ctx["is_summary"],
|
||||
)
|
||||
return {"content": result}
|
||||
|
||||
Reference in New Issue
Block a user