logo
0
0
WeChat Login

PR #2:Q2-001 文章 CRUD 全栈首业务 + B 层 CI 棘轮首次实测激活#2

Merged
created 2 weeks ago
main
feature/article-crud
Edit
OverviewCommits
5
Files changed
43
Attachments

动机(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 分层推进

  • commit 1 docs(req) a73de07:需求扩写 Q2-001(9 章节 / 208 行 / 8 个 AC)+ require_analysis JSON 产物(category=fullstack, complexity=complex)
  • commit 2 chore(init) 4c7683b:后端 + 前端工程骨架(21 文件 / 4850 行,主要是 package-lock.json)
    • 后端 pom.xml:Spring Boot 3.2.5 + MyBatis 3.0.3 + Flyway 10.10 + PostgreSQL 42.7.3 + Lombok 1.18.42(兼容 JDK 25)+ JaCoCo 0.8.14
    • 明确移除 H2 依赖(按 testing-standards §3.1 禁嵌入式 DB)
    • 前端 package.json:Vue 3.4 + Vite 5 + TypeScript 5 + Pinia + Element Plus 2.5 + Vitest 1.3 + vue-tsc 2.2
    • 公共类:Result / PageResult / BaseEntity / BusinessException / NotFoundException / GlobalExceptionHandler
  • commit 3 feat(article) 158030b:Article 全栈业务(15 scaffold 产出文件 + 6 处业务修正)
    • 后端 11 文件:Entity / DTO(Create+Update) / VO / Mapper(接口+XML) / Service(接口+impl) / Controller / Converter / Flyway 迁移
    • 前端 4 文件:api/modules/article.ts / types/article.ts / stores/modules/article.ts / views/article/index.vue
    • 业务修正 6 处isDeleted 改 snake_case / 软删除替代物理删除 / isDeleted 从 DTO/VO 移除 / 字段长度约束 / 前端 store 匹配拦截器剥壳 / UI 精修中文 + Tag
  • commit 4 test(article) 1043b9a:22 个单元测试(后端 15 + 前端 7)全绿,覆盖 AC-1~AC-8
  • commit 5 chore(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 test15/15 全绿 1.0s
    • JaCoCo 整体:LINE 39/107 = 36.45% / BRANCH 13/28 = 46.43%
    • ArticleServiceImpl(被测核心):Instructions 100% / Branches 92.9%
  • 前端 npx vitest run --coverage7/7 全绿 659ms
    • v8 整体:Stmts 18.27% / Branches 50% / Funcs 41.66% / Lines 18.27%
    • stores/modules/article.ts(被测核心):100% / 100% / 100% / 100%

B 层首次棘轮阈值(8 处同步写入)

位置原值新值
scripts/ci/backend/check-backend-coverage.sh LINE_MIN036
scripts/ci/backend/check-backend-coverage.sh BRANCH_MIN046
backend/pom.xml jacoco.line.min0.000.36
backend/pom.xml jacoco.branch.min0.000.46
scripts/ci/frontend/check-frontend-test.sh LINE_MIN018
scripts/ci/frontend/check-frontend-test.sh BRANCH_MIN050
frontend/vite.config.ts thresholds.lines018
frontend/vite.config.ts thresholds.branches050

验证证据链:本地 backend-coverage 实测 行覆盖: 36% 保底: 36% + 分支覆盖: 46% 保底: 46%[OK] 达标;前端同理 18/50 等于实测正好通过。这是"当前真实水平 = 保底"的完美落地。

影响面(Impact)

B 层 CI 状态变化:空项目幂等跳过 → 真实代码实测棘轮通过(5 个 stage)

  • B1 真实编译:N/A → mvn compile 必过
  • B2 单元测试:N/A → 15/15 绿
  • B3/B4:0/0 → 36/46(棘轮起点)
  • B5 前端 build:N/A → vite build 必过
  • B6/B7/B8:0/0/0 → 7/7 绿 + 18/50

CHECKPOINT §五 待办变化

  • ✅ Q2-T-01 后端阈值上调 闭环
  • ✅ Q2-T-02 前端阈值上调 闭环
  • ✅ Q2-T-03 源仓库摩擦反馈 已部分闭环(源仓库 PR #40/#41 已合入)
  • 🆕 T-Q2-a:功能测试补齐(需 docker-compose.test.yml + PG;MockMvc HTTP API 级;目标覆盖率 ≥ 50%)
  • 🆕 T-Q2-b:向源仓库反馈 scaffold SKILL.md 3 条业务开发摩擦
  • 🆕 T-Q2-c:向源仓库反馈 Q2-001 作为"第 3 次演练候选"——LESSONS §四 3.0 版在真实业务场景下的流畅性

发现的业务开发摩擦(4 条,本次不入正式演练报告,登记到 CHECKPOINT §四 轮次 2)

  1. scaffold --fields 类型词用 str/bool 不是 string/boolean(CLI 文档不详)
  2. 本地 JDK 25 + Lombok 1.18.32 不兼容(TypeTag UNKNOWN)→ 升级到 1.18.42
  3. vue-tsc 1.8.27 + Node 23 不兼容 → 升级到 2.2
  4. JaCoCo HTML 报告读误陷阱68/107 是 MISSED/total 不是 COVERED/total——差点把阈值设成 43% 而非 36%,mvn verify check 立即挂

本 PR 不动的事

  • 功能测试不做(需 PG,作为 T-Q2-a)
  • Controller / GlobalExceptionHandler 不单测(单元测试层只做 Service,其他走功能测试更合理)
  • 源仓库的规则 / 文档不动(反馈类待办归 T-Q2-b/c)

Refs

  • 父事件:源仓库 anta-workshopdemo 方向 D 指令「在目标仓库跑第一个真实业务需求」
  • 关联:
    • 源仓库 CHECKPOINT §四 轮次 14-c 尾端
    • 源仓库 LESSONS §四 Step 6(A/B 分层阈值策略)首次真实激活
    • 源仓库 rules/git-conventions.md §四 PR body 规范首次跨仓库应用
    • 本项目 CHECKPOINT §四 新增「轮次 2」完整档案
    • Q2-001 需求文档:docs/requirements/Q2-001.md
  • 远端首次 CI(PR #1):https://cnb.cool/qshenzhang/anta-newproject-demo/-/build/logs/cnb-f98-1jnmllhve
is using the merge method to merge into2277dc08
added 4 commits
合并来自 feature/article-crud 的合并请求 #2
docs(meta): CHECKPOINT §四 轮次 3 追加——功能测试补齐档案同步
feat(ci): B 层 CI 升级 15 stages + 棘轮第 2 次上调(36/46 → 78/70)
test(functional): Q2-001 功能测试 + docker-compose PG + 修 5 个真实 bug
fix(ci): CNB dind 诊断 + 覆盖率降级策略(PR #4 远端失败的修正)

Successfully merged and closed

branch can be safely deleted
Reviewer
None yet
Assignee
None yet
Label
None yet
Participant