Bull's blog Bull's blog
Resume
  • MBTI 人格测评
  • SBTI 沙雕人格测评
  • AI 人格测评
  • 工具首页
  • 测试工具箱
  • 测试文件下载中心
  • 图片测试文件下载
  • 音频测试文件下载
  • 视频测试文件下载
  • 文档测试文件下载
  • 拼音听写纸
  • 英语单词日课
  • 纸笔游戏
  • AI 播客生成器
  • AI 音乐生成器
  • 晨起习惯清单
  • 书包收拾挑战
  • 工作笔记
  • 分类
  • 标签
  • 归档
  • zh-CN
  • en-US
  • ja-JP

Bull

Resume
  • MBTI 人格测评
  • SBTI 沙雕人格测评
  • AI 人格测评
  • 工具首页
  • 测试工具箱
  • 测试文件下载中心
  • 图片测试文件下载
  • 音频测试文件下载
  • 视频测试文件下载
  • 文档测试文件下载
  • 拼音听写纸
  • 英语单词日课
  • 纸笔游戏
  • AI 播客生成器
  • AI 音乐生成器
  • 晨起习惯清单
  • 书包收拾挑战
  • 工作笔记
  • 分类
  • 标签
  • 归档
  • zh-CN
  • en-US
  • ja-JP
  • superpowers
  • plans
wangyang
2026-08-25
目录

2026-08-25-FDE当前实践PDF与部署实施计划

# FDE 当前实践、PDF 与部署实施计划

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: 将 FDE 页面改为以临床标本库兼职全栈实践为核心,更新测试岗位的 AI Coding 实践,生成两份两页中文 PDF 并按用户选择的 Wiki 发布路径上线。

Architecture: fdeResumeData.json 作为 FDE 公开内容的结构化单一来源,网页配置和 PDF 生成器共同读取;qaResumePdfData.json 保存适合国内招聘版式的测试岗位 PDF 内容,并用事实 ID 与在线页面互相校验。共享页面骨架只增加可选“当前实践”区块并让历史经历可隐藏。PDF 使用同一个 ReportLab 生成器写入 VuePress 公开资源目录,发布前进行文本、页数、逐页渲染和站点构建检查。

Tech Stack: Vue 2 / VuePress 1、JSON、Node.js 20、Python / ReportLab、pdfplumber、Poppler、Git、仓库既有部署脚本。


# 文件结构

  • Create: docs/.vuepress/components/resume/fdeResumeData.json — FDE 网页和 PDF 共用的公开内容。
  • Create: docs/.vuepress/components/resume/qaResumePdfData.json — 测试岗位国内版 PDF 的结构化内容。
  • Modify: docs/.vuepress/components/resume/fdeProfile.js — 只保留页面配置并引用共用数据。
  • Modify: docs/.vuepress/components/resume/qaProfile.js — 更新 AI Coding 实践状态与测试 PDF 下载地址。
  • Modify: docs/.vuepress/components/ResumeProfileShell.vue — 增加可选当前实践区块、隐藏空历史经历区块。
  • Create: scripts/generate_resume_pdfs.py — 从两份 JSON 生成两份两页 A4 中文 PDF。
  • Create: docs/.vuepress/public/file/王杨_FDE_中文简历_2026.pdf — FDE 页面下载文件。
  • Create: docs/.vuepress/public/file/王杨_AI-Native_QA_中文简历_2026.pdf — 测试岗位国内版下载文件。
  • Modify: scripts/test_resume_role_pages.js — 页面结构、数据来源和 PDF 接线回归。
  • Create: scripts/test_fde_resume_pdf.js — PDF 页数、文本和生成器来源契约。
  • Modify: LLM_WIKI/70_个人履历资料库/项目案例/临床标本库自动化端到端交付.md — 记录用户修正的兼职与持续时间。
  • Modify: LLM_WIKI/80_简历组装/岗位方向.md — 记录 FDE 当前实践和 PDF 组装口径。
  • Modify: LLM_WIKI/20_内容体系/简历与个人能力.md — 记录页面与 PDF 的维护入口。
  • Modify: LLM_WIKI/60_现状与待办/当前状态.md — 记录本轮页面、PDF、构建和发布状态。

# Task 1: 用失败测试锁定新页面契约

Files:

  • Modify: scripts/test_resume_role_pages.js

  • Create: scripts/test_fde_resume_pdf.js

  • [ ] Step 1: 写页面失败断言

在 test_resume_role_pages.js 中要求:

const fdeData = JSON.parse(read('docs/.vuepress/components/resume/fdeResumeData.json'))
assert.strictEqual(fdeData.zh.currentPractice.period, '2026年7月 - 至今')
assert.strictEqual(fdeData.zh.currentPractice.mode, '兼职')
assert.doesNotMatch(fdeProfileSource, /experience\s*:/)
assert.match(fdeProfileSource, /王杨_FDE_中文简历_2026\.pdf/)
assert.match(qaProfileSource, /王杨_AI-Native_QA_中文简历_2026\.pdf/)
assert.match(shell, /v-if="copy\.currentPractice"/)
assert.match(shell, /v-if="copy\.experience && copy\.experience\.jobs\.length"/)
1
2
3
4
5
6
7
8
  • [ ] Step 2: 写 PDF 失败断言

test_fde_resume_pdf.js 检查生成器读取 fdeResumeData.json 与 qaResumePdfData.json;两份 PDF 均存在、均为 A4 两页。FDE 包含“临床标本库自动化全栈开发”“兼职”“2026年7月 - 至今”;测试 PDF 包含“AI测试工程师”“AI Coding”“85%”及已确认工作时间线。

  • [ ] Step 3: 运行测试并确认因功能缺失而失败

Run: zsh -lc 'source /Users/ywang/.nvm/nvm.sh; nvm use 20 >/dev/null; node scripts/test_resume_role_pages.js'

Expected: FAIL,缺少 fdeResumeData.json 或新当前实践契约。

Run: zsh -lc 'source /Users/ywang/.nvm/nvm.sh; nvm use 20 >/dev/null; node scripts/test_fde_resume_pdf.js'

Expected: FAIL,缺少 PDF 生成器或 PDF。

# Task 2: 实现 FDE 当前实践与隐藏历史经历

Files:

  • Create: docs/.vuepress/components/resume/fdeResumeData.json

  • Modify: docs/.vuepress/components/resume/fdeProfile.js

  • Modify: docs/.vuepress/components/ResumeProfileShell.vue

  • [ ] Step 1: 抽取 FDE 共用数据

将现有 content 移入 JSON,并用以下结构替换历史经历:

"currentPractice": {
  "title": "当前实践",
  "badge": "兼职 · 2026年7月至今",
  "name": "临床标本库自动化全栈开发",
  "period": "2026年7月 - 至今",
  "mode": "兼职",
  "role": "全栈开发与端到端交付实践",
  "factIds": ["project-specimen-automation-ai-coding"],
  "bullets": []
}
1
2
3
4
5
6
7
8
9
10

bullets 只包含已验证的业务建模、Vue/FastAPI/SQLite 全栈、设备与上下游适配、自动验证和内网交付边界。

  • [ ] Step 2: 让共享骨架支持可选区块

在 Hero 后先渲染 copy.currentPractice;历史经历区块增加:

<section v-if="copy.experience && copy.experience.jobs.length" id="experience" class="section fade-up">
1

QA 没有 currentPractice 时保持原页面;FDE 没有 experience 时不渲染历史时间线。

  • [ ] Step 3: 接入 FDE PDF 下载地址

fdeProfile.js 导入 JSON,并设置:

resumeUrl: '/file/%E7%8E%8B%E6%9D%A8_FDE_%E4%B8%AD%E6%96%87%E7%AE%80%E5%8E%86_2026.pdf'
1
  • [ ] Step 4: 运行页面测试

Run: node scripts/test_resume_role_pages.js

Expected: 页面契约通过;PDF 测试仍因文件缺失失败。

  • [ ] Step 5: 提交页面改动

Commit message: feat: feature current FDE practice

# Task 3: 更新测试岗位 AI Coding 实践与 PDF 数据

