2026-08-25-测试与FDE独立在线简历实施计划
# 测试与 FDE 独立在线简历实施计划
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 在博客中交付可通过不同 URL 发送的测试岗位简历与中文 FDE 简历,并把临床标本库自动化 AI Coding 实践接入可追溯的履历事实、组装规则和公开案例。
Architecture: 保留 /resume-v2/ 作为测试简历,新建 /resume-fde/。把当前 ResumeLandingV2.vue 拆为共享 ResumeProfileShell.vue、测试岗位配置和 FDE 配置,两个薄页面组件只负责选择配置;所有职业事实先进入 70 模块,再由 80 模块和公开页面引用。
Tech Stack: VuePress 1、Vue 2 单文件组件、JavaScript、Markdown、Node.js 20、Node assert 回归脚本。
# 文件结构
# 新建
LLM_WIKI/70_个人履历资料库/项目案例/临床标本库自动化端到端交付.md:项目事实、证据快照与公开边界。docs/.vuepress/components/resume/qaProfile.js:测试岗位中英日内容和页面配置。docs/.vuepress/components/resume/fdeProfile.js:FDE 中文内容和页面配置。docs/.vuepress/components/ResumeProfileShell.vue:共享布局、语言、留言、统计和可选 PDF 行为。docs/.vuepress/components/ResumeLandingFDE.vue:FDE 薄接线组件。docs/resume-fde.md:FDE 中文页面入口。docs/pages/case-d-specimen-automation.md:脱敏文字版项目案例。scripts/test_resume_role_pages.js:双岗位页面结构、内容边界和共享骨架回归。
# 修改
docs/.vuepress/components/ResumeLandingV2.vue:改为测试岗位薄接线组件。scripts/test_resume_profile_consistency.js:从测试岗位配置读取内容并增加新案例断言。scripts/test_navigation_i18n_theme.js:从测试岗位配置读取三语内容,继续验证路由与语言一致性。scripts/test_llm_wiki.js:登记新项目、来源哈希和事实引用检查。LLM_WIKI/70_个人履历资料库/README.md:登记三份来源及来源仓库快照。LLM_WIKI/70_个人履历资料库/能力与成果.md:增加 AI Coding、端到端交付和证据化验证能力。LLM_WIKI/70_个人履历资料库/待核实信息.md:记录现场验收、ROI 和正式 FDE 经验边界。LLM_WIKI/80_简历组装/README.md:增加两个公开页面的组装关系。LLM_WIKI/80_简历组装/岗位方向.md:明确测试与 FDE 的事实选择和排序。LLM_WIKI/80_简历组装/措辞素材.md:增加项目的测试/FDE 两套措辞。LLM_WIKI/80_简历组装/组装规则.md:增加快照数字、方向标题和真实职位分离规则。LLM_WIKI/80_简历组装/待验证方向.md:关闭已有证据支持的现场需求与内网交付缺口,保留正式任职等缺口。LLM_WIKI/10_博客结构/技术架构.md:登记共享简历骨架和新页面。LLM_WIKI/10_博客结构/页面与路由地图.md:登记/resume-fde/和新案例路由。LLM_WIKI/20_内容体系/简历与个人能力.md:更新双岗位页面、案例和验证关系。LLM_WIKI/20_内容体系/AI与LLM内容.md:登记新的 AI Coding 案例。LLM_WIKI/60_现状与待办/当前状态.md:更新实施状态。
utils/config.yml 在隔离工作区中存在已知 CRLF/LF 差异;所有提交必须显式排除该文件。
# Task 1:先锁定双岗位页面与事实契约
Files:
Create:
scripts/test_resume_role_pages.jsModify:
scripts/test_resume_profile_consistency.jsModify:
scripts/test_navigation_i18n_theme.jsModify:
scripts/test_llm_wiki.js[ ] Step 1:编写双岗位页面失败测试
新脚本读取 FDE 入口、两个页面组件、共享骨架、两个岗位配置和公开案例,至少包含以下契约:
assert.match(fdePage, /permalink:\s*\/resume-fde\//) assert.match(fdePage, /name:\s*ResumeLandingFDE/) assert.match(qaWrapper, /ResumeProfileShell/) assert.match(fdeWrapper, /ResumeProfileShell/) assert.doesNotMatch(fdeWrapper, /resume-v2|setLocale|resumeUrl/) assert.match(fdeProfileSource, /supportedLocales:\s*\['zh'\]/) assert.match(fdeProfileSource, /resumeUrl:\s*''/) assert.match(fdeProfileSource, /project-specimen-automation-ai-coding/) assert.doesNotMatch(fdeProfileSource, /正式FDE|生产验收完成|固定人效倍数/) assert.match(qaProfileSource, /case-d-specimen-automation/) assert.match(fdeProfileSource, /case-d-specimen-automation/) assert.doesNotMatch(siteConfig, /resume-fde/)1
2
3
4
5
6
7
8
9
10
11
12另外断言共享骨架使用
profile.content、按supportedLocales控制语言按钮、只在profile.resumeUrl存在时显示 PDF,以及UploadData与主动事件载荷都使用岗位配置中的trackingViewEvent、trackingPage和trackingSource。[ ] Step 2:调整现有测试的内容来源
将两个现有脚本中的测试岗位内容来源改为
docs/.vuepress/components/resume/qaProfile.js,保留以下既有契约:const qaProfileSource = read('docs/.vuepress/components/resume/qaProfile.js') const resumeContent = extractObject(qaProfileSource, 'content', '\n\nexport { content }') assert.strictEqual(Object.keys(resumeContent).sort().join(','), 'en,ja,zh')1
2
3extractObject增加可选结束标记参数,默认仍使用\n\nexport default,避免影响首页与留言板测试。[ ] Step 3:扩展 Wiki 失败测试
在必需文件列表中加入新项目文件,并断言三个来源哈希:
for (const sourceHash of [ '023df8d24779ddfe7444eb7bd431446eeb17973416bc9bd3c8510aa78606f303', '5a3b2a156ae46234545aa01db84787329ba3cc9b7fc631fe8b73402acd3df208', 'dab4012e771038f8d85be7c04cb34cba1f961fde03763cdc8fa88b84b314af4e' ]) { assert.match(careerReadme, new RegExp(sourceHash)) }1
2
3
4
5
6
7对新项目再断言
period、visibility: public和来源 ID;扩展敏感模式,禁止履历 Wiki 出现 IPv4、patient、患者、Bearer、token=。[ ] Step 4:运行测试并确认按预期失败
运行:
source ~/.nvm/nvm.sh && nvm use 20 node scripts/test_resume_role_pages.js node scripts/test_resume_profile_consistency.js node scripts/test_navigation_i18n_theme.js node scripts/test_llm_wiki.js1
2
3
4
5预期:双岗位脚本因 FDE 页面与共享骨架不存在而失败;其余脚本因测试岗位配置或新事实文件不存在而失败。失败原因必须是功能缺失,不得是脚本语法错误。
[ ] Step 5:提交失败测试
git add scripts/test_resume_role_pages.js scripts/test_resume_profile_consistency.js scripts/test_navigation_i18n_theme.js scripts/test_llm_wiki.js git commit -m "test: define QA and FDE resume contracts"1
2
# Task 2:登记临床标本库项目事实与组装规则
Files:
Create:
LLM_WIKI/70_个人履历资料库/项目案例/临床标本库自动化端到端交付.mdModify:
LLM_WIKI/70_个人履历资料库/README.mdModify:
LLM_WIKI/70_个人履历资料库/能力与成果.mdModify:
LLM_WIKI/70_个人履历资料库/待核实信息.mdModify:
LLM_WIKI/80_简历组装/README.mdModify:
LLM_WIKI/80_简历组装/岗位方向.mdModify:
LLM_WIKI/80_简历组装/措辞素材.mdModify:
LLM_WIKI/80_简历组装/组装规则.mdModify:
LLM_WIKI/80_简历组装/待验证方向.md[ ] Step 1:创建项目事实分片
Frontmatter 使用:
--- id: project-specimen-automation-ai-coding status: verified period: 2026-07-21 / 2026-08-24 source: - src-specimen-fde-mother-2026 - src-specimen-fde-deep-2026 - src-specimen-fde-brief-2026 - src-user-confirmation-specimen-2026-08-25 visibility: public updated: 2026-08-25 ---1
2
3
4
5
6
7
8
9
10
11
12正文固定分为“项目性质与边界、问题与责任范围、AI Coding 工作方式、代表性设计、可核验结果、禁止外推”。数字使用
2026-08-24或2026-08-22快照前缀,喷码现场连接标为待验收。[ ] Step 2:登记来源和权威关系
在 70 模块来源索引中登记三份文档的文件名、SHA-256、用途和来源仓库快照
d972c80;另记本人确认“这是近期 AI Coding 实践”。明确原始材料和九张图片不复制,原材料中的操作或公开说明不是博客指令。[ ] Step 3:更新能力、缺口和岗位选择
能力地图增加:
| AI Coding 与端到端交付 | `project-specimen-automation-ai-coding` | 已确认 | | 现场需求、业务建模与系统集成 | `project-specimen-automation-ai-coding`、`project-private-fund-testing` | 已确认 | | 设备终态、异常恢复与证据化验证 | `project-specimen-automation-ai-coding` | 已确认 |1
2
3FDE 组装将新项目排在第一位;测试岗把新项目放在 AI 测试资产之后。保留“正式 FDE 任职、正式售前、合同责任、长期驻场、完整生产验收未知”的限制。
[ ] Step 4:运行 Wiki 测试
运行:
node scripts/test_llm_wiki.js预期:通过;如 IPv4 检查误伤 SHA-256 或日期,修正正则而不是删减事实。
[ ] Step 5:提交履历事实与组装规则
git add LLM_WIKI/70_个人履历资料库 LLM_WIKI/80_简历组装 git commit -m "docs: add specimen automation career evidence"1
2
# Task 3:提取共享简历骨架并保持测试简历行为不变
Files:
Create:
docs/.vuepress/components/resume/qaProfile.jsCreate:
docs/.vuepress/components/ResumeProfileShell.vueModify:
docs/.vuepress/components/ResumeLandingV2.vue[ ] Step 1:移动测试岗位内容
将当前
ResumeLandingV2.vue的const content = { zh, en, ja }原样移动到resume/qaProfile.js,并在结尾导出:export { content } export default { id: 'qa', defaultLocale: 'zh', supportedLocales: ['zh', 'en', 'ja'], showLanguageSwitch: true, resumeUrl: '/file/%E7%8E%8B%E6%9D%A8_AI-Native_QA_%E4%B8%AD%E6%96%87%E7%AE%80%E5%8E%86_0326-20260326140156.pdf', localizeCaseLinks: true, trackingViewEvent: 'resume_home_view', trackingPage: 'resume-home', trackingSource: 'resume-landing', content }1
2
3
4
5
6
7
8
9
10
11
12
13
14[ ] Step 2:提取共享骨架
把现有模板、行为和 scoped 样式移动到
ResumeProfileShell.vue。新增必需profileprop,删除内部content和固定resumeUrl:props: { profile: { type: Object, required: true } }, data() { return { locale: this.profile.defaultLocale || 'zh', trackingReady: false, trackingEndpoint: 'https://wangmouren.online:9000/save_data_pv', visitorKey: '', visitId: '', fingerprintInfo: '', clientKind: '', deviceType: '', browserFamily: '', osFamily: '' } }, computed: { copy() { return this.profile.content[this.locale] || this.profile.content[this.profile.defaultLocale] || this.profile.content.zh }, supportedLocales() { return Array.isArray(this.profile.supportedLocales) ? this.profile.supportedLocales : ['zh'] } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25模板使用
v-if="profile.showLanguageSwitch"包裹语言控制,使用v-if="profile.resumeUrl"包裹 PDF 按钮;下载和链接分别读取profile.resumeUrl、profile.localizeCaseLinks。UploadData使用profile.trackingViewEvent、profile.trackingPage、profile.trackingSource,主动事件载荷也使用相同的 page/source 配置。[ ] Step 3:建立测试岗位薄组件
ResumeLandingV2.vue只保留:<template> <ResumeProfileShell :profile="qaProfile" /> </template> <script> import ResumeProfileShell from './ResumeProfileShell.vue' import qaProfile from './resume/qaProfile' export default { name: 'ResumeLandingV2', components: { ResumeProfileShell }, data() { return { qaProfile } } } </script>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[ ] Step 4:运行既有测试验证重构
运行:
node scripts/test_resume_profile_consistency.js node scripts/test_navigation_i18n_theme.js1
2预期:均通过;
test_resume_role_pages.js仍因 FDE 文件缺失而失败。[ ] Step 5:提交共享骨架重构
git add docs/.vuepress/components/ResumeProfileShell.vue docs/.vuepress/components/ResumeLandingV2.vue docs/.vuepress/components/resume/qaProfile.js git commit -m "refactor: share resume presentation shell"1
2
# Task 4:实现中文 FDE 页面与脱敏项目案例
Files:
Create:
docs/.vuepress/components/resume/fdeProfile.jsCreate:
docs/.vuepress/components/ResumeLandingFDE.vueCreate:
docs/resume-fde.mdCreate:
docs/pages/case-d-specimen-automation.md[ ] Step 1:创建 FDE 岗位配置
配置接口必须为:
const content = { zh: { hero: { name: '王杨', role: 'FDE 方向 · 复杂场景交付与 AI Coding', roleShort: 'FDE 方向', summary: '以质量工程和复杂业务建模为基础,近期完成临床标本库自动化端到端 AI Coding 实践,覆盖现场需求、业务模型、前后端、上下游适配、自动验证与内网交付。', highlights: [ { title: '现场问题建模', desc: '从真实操作、旧系统和设备约束中提炼对象、状态、不变量与恢复路径' }, { title: '端到端交付', desc: '覆盖 Vue / FastAPI / SQLite、上下游适配、Mock、回归与 Windows 内网交付' }, { title: 'AI Coding 治理', desc: 'AI 扩大实现与复核带宽,业务判断、真实写操作和现场验收由人控制' } ] }, experience: { title: '相关经历', badge: '真实职位 · FDE 视角', jobs: [] }, cases: { title: '重点项目', badge: '复杂场景交付实践', items: [] }, skills: { title: '能力与技术', groups: [] }, footer: { copy: '© 2026 王杨 · 更新于 2026/08/25' } } } export { content } export default { id: 'fde', defaultLocale: 'zh', supportedLocales: ['zh'], showLanguageSwitch: false, resumeUrl: '', localizeCaseLinks: false, trackingViewEvent: 'resume_fde_view', trackingPage: 'resume-fde', trackingSource: 'resume-landing-fde', content }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33jobs使用与测试岗位完全一致的六段公司、月份和真实职位,只调整 bullet 选择;每段增加内部factIds。cases依次使用project-specimen-automation-ai-coding、project-private-fund-testing、project-ai-test-assets-agent。[ ] Step 2:创建 FDE 薄组件和页面入口
薄组件只传入
fdeProfile。页面 frontmatter 使用:--- title: FDE Resume date: 2026-08-25 12:00:00 permalink: /resume-fde/ sidebar: false article: false comment: false editLink: false lastUpdated: false pageClass: resume-page pageComponent: name: ResumeLandingFDE messageBoard: enabled: true pageKey: resume-fde source: resume-landing-fde title: 给我留言 description: 如果你对我的项目、交付经历或合作方向有问题,可以在这里留言。 ---1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[ ] Step 3:创建脱敏案例页
固定 permalink 为
/pages/case-d-specimen-automation/,正文依次写:项目背景、责任范围、三层真值、代表性设计、AI Coding 人机边界、证据矩阵、未验收项。不得复制图片或出现医院、患者、账号、验证码、Token、密码、内网 IP、内部 URL。[ ] Step 4:运行双岗位测试并修到通过
运行:
node scripts/test_resume_role_pages.js预期:通过。
[ ] Step 5:提交 FDE 页面与案例
git add docs/.vuepress/components/resume/fdeProfile.js docs/.vuepress/components/ResumeLandingFDE.vue docs/resume-fde.md docs/pages/case-d-specimen-automation.md git commit -m "feat: add standalone FDE resume"1
2
# Task 5:把新实践接入测试岗位三语简历
Files:
Modify:
docs/.vuepress/components/resume/qaProfile.jsModify:
scripts/test_resume_profile_consistency.js[ ] Step 1:先增加三语失败断言
对
zh、en、ja各断言一个factIds包含project-specimen-automation-ai-coding的项目卡片,三种语言都链接/pages/case-d-specimen-automation/,并断言重点项目不再包含project-private-fund-testing。[ ] Step 2:运行测试确认失败
运行:
node scripts/test_resume_profile_consistency.js预期:因测试岗位尚未包含新项目而失败。
[ ] Step 3:替换测试岗位第三项重点项目
三语顺序统一为:
- AI 测试资产与 Agent 执行;
- 临床标本库自动化端到端交付;
- ASR Benchmark。
新项目卡片统一表达:复杂旧系统与三类设备边界、AI Coding 扩大交付带宽、Mock/自动回归/现场证据分级;结果数字必须写成
2026-08-24离线快照,不写生产验收或效率倍数。[ ] Step 4:运行三语与双岗位回归
运行:
node scripts/test_resume_profile_consistency.js node scripts/test_navigation_i18n_theme.js node scripts/test_resume_role_pages.js1
2
3预期:全部通过。
[ ] Step 5:提交测试岗位内容更新
git add docs/.vuepress/components/resume/qaProfile.js scripts/test_resume_profile_consistency.js git commit -m "docs: feature AI coding practice in QA resume"1
2
# Task 6:同步 Wiki 地图并完成本地验收
Files:
Modify:
LLM_WIKI/10_博客结构/技术架构.mdModify:
LLM_WIKI/10_博客结构/页面与路由地图.mdModify:
LLM_WIKI/20_内容体系/简历与个人能力.mdModify:
LLM_WIKI/20_内容体系/AI与LLM内容.mdModify:
LLM_WIKI/60_现状与待办/当前状态.mdVerify: all changed files
[ ] Step 1:同步页面、组件与内容地图
登记
/resume-fde/、/pages/case-d-specimen-automation/、共享骨架、两个岗位配置、FDE 中文限定、测试 PDF 保留、FDE 无 PDF、首页和导航不增加 FDE 入口。[ ] Step 2:运行全部定向测试
source ~/.nvm/nvm.sh && nvm use 20 node scripts/test_resume_role_pages.js node scripts/test_resume_profile_consistency.js node scripts/test_navigation_i18n_theme.js node scripts/test_llm_wiki.js git diff --check1
2
3
4
5
6预期:全部退出 0;
utils/config.yml换行差异不进入 diff 或暂存区。[ ] Step 3:运行完整构建
运行:
npm run build预期:VuePress 客户端和服务端编译成功,静态文件生成成功,post-build i18n 成功。已知目录/frontmatter 警告可以记录,但不得出现新编译错误。
[ ] Step 4:清理构建临时文件并检查隐私
只删除本轮构建自动生成、Git 原先未跟踪的英文/日文回退 Markdown。运行:
rg -n "10\.21\.|Bearer|token=|患者|patient|验证码|密码" \ LLM_WIKI/70_个人履历资料库 \ docs/pages/case-d-specimen-automation.md \ docs/.vuepress/components/resume git status --short git diff --cached --name-only1
2
3
4
5
6预期:敏感搜索无命中;最终状态只包含任务文件和已知
utils/config.yml换行差异,不包含independent project/、现场图片、来源 HTML 或 PDF。[ ] Step 5:提交 Wiki 同步
git add LLM_WIKI/10_博客结构 LLM_WIKI/20_内容体系 LLM_WIKI/60_现状与待办/当前状态.md git commit -m "docs: map standalone resume pages"1
2[ ] Step 6:完成分支审查
检查相对
main的完整 diff、提交列表和最终状态;确认没有部署、推送、PDF 替换或来源仓库写入,然后进入superpowers:finishing-a-development-branch。