AI定制专属简历和简历预览调整

This commit is contained in:
2026-07-07 11:34:14 +08:00
parent 9e791345f2
commit b740e0cd39
10 changed files with 483 additions and 197 deletions
+9 -2
View File
@@ -125,7 +125,7 @@
</div>
<!-- 模式3简历预览 -->
<div v-else-if="rightPanelMode === 'resume'" class="agent-main__right-resume">
<JobResumeTemplate ref="applyResumeTemplateRef" :resume-data="applyResumeData" />
<JobResumeTemplate ref="applyResumeTemplateRef" :resume-data="applyResumeData" :mode="applyResumeMode" />
</div>
<!-- 模式4岗位预览 -->
<AgentJobPreviewPanel
@@ -675,6 +675,9 @@ const applyResumeData = ref<ResumeTemplateData>({} as ResumeTemplateData)
/** 右侧面板简历模板组件引用 */
const applyResumeTemplateRef = ref<InstanceType<typeof JobResumeTemplate> | null>(null)
/** 简历模板模式:preview=预览,export=导出 */
const applyResumeMode = ref<'preview' | 'export'>('preview')
/** 进度条定时器 */
let progressTimer: ReturnType<typeof setInterval> | null = null
@@ -879,7 +882,8 @@ async function handleConfirmResumeStep(index: number) {
progressItem.step = 3
saveProgressToStorage()
// 生成 PDF 并缓存到 localStorage
// 切换到导出模式(大padding
applyResumeMode.value = 'export'
await nextTick()
const element = applyResumeTemplateRef.value?.resumeRef
if (element) {
@@ -893,8 +897,11 @@ async function handleConfirmResumeStep(index: number) {
}
}
}
// 恢复预览模式
applyResumeMode.value = 'preview'
} catch (e) {
console.error('[Agent] 简历PDF缓存失败', e)
applyResumeMode.value = 'preview'
}
}
+84 -7
View File
@@ -1193,7 +1193,21 @@ async function updateModuleContent(item: FixAllSubmitItem) {
// 更新个人概述
const newSummary = item.newContent as string
resumeMain.value.summary = newSummary
await saveResumeMain({ resumeId, summary: newSummary })
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: resumeMain.value.portfolioUrl || '',
skills: resumeMain.value.skills || [],
certificates: resumeMain.value.certificates || [],
summary: newSummary,
})
return
}
@@ -1230,7 +1244,21 @@ async function handleFixSubmit(content: string[]) {
// 个人概述:content 只有一个元素,直接更新 summary 字段
const newSummary = content.join('\n')
resumeMain.value.summary = newSummary
await saveResumeMain({ resumeId, summary: newSummary })
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: resumeMain.value.portfolioUrl || '',
skills: resumeMain.value.skills || [],
certificates: resumeMain.value.certificates || [],
summary: newSummary,
})
} else {
// 5 大经历模块:找到对应经历记录,按 id 对应更新 description 数组里的 text
const listMap: Record<string, any[]> = {
@@ -1529,9 +1557,11 @@ function openEditDrawer(section: string) {
async function handleSaveEdit(data: Record<string, any>) {
try {
if (editModule.value === 'info') {
// 保存基本信息到简历主表(含作品集链接)
// 保存基本信息到简历主表(含作品集链接)— 传入完整主表字段
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: data.name,
email: data.email,
mobileNumber: data.phone,
@@ -1539,6 +1569,9 @@ async function handleSaveEdit(data: Record<string, any>) {
regionCode: data.location || '',
wechatNumber: data.wechat,
portfolioUrl: data.portfolioUrl,
skills: resumeMain.value.skills || [],
certificates: resumeMain.value.certificates || [],
summary: resumeMain.value.summary || '',
})
resumeMain.value.name = data.name
resumeMain.value.email = data.email
@@ -1548,9 +1581,20 @@ async function handleSaveEdit(data: Record<string, any>) {
resumeMain.value.wechatNumber = data.wechat
resumeMain.value.portfolioUrl = data.portfolioUrl
} else if (editModule.value === 'summary') {
// 保存个人概述到简历主表
// 保存个人概述到简历主表 — 传入完整主表字段
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: resumeMain.value.portfolioUrl || '',
skills: resumeMain.value.skills || [],
certificates: resumeMain.value.certificates || [],
summary: data.summary,
})
resumeMain.value.summary = data.summary
@@ -1685,24 +1729,57 @@ async function handleSaveEdit(data: Record<string, any>) {
}
await Promise.all([...addPromises, ...updatePromises, ...deletePromises])
} else if (editModule.value === 'portfolio') {
// 保存作品集链接到简历主表
// 保存作品集链接到简历主表 — 传入完整主表字段
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: data.portfolioUrl,
skills: resumeMain.value.skills || [],
certificates: resumeMain.value.certificates || [],
summary: resumeMain.value.summary || '',
})
resumeMain.value.portfolioUrl = data.portfolioUrl
} else if (editModule.value === 'skills') {
// 保存技能到简历主表
// 保存技能到简历主表 — 传入完整主表字段
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: resumeMain.value.portfolioUrl || '',
skills: [...data.skills],
certificates: resumeMain.value.certificates || [],
summary: resumeMain.value.summary || '',
})
resumeMain.value.skills = [...data.skills]
} else if (editModule.value === 'certificate') {
// 保存证书到简历主表
// 保存证书到简历主表 — 传入完整主表字段
await saveResumeMain({
resumeId,
resumeName: resumeMain.value.resumeName,
targetPosition: resumeMain.value.targetPosition,
name: resumeMain.value.name || '',
email: resumeMain.value.email || '',
mobileNumber: resumeMain.value.mobileNumber || '',
city: resumeMain.value.city || '',
regionCode: resumeMain.value.regionCode || '',
wechatNumber: resumeMain.value.wechatNumber || '',
portfolioUrl: resumeMain.value.portfolioUrl || '',
skills: resumeMain.value.skills || [],
certificates: [...data.certificates],
summary: resumeMain.value.summary || '',
})
resumeMain.value.certificates = [...data.certificates]
}