Files:

  • Create: docs/.vuepress/components/resume/qaResumePdfData.json

  • Modify: docs/.vuepress/components/resume/qaProfile.js

  • [ ] Step 1: 更新在线测试岗位口径

将临床标本库案例状态改为各语言对应的“兼职 · 2026年7月至今”,保持 2026-08-24 仅在证据行作为快照日期。测试岗位 PDF URL 改为新文件名,旧 PDF 不删除。

  • [ ] Step 2: 建立国内版测试 PDF 数据

两页内容顺序固定为:

第 1 页:姓名与求职方向 → 职业摘要 → AI Coding 兼职实践 → 商汤 / 九坤 / 小米
第 2 页:天眼查 / 讲师 / 马上消费 → AI 测试资产 / ASR 项目 → 技能栈
1
2

使用一栏式 A4、明确年月和职位,不写工作年数,不增加教育信息,不使用无证据成果。

  • [ ] Step 3: 运行页面测试并提交

Run: node scripts/test_resume_role_pages.js

Commit message: feat: update QA AI coding resume content

# Task 4: 生成并验证两份两页 PDF

Files:

  • Create: scripts/generate_resume_pdfs.py

  • Create: docs/.vuepress/public/file/王杨_FDE_中文简历_2026.pdf

  • Create: docs/.vuepress/public/file/王杨_AI-Native_QA_中文简历_2026.pdf

  • Temporary: tmp/pdfs/fde-resume-page-*.png、tmp/pdfs/qa-resume-page-*.png

  • [ ] Step 1: 标记 PDF 创建操作

在 PDF skill 目录运行且只运行一次:

Run: node container_tools/mark_artifact_operation_started.mjs --operation-kind create --expected-output-count 2 --output-format pdf

  • [ ] Step 2: 实现生成器

生成器读取 fdeResumeData.json 和 qaResumePdfData.json,使用 /System/Library/Fonts/Supplemental/Arial Unicode.ttf,每份固定 A4 两页:

FDE_DATA_PATH = ROOT / 'docs/.vuepress/components/resume/fdeResumeData.json'
QA_DATA_PATH = ROOT / 'docs/.vuepress/components/resume/qaResumePdfData.json'
FDE_OUTPUT_PATH = ROOT / 'docs/.vuepress/public/file/王杨_FDE_中文简历_2026.pdf'
QA_OUTPUT_PATH = ROOT / 'docs/.vuepress/public/file/王杨_AI-Native_QA_中文简历_2026.pdf'
1
2
3
4

FDE 第 1 页为定位与当前兼职实践,第 2 页为临床案例、其他代表项目、技能和事实边界;测试版采用国内招聘一栏式时间线。不得写正式 FDE 任职、生产验收完成或固定人效倍数。

  • [ ] Step 3: 生成 PDF

Run: uv run --with reportlab --with pdfplumber --with pypdf python scripts/generate_resume_pdfs.py

Expected: 输出两份 PDF,生成器自行断言每份页数为 2。

  • [ ] Step 4: 执行机器检查

Run: node scripts/test_fde_resume_pdf.js

Run: pdfinfo 'docs/.vuepress/public/file/王杨_FDE_中文简历_2026.pdf' && pdfinfo 'docs/.vuepress/public/file/王杨_AI-Native_QA_中文简历_2026.pdf'

Expected: 两份都为 Pages: 2 且 A4。

  • [ ] Step 5: 渲染并逐页检查

Run: mkdir -p tmp/pdfs && pdftoppm -png 'docs/.vuepress/public/file/王杨_FDE_中文简历_2026.pdf' tmp/pdfs/fde-resume-page && pdftoppm -png 'docs/.vuepress/public/file/王杨_AI-Native_QA_中文简历_2026.pdf' tmp/pdfs/qa-resume-page

检查四页 PNG 的裁切、重叠、黑块、字体、留白、页脚和分页;发现问题时修改生成器、重新生成并重新渲染。

  • [ ] Step 6: 提交 PDF 与生成器

Commit message: feat: add two-page role resume PDFs

# Task 5: 同步 Wiki 与维护规则

Files:

  • Modify: LLM_WIKI/70_个人履历资料库/项目案例/临床标本库自动化端到端交付.md

  • Modify: LLM_WIKI/80_简历组装/岗位方向.md

  • Modify: LLM_WIKI/20_内容体系/简历与个人能力.md

  • Modify: LLM_WIKI/60_现状与待办/当前状态.md

  • Modify: scripts/test_llm_wiki.js

  • [ ] Step 1: 先添加 Wiki 失败断言

要求 Wiki 同时包含 2026年7月 - 至今、兼职、两份 PDF 文件名和生成器路径。

  • [ ] Step 2: 运行并确认 Wiki 测试失败

Run: node scripts/test_llm_wiki.js

Expected: FAIL,缺少新口径或 PDF 维护入口。

  • [ ] Step 3: 更新事实和维护入口

将项目持续时间改为用户确认的 2026-07 / 至今,参与方式标记为兼职个人实践;说明快照日期仍是快照,不等于持续验收。记录两份 PDF 的数据入口和生成器,不手工覆盖事实。

  • [ ] Step 4: 运行 Wiki 测试并提交

Run: node scripts/test_llm_wiki.js

Expected: PASS。

Commit message: docs: document FDE resume generation

# Task 6: 完整验证与构建

Files:

  • Verify only: 目标变更文件与构建产物

  • [ ] Step 1: 运行全部定向检查

Run under Node 20:

node scripts/test_resume_role_pages.js
node scripts/test_fde_resume_pdf.js
node scripts/test_resume_profile_consistency.js
node scripts/test_navigation_i18n_theme.js
node scripts/test_llm_wiki.js
node scripts/test_deploy_smoke_wiring.js
1
2
3
4
5
6
  • [ ] Step 2: 隐私和范围检查

检查 PDF、FDE 数据、案例和 Wiki 不含患者信息、凭据、内网地址或来源原件;确认 independent project/ 未进入分支。

  • [ ] Step 3: Node 20 完整构建

Run: npm run build

Expected: Client、Server 和 postbuild 成功;记录既有警告。

  • [ ] Step 4: 清理构建自动生成源文件并复验

只删除本次构建产生的未跟踪英日 fallback;不处理 utils/config.yml 的既有换行差异。重新运行定向测试和 git diff --check。

  • [ ] Step 5: 本地页面验收

核对 /resume-fde/ 不再显示历史“相关经历”,首个核心区块显示兼职和持续时间,PDF 下载成功且为两页;核对 /resume-v2/ 的 AI Coding 状态、三语内容和新测试 PDF 下载均正确。

# Task 7: 按 Wiki 发布并做线上冒烟

Files:

  • Execute: 用户明确选择的唯一部署脚本

  • Verify: 线上 /resume-fde/、PDF、案例页和 Wiki 规定的冒烟入口

  • [ ] Step 1: 确认发布提交和唯一目标

检查工作树仅有不纳管的 utils/config.yml 换行差异;记录 git rev-parse HEAD。只接受用户明确回复的“生产服务器”或“GitHub Pages”。

  • [ ] Step 2: 执行所选路径

生产服务器:npm run deploy:aliyun

GitHub Pages:npm run deploy

不得同时执行两条路径。

  • [ ] Step 3: 线上 FDE 专项冒烟

检查所选目标对应域名的 /resume-fde/、/resume-v2/、/pages/case-d-specimen-automation/ 和两份新 PDF 返回 200;下载两份 PDF 后确认各为两页,页面包含“兼职”和“2026年7月”。

  • [ ] Step 4: 记录发布结果

报告发布提交、目标、脚本结果、专项冒烟、仍未验证业务能力和临时文件状态。失败时停在原始失败点,不自动切换发布路径、不连续重启、不猜测回滚。

上次更新: 2026/08/25, 04:52:27
最近更新
01
asr-translation-accuracy-benchmark
08-25
02
resume-fde
08-25
03
case-d-specimen-automation
08-25
更多文章>
Theme by Vdoing | Copyright © 2018-2026 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式