PR #2:Q2-001 文章 CRUD 全栈首业务 + B 层 CI 棘轮首次实测激活#2
按源仓库 anta-workshopdemo 的方向 D 指令,在目标项目做第一个真实业务需求——首次让 B 层 5 个 CI stage 从「空项目幂等跳过」升级为「实测棘轮通过」。
anta-workshopdemo
这是 LESSONS §四 Step 6「B 层阈值归零起点 → 首次业务代码后上调」的首次真实激活——之前的 PR #1(CI bootstrap)证明了 A 层元 CI 在远端可跑,本 PR 完成 B 层业务 CI 在真实业务代码上的首次绿灯闭环。
同时关闭 CHECKPOINT §五 Q2-T-01 + Q2-T-02 两条待办。
5 个 commits 分层推进
docs(req)
chore(init)
feat(article)
isDeleted
test(article)
chore(ratchet)
本地 14/14 CI stages 全绿(A 层 9 实跑 + B 层 5 首次实测不再是幂等跳过)
真实编译验证(meta-principles §原则 1)
mvn -B compile
npm run build
单元测试实测
mvn -B test
npx vitest run --coverage
B 层首次棘轮阈值(8 处同步写入)
scripts/ci/backend/check-backend-coverage.sh LINE_MIN
scripts/ci/backend/check-backend-coverage.sh BRANCH_MIN
backend/pom.xml jacoco.line.min
backend/pom.xml jacoco.branch.min
scripts/ci/frontend/check-frontend-test.sh LINE_MIN
scripts/ci/frontend/check-frontend-test.sh BRANCH_MIN
frontend/vite.config.ts thresholds.lines
frontend/vite.config.ts thresholds.branches
验证证据链:本地 backend-coverage 实测 行覆盖: 36% 保底: 36% + 分支覆盖: 46% 保底: 46% → [OK] 达标;前端同理 18/50 等于实测正好通过。这是"当前真实水平 = 保底"的完美落地。
行覆盖: 36% 保底: 36%
分支覆盖: 46% 保底: 46%
[OK] 达标
B 层 CI 状态变化:空项目幂等跳过 → 真实代码实测棘轮通过(5 个 stage)
CHECKPOINT §五 待办变化
发现的业务开发摩擦(4 条,本次不入正式演练报告,登记到 CHECKPOINT §四 轮次 2)
--fields
str/bool
string/boolean
68/107
本 PR 不动的事
rules/git-conventions.md §四
docs/requirements/Q2-001.md
动机(Why)
按源仓库
anta-workshopdemo的方向 D 指令,在目标项目做第一个真实业务需求——首次让 B 层 5 个 CI stage 从「空项目幂等跳过」升级为「实测棘轮通过」。这是 LESSONS §四 Step 6「B 层阈值归零起点 → 首次业务代码后上调」的首次真实激活——之前的 PR #1(CI bootstrap)证明了 A 层元 CI 在远端可跑,本 PR 完成 B 层业务 CI 在真实业务代码上的首次绿灯闭环。
同时关闭 CHECKPOINT §五 Q2-T-01 + Q2-T-02 两条待办。
变更清单(What)
5 个 commits 分层推进
docs(req)a73de07:需求扩写 Q2-001(9 章节 / 208 行 / 8 个 AC)+ require_analysis JSON 产物(category=fullstack, complexity=complex)chore(init)4c7683b:后端 + 前端工程骨架(21 文件 / 4850 行,主要是 package-lock.json)feat(article)158030b:Article 全栈业务(15 scaffold 产出文件 + 6 处业务修正)isDeleted改 snake_case / 软删除替代物理删除 / isDeleted 从 DTO/VO 移除 / 字段长度约束 / 前端 store 匹配拦截器剥壳 / UI 精修中文 + Tagtest(article)1043b9a:22 个单元测试(后端 15 + 前端 7)全绿,覆盖 AC-1~AC-8chore(ratchet)edbcf02:B 层阈值首次实测激活(8 处阈值 + CHECKPOINT 同步)验证证据(How verified)
本地 14/14 CI stages 全绿(A 层 9 实跑 + B 层 5 首次实测不再是幂等跳过)
真实编译验证(meta-principles §原则 1)
mvn -B compile✅npm run build(vue-tsc --noEmit + vite build)✅ 2.44s单元测试实测
mvn -B test:15/15 全绿 1.0snpx vitest run --coverage:7/7 全绿 659msB 层首次棘轮阈值(8 处同步写入)
scripts/ci/backend/check-backend-coverage.sh LINE_MINscripts/ci/backend/check-backend-coverage.sh BRANCH_MINbackend/pom.xml jacoco.line.minbackend/pom.xml jacoco.branch.minscripts/ci/frontend/check-frontend-test.sh LINE_MINscripts/ci/frontend/check-frontend-test.sh BRANCH_MINfrontend/vite.config.ts thresholds.linesfrontend/vite.config.ts thresholds.branches验证证据链:本地 backend-coverage 实测
行覆盖: 36% 保底: 36%+分支覆盖: 46% 保底: 46%→[OK] 达标;前端同理 18/50 等于实测正好通过。这是"当前真实水平 = 保底"的完美落地。影响面(Impact)
B 层 CI 状态变化:空项目幂等跳过 → 真实代码实测棘轮通过(5 个 stage)
CHECKPOINT §五 待办变化
发现的业务开发摩擦(4 条,本次不入正式演练报告,登记到 CHECKPOINT §四 轮次 2)
--fields类型词用str/bool不是string/boolean(CLI 文档不详)68/107是 MISSED/total 不是 COVERED/total——差点把阈值设成 43% 而非 36%,mvn verify check 立即挂本 PR 不动的事
Refs
rules/git-conventions.md §四PR body 规范首次跨仓库应用docs/requirements/Q2-001.md