定制简历 添加 原简历id 简历名字段

This commit is contained in:
zk
2026-06-18 16:36:03 +08:00
parent 0ddc4b5a6b
commit 1edc28e332
4 changed files with 26 additions and 11 deletions
+21 -8
View File
@@ -72,8 +72,11 @@ def _rollback_key(user_id: int, job_id: int) -> str:
return f"{ROLLBACK_PREFIX}{user_id}:{job_id}"
async def save(user_id: int, job_id: int, cr: CustomizeResume) -> None:
"""保存定制简历:备份旧版本到 Redis 用于回滚 + 写数据库"""
async def save(user_id: int, job_id: int, cr: CustomizeResume, resume_id: int | None = None, resume_name: str | None = None) -> None:
"""保存定制简历:备份旧版本到 Redis 用于回滚 + 写数据库
resume_id / resume_name 仅在首次创建(INSERT)时写入,UPDATE 不更新。
"""
content = cr.model_dump(by_alias=True)
async for session in get_db():
@@ -86,23 +89,33 @@ async def save(user_id: int, job_id: int, cr: CustomizeResume) -> None:
await session.execute(update(UserJobCustomizeResume).where(
UserJobCustomizeResume.id == record.id).values(content=content))
else:
session.add(UserJobCustomizeResume(id=next_id(), user_id=user_id, job_id=job_id, content=content))
session.add(UserJobCustomizeResume(id=next_id(), user_id=user_id, job_id=job_id, resume_id=resume_id, resume_name=resume_name, content=content))
async def get(user_id: int, job_id: int) -> dict | None:
"""查询定制简历,查不到则加载默认简历构建返回"""
data = None
"""查询定制简历,查不到则加载默认简历构建返回
返回结构:{id, resumeId, resumeName, resume, education, work, internship, project, competition}
fallback 默认简历时:id=None, resumeId=默认简历id, resumeName=原简历名
"""
async for session in get_db():
result = await session.execute(select(UserJobCustomizeResume).where(
UserJobCustomizeResume.user_id == user_id, UserJobCustomizeResume.job_id == job_id))
result = await session.execute(select(UserJobCustomizeResume).where(UserJobCustomizeResume.user_id == user_id, UserJobCustomizeResume.job_id == job_id))
record = result.scalar_one_or_none()
if record:
data = CustomizeResume.model_validate(record.content).model_dump(by_alias=True)
data["id"] = record.id
data["resumeId"] = record.resume_id
data["resumeName"] = record.resume_name
return data
else:
# 没有定制简历,加载默认简历构建
detail = await load_default_resume_detail(session, user_id)
data = build_from_detail(detail).model_dump(by_alias=True)
return data
data["id"] = None
data["resumeId"] = detail.resume.id
data["resumeName"] = detail.resume.resume_name or ""
return data
return None
async def rollback(user_id: int, job_id: int) -> None: