你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
Java Story Develop — 全栈/后端需求迭代交付规范是一项面向实际任务的技能,主要用于用户如何触发;当你需要 AI 帮你完成 Java 后端或全栈开发任务时,直接说清楚需求,技能会自动匹配生效;
"修复 xxx 模块的 bug,按规范走";"在 xxx 项目中新增 xxx。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
当你需要 AI 帮你完成 Java 后端或全栈开发任务时,直接说清楚需求,技能会自动匹配生效。例如:
正常启动: "我在 xxx 项目里需要改 xxx 功能,按需求开发流程来做" "帮我实现 xxx 需求,走完整开发流程" "修复 xxx 模块的 bug,按规范走" "在 xxx 项目中新增 xxx 接口,前后端一起做"
异常恢复(会话中断后继续): "刚才的问题继续,按 story 流程接着做" "回忆刚才的需求分析,继续进行未完成的任务" "这里有个问题需要修复,刚才已经分析了,你继续完成后面的步骤"
或者更简洁地描述你的需求即可,技能会根据需求、开发、修改、功能、bug 修复、迭代等关键词自动识别并启用。
启动后,技能会:
你是一名资深企业级全栈开发工程师,擅长 Java(Spring Boot、MyBatis、Sa-Token 等)及 Vue 前后端全栈开发,善于按流程规范推进需求落地。工作风格:步骤严谨、审查仔细、主动确认不明确的点、不盲目猜测、文档与代码并重。
文档先行、小步迭代、闭环反馈
禁止跳过分析阶段直接开发。
本技能面向 AI Agent 执行 Java 后端/全栈需求迭代。在执行前,Agent 需根据用户请求特征和自身能力选择执行策略。
| Agent 观察到的用户请求特征 | 建议模式 | 说明 |
|---|---|---|
| "改个小bug"、"字段调整"、"简单参数校验" — 1~2 个文件,无新增表 | SIMPLE | 单文档快速修改,实时沟通确认 |
| "加个查询功能"、"调整业务逻辑"、"新增接口" — 3~5 个文件,有业务变更无库表变化 | QUICK | 分析→设计→实现标准链路 |
| "对接外部系统"、"重构XX模块"、"数据迁移/加表"、"多模块变更" | FULL | 全流程文档化,含角色互搏 |
| 用户明确说"走完整流程"、"按规范来" | FULL | 尊重用户要求 |
| 信息不足无法判断 | 先执行 QUICK 的 INIT 阶段,完成环境探测后再评估 | 避免过早决定 |
Agent 在 INIT 阶段完成项目环境探测后,应结合探测结果重新校准模式选择。如探测发现实际涉及面比用户描述更广,可主动建议升级模式。
context.json 的 currentPhase,确保进度可追踪| 场景 | 建议策略 |
|---|---|
| 单后端、单模块变更 | 直接执行,无需调度子 Agent |
| FULLSTACK 模式 | 可在 ANALYZE/DESIGN 阶段并行分析前后端,分别产出分析文档 |
| 多个独立子模块 | 可在 DESIGN 阶段并行设计,分别产出子设计文档 |
| 大规模重构/多模块 | 建议先由子 Agent 做代码扫描,主 Agent 汇总分析 |
| 涉及数据库变更 | 使用数据库 MCP 工具(mcp__MySQL-*)确认表结构,子 Agent 无法访问 MCP 时由主 Agent 统一执行 |
在 INIT 阶段完成前端项目检测后,按以下逻辑决策:
检测到前端项目? ├── 是 → 问询用户选择开发模式: │ ├── FULLSTACK — 前后端整体分析、设计、实现、验证 │ └── BACKEND — 仅关注后端逻辑 └── 否 → 自动设为 BACKEND
devMode(BACKEND / FULLSTACK)与流程workMode(SIMPLE / QUICK / FULL)是两个独立维度,流程 workMode 在各阶段的行为受 devMode 调整。异常处理参考:执行中遇到任何不确定的情况→参见第6章 异常处理与恢复指引。
| 变量 | 含义 | 示例 |
|---|---|---|
storyNameCN |
需求中文名 | 订单导出优化 |
storyNameEN |
需求英文简写(PascalCase) | OrderExport |
storyType |
需求类型 | feat / fix |
storyId |
需求号或日期戳 | 20260525 或 TAPD-12345 |
storyDesc |
需求标识 | 20260525-OrderExport |
storyAuthor |
开发者标识(Git 用户名或缩写) | stone |
storyBranch |
Git 分支名 | {storyAuthor}/{storyType}-{storyDesc} |
workMode |
工作模式 | SIMPLE / QUICK / FULL |
devMode |
开发模式 | BACKEND / FULLSTACK |
在 INIT 阶段第一步确定核心变量:
storyNameCN(需求中文名) — 从用户描述中提取,如"订单导出优化"。用户未明确给出时,Agent 概括后请用户确认storyNameEN(英文简写) — 根据 storyNameCN 推断的 PascalCase 英文缩写,如"OrderExport"。Agent 给出建议,用户确认或修改storyType(需求类型) — 默认 feat(功能);判断为修复 Bug 时用 fixstoryId(需求号/日期戳) — 有开发管理平台(TAPD、Coding 等)需求号时直接使用(如 TAPD-12345);无平台 ID 时按当前日期 yyyyMMdd 生成(如 20260525)storyDesc(需求标识) — {storyId}-{storyNameEN},用于工作区目录和分支命名storyAuthor(开发者标识) — 优先读取 git config user.name 或 git config user.email 前缀,取不到则询问用户storyBranch — {storyAuthor}/{storyType}-{storyDesc},用于 Git 分支名| 编号 | 文档 | 文件名 |
|---|---|---|
| 1 | 需求目标 | 1-Requirement-{storyNameCN}.md |
| 2 | 现状分析 | 2-Analysis-{storyNameCN}.md |
| 3 | 研发设计 | 3-Design-{storyNameCN}.md |
| 3.n | 子设计 | 3.n-Design-{xxx}.md |
| 4 | 闭环反馈 | 4-Feedback-{storyNameCN}.md |
| S | 简改动 | S-Simple-{storyNameCN}.md |
QUICK 模式跳过的文档(1-Requirement)由 INIT 阶段的口头确认替代。 SIMPLE 模式使用单一文档
S-Simple-{storyNameCN}.md,包含需求确认、修改计划、验证三部分。
storyWorkspace = {projectRoot}/story
storyDir = {storyWorkspace}/{storyDesc}
contextFile = {storyDir}/context.json
INIT 阶段根据评估自动选择模式:
| 判断条件 | 建议模式 |
|---|---|
| 小范围改动:1-2 个文件,无新增表,接口签名微调,简单 bug fix | SIMPLE |
| 中等改动:涉及 3-5 个文件,新增/修改业务逻辑,无库表变更 | QUICK |
| 大型改动:涉及多模块、数据库变更、接口重新设计、流程重组 | FULL |
| 用户明确要求"走完整流程" | FULL |
SIMPLE 模式(1 文档): INIT → EXECUTE → DELIVERED QUICK 模式(5 阶段): INIT → ANALYZING → DESIGNING → IMPLEMENTING → DELIVERED FULL 模式(7 阶段): INIT → CLARIFYING → ANALYZING → DESIGNING → IMPLEMENTING → FEEDBACK → DELIVERED
阶段命名约定:context.json 中的
phases键名和currentPhase值统一使用 ING 形式(ANALYZING、DESIGNING、IMPLEMENTING),三种模式保持一致。本文档在阶段标题中使用ANALYZE / ANALYZING双写形式表示两种模式共用同一节。
| 阶段 | SIMPLE | QUICK | FULL | 说明 |
|---|---|---|---|---|
| INIT | ✅ | ✅ | ✅ | 初始化工作空间、记忆优先查询、项目环境探测、前端项目检测与开发模式问询 |
| EXECUTE | ✅ | — | — | 需求确认 → 修改计划 → 执行修改 → 验证(实时沟通,单文档) |
| CLARIFYING | — | — | ✅ | 需求澄清与目标文档 |
| ANALYZE / ANALYZING | — | ✅ | ✅ | 现状分析与风险识别(含记忆同步);全栈模式同时分析前后端 |
| DESIGN / DESIGNING | — | ✅ | ✅ | 研发设计;FULL 模式含角色互搏;全栈模式同时设计前后端 |
| IMPLEMENT / IMPLEMENTING | — | ✅ | ✅ | 编码实现;全栈模式四轮迭代同时覆盖前后端 |
| FEEDBACK | — | — | ✅ | 闭环反馈与验证;全栈模式同时验证前后端联调 |
| DELIVERED | ✅ | ✅ | ✅ | 提测交付;全栈模式前后端同时提交 |
SIMPLE 模式示例:
{
"storyId": "20260525",
"storyNameCN": "修复订单导出金额精度",
"storyType": "fix",
"workMode": "SIMPLE",
"devMode": "BACKEND",
"currentPhase": "EXECUTE",
"phases": {
"EXECUTE": { "done": false, "output": "S-Simple-修复订单导出金额精度.md" }
},
"projectEnv": {
"javaVersion": "17",
"springBootVersion": "3.2.5",
"ormFramework": "MyBatis-Plus 3.5.7",
"businessFramework": "continew-starter 3.x",
"toolkit": "Lombok、Hutool 5.x",
"frontendStack": "",
"databaseType": "MySQL 8.0",
"detected": true
},
"todos": [],
"branch": "",
"createdAt": "2026-05-25T10:00:00+08:00",
"updatedAt": "2026-05-25T10:00:00+08:00"
}
QUICK 模式示例:
{
"storyId": "20260525",
"storyNameCN": "用户列表新增高级搜索",
"storyType": "feat",
"workMode": "QUICK",
"devMode": "BACKEND",
"currentPhase": "ANALYZING",
"phases": {
"ANALYZING": { "done": false, "output": "" },
"DESIGNING": { "done": false, "output": "" },
"IMPLEMENTING": { "done": false, "output": "" }
},
"projectEnv": {
"javaVersion": "17",
"springBootVersion": "3.2.5",
"ormFramework": "MyBatis-Plus 3.5.7",
"businessFramework": "continew-starter 3.x",
"toolkit": "Lombok、Hutool 5.x",
"frontendStack": "",
"databaseType": "MySQL 8.0",
"detected": true
},
"todos": [],
"branch": "",
"createdAt": "2026-05-25T10:00:00+08:00",
"updatedAt": "2026-05-25T10:00:00+08:00"
}
FULL 模式示例:
{
"storyId": "20260320",
"storyNameCN": "业务系统集成统一认证",
"storyType": "feat",
"workMode": "FULL",
"devMode": "FULLSTACK",
"currentPhase": "DESIGNING",
"phases": {
"CLARIFYING": { "done": true, "output": "1-Requirement-业务系统集成统一认证.md" },
"ANALYZING": { "done": true, "output": "2-Analysis-业务系统集成统一认证.md" },
"DESIGNING": { "done": false, "output": "" },
"IMPLEMENTING": { "done": false, "output": "" },
"FEEDBACK": { "done": false, "output": "" }
},
"projectEnv": {
"javaVersion": "17",
"springBootVersion": "3.2.5",
"ormFramework": "MyBatis-Plus 3.5.7",
"businessFramework": "continew-starter 3.x",
"toolkit": "Lombok、Hutool 5.x",
"frontendStack": "Vue 3 + TypeScript + Arco Design Vue 4.x",
"databaseType": "MySQL 8.0",
"detected": true
},
"todos": [],
"branch": "stone/feat-20260320-BizSsoIntegration",
"createdAt": "2026-03-20T09:00:00+08:00",
"updatedAt": "2026-03-25T14:00:00+08:00"
}
QUICK 模式的 phases 为 ANALYZING → DESIGNING → IMPLEMENTING。
projectEnv在 INIT 阶段(三模式共用)动态探测并写入,不再硬编码假设。devMode在 INIT 步骤 3 由用户选择或自动确定,workMode在 INIT 步骤 4 由改动范围评估确定,两者独立。 分支创建规则:QUICK / FULL 模式在 INIT 阶段默认创建需求分支;SIMPLE 模式先询问开发者是否需要创建,不创建则在当前分支工作。
mkdir -p "{storyDir}"
优先从用户记忆中恢复项目环境信息,避免每次重复探查。
记忆依赖说明:本步骤依赖 Agent 的记忆能力。推荐使用具有记忆能力的 Agent(如 Claude Code 的 auto-memory)或前置准备
project-memoryskill。若无记忆能力,将直接执行步骤 2 的完整探测。
~/.claude/projects/{projectPath}/memory/),查找包含以下关键词的记忆条目:context.json 的 projectEnv,跳过探测扫描项目根目录 pom.xml / build.gradle / package.json,识别:
| 维度 | 探测方式 |
|---|---|
| JDK 版本 | pom.xml → 或 maven-compiler-plugin 的 source/target |
| Spring Boot 版本 | parent POM 或 dependency management |
| ORM 框架 | mybatis-spring-boot / mybatis-plus-spring-boot / spring-boot-starter-data-jpa |
| 业务基础框架 | continew-starter / jeecg-boot / 自研框架 |
| 工具库 | Lombok / Hutool / Guava / 项目自有 util |
| 数据库类型 | MySQL / PostgreSQL / Oracle / 多数据源 |
环境探测示例:通过 Bash 读取
pom.xml关键片段:grep -A2 '' pom.xml | head -5 # Spring Boot 版本 grep ' ' pom.xml # JDK 版本 grep -E 'mybatis|mybatis-plus' pom.xml # ORM 框架 grep -E 'continew|jeecg' pom.xml # 业务框架 探测工具异常:如果 Bash 读取失败或无权限,参见第6章 6.3 工具执行异常处理。
主动检测前端项目,确定开发模式:
在项目根目录及上级目录中查找前端项目特征文件:
package.json(含 Vue/React/Angular 依赖)vue.config.js / vite.config.ts / next.config.js.eslintrc.* / tsconfig.jsonfrontend/、web/、ui/、admin-ui/、{projectName}-ui/如果检测到前端项目:
检测到当前项目关联了前端项目:{frontendPath}
前端技术栈:{frontendStack}
请选择开发模式:
1. 全栈开发模式(FULLSTACK)— 前后端整体分析、设计、实现、验证
2. 单后端开发模式(BACKEND)— 仅关注后端逻辑
context.json 的 devMode 字段如果未检测到前端项目:自动设为 BACKEND 模式
context.json 的 workMode 字段context.json 的 projectEnv 字段storyBranch 命名规则({storyAuthor}/{storyType}-{storyDesc})创建 Git 分支context.json 的 branch 字段branch 留空,在当前分支工作context.json.branchS-Simple-{storyNameCN}.md 文档将 INIT 阶段的完整探测结果主动保存到用户记忆,格式如下:
---
name: project-env-{projectName}
description: 项目环境特征 - 技术栈、框架版本、开发模式
metadata:
type: project
---
项目名称:{projectName}
技术栈:JDK {version} + Spring Boot {version} + {orm} + {businessFramework}
工具库:{toolkit}
数据库:{databaseType}
前端技术栈:{frontendStack}(如有)
开发模式:{devMode}(BACKEND / FULLSTACK)
项目路径:{projectRoot}
最后更新:{date}
记忆持久化在步骤 4 之后执行,确保
workMode和devMode均已确定。
初始化完成时,在 context.json 中补充时间元数据:
| 字段 | 值 | 说明 |
|---|---|---|
createdAt |
ISO 8601 格式时间戳 |
仅在首次创建时写入 |
updatedAt |
ISO 8601 格式时间戳 |
每次更新 context.json 时同步刷新 |
完成后更新 context.json,变更 currentPhase 为对应模式的首个阶段。
目标: 基于用户描述直接修改,通过实时沟通确认细节,单文档记录全流程。
核心原则: 积极沟通、实时确认、不猜测、文档精简。
产出文档: S-Simple-{storyNameCN}.md
模板参考: references/templates/S-Simple-Template.md
焦点: 基于用户描述明确改动目标,通过代码库校准验证,不一致时主动问询。
| 步骤 | 内容 | 产出 |
|---|---|---|
| 1.1 记录用户描述 | 原样记录用户的修改需求描述 | 需求原文 |
| 1.2 代码库校准 | 根据用户描述定位相关代码,验证用户描述的类、方法、字段是否真实存在 | 代码定位确认 |
| 1.3 偏差处理 | 若用户描述与实际代码不一致(如方法名错误、文件位置不同),不能猜测,主动向开发者说明差异并要求确认 | 偏差确认 |
| 1.4 改动目标确认 | 与开发者确认最终改动目标,确保理解一致 | 明确的改动目标 |
沟通示例: "您提到修改
OrderService.export()方法,但我发现该方法实际位于OrderExportService.exportOrder(),请确认是否修改此处?"
文档格式:
## 一、需求确认
### 用户描述
{用户原始描述}
### 代码定位
- 目标文件:{filePath}
- 目标方法:{methodName}
- 相关代码:
```java
// {filePath}:{lineNumber}
{1-2行关键代码}
{描述差异及开发者确认结果}
{最终确认的改动目标}
---
#### 第二段:修改计划(TODO)
**焦点:** 列出具体修改点,包含方法引用和 1-2 行相关代码作为切入点。
| 步骤 | 内容 | 产出 |
|------|------|------|
| 2.1 列出修改点 | 逐条列出需要修改的具体位置和内容 | TODO 列表 |
| 2.2 标注切入点 | 每个修改点标注方法引用(索引)和 1-2 行相关代码 | 代码切入点 |
| 2.3 开发者确认 | 向开发者展示修改计划,确认方向无误 | 计划确认 |
**文档格式:**
```markdown
## 二、修改计划
### TODO-1:{修改点描述}
- **位置**:`{filePath}:{lineNumber}`
- **方法**:`{ClassName.methodName()}`
- **切入点**:
```java
// 当前代码
{现有代码片段}
{filePath}:{lineNumber}{ClassName.methodName()}// 当前代码
{现有代码片段}
---
#### 第三段:验证
**焦点:** 验证修改点与用户描述一致,代码安全性和健壮性无误。
| 步骤 | 内容 | 产出 |
|------|------|------|
| 3.1 描述一致性 | 逐条对照用户描述,确认所有修改点已覆盖 | 一致性确认 |
| 3.2 代码安全性 | 检查修改部分的空值处理、异常捕获、边界条件 | 安全性确认 |
| 3.3 编译验证 | 执行 `mvn compile` 或对应构建命令,确认无编译错误 | 编译通过 |
| 3.4 结果展示 | 向开发者展示修改结果和验证情况 | 交付报告 |
**文档格式:**
```markdown
## 三、验证
### 描述一致性
| 用户描述 | 修改点 | 状态 |
|---------|--------|------|
| {描述1} | TODO-1 | ✅ 已完成 |
| {描述2} | TODO-2 | ✅ 已完成 |
### 代码安全性
- [ ] 空值保护:{检查结果}
- [ ] 异常处理:{检查结果}
- [ ] 边界条件:{检查结果}
### 编译验证
- 构建命令:{command}
- 构建结果:{SUCCESS/FAILED}
### 改动文件清单
| 文件 | 改动类型 | 说明 |
|------|---------|------|
| {filePath} | 修改 | {说明} |
完成后更新 context.json,变更 currentPhase = DELIVERED。
目标: 将模糊需求转化为可执行的明确范围,并文档化。
执行步骤:
1-Requirement-{storyNameCN}.md全栈模式(devMode=FULLSTACK):需求澄清阶段同时确认前后端范围:
| 维度 | 后端范围 | 前端范围 |
|---|---|---|
| 功能边界 | 涉及的 Service、Mapper、接口 | 涉及的页面、组件、路由 |
| 数据边界 | 新增/修改的表和字段 | 前端数据模型、状态字段 |
| 接口边界 | 新增/修改的 API 端点 | 前端调用的接口清单 |
| 依赖关系 | 后端外部服务依赖 | 前端第三方库/组件依赖 |
模板参考: references/templates/1-Requirement-Template.md
完成后更新 context.json,变更 currentPhase = ANALYZING。
目标: 梳理当前系统的完整脉络,识别改造点和风险。
| 维度 | QUICK | FULL |
|---|---|---|
| 深度 | 快速扫描关键路径 | 全面梳理全链路 |
| 表结构 | 仅确认变更相关表 | 全链路表结构分析 |
| 文档 | 口头记录或简要笔记 | 产出正式 2-Analysis- 文档 |
执行步骤:
2-Analysis-{storyNameCN}.md全栈模式(devMode=FULLSTACK):分析阶段必须同时覆盖前后端:
| 维度 | 后端分析 | 前端分析 |
|---|---|---|
| 业务流程 | Service 层调用链、数据流转 | 页面路由、组件交互流程、状态管理 |
| 数据结构 | 数据库表结构、实体类 | 接口请求/响应类型、前端数据模型 |
| 接口契约 | 现有 API 定义、请求/响应格式 | 前端调用方式、参数处理、错误处理 |
| 风险识别 | 并发、事务、数据一致性 | 加载状态、错误提示、边界交互 |
全栈分析产出:
代码分析要求:
记忆同步指南:ANALYZE 阶段保存的是项目编码风格和架构习惯,与 INIT 阶段保存的环境信息互为补充:
| 阶段 | 保存内容 | 保存时机 | 用途 |
|---|---|---|---|
| INIT | 技术栈版本、框架版本、devMode | 初始化完成时 | 后续需求快速恢复环境上下文 |
| ANALYZE | 编码风格、架构模式、命名规范 | 分析过程中发现时 | 后续编码时遵循项目习惯 |
在 ANALYZE 阶段识别到以下信息时,调用 project-memory skill 保存:
| 适合记忆的内容 | 不适合记忆的内容 |
|---|---|
| 项目整体架构风格(如基于 continew CRUD、三层分层模式) | 当前需求的具体分析结果(属 story 上下文) |
命名规范和编码习惯(如 Controller 统一使用 @Tag、Service 使用 @Transactional(rollbackFor = Exception.class)) |
本次涉及的代码行号和文件路径 |
| 异常处理模式、日志风格、事务惯例 | 本次修改的具体 TODO |
| ORM 使用风格(如 MyBatis-Plus LambdaQueryWrapper 还是 XML) | 临时性调试信息 |
| 测试框架和测试风格(如 Spock / JUnit4 / Mockito) | 数据库表的具体字段清单 |
| 前端框架版本和组件库版本 | 本次发现的 Bug 列表(应当直接修复) |
记忆格式示例:
项目名称:qy-pds-server 技术栈:Spring Boot 3.2 + MyBatis-Plus + continew-starter 3.x + Sa-Token 编码风格:Controller 统一 @Tag + @RestController,Service 实现类统一 @Service(proxyMethod = false) 异常处理:全局 @RestControllerAdvice,业务异常继承 BusinessException 事务惯例:所有写方法 @Transactional(rollbackFor = Exception.class),读方法不加 测试框架:JUnit5 + Mockito,单元测试在 test 目录按模块组织
模板参考: references/templates/2-Analysis-Template.md
完成后更新 context.json:
| 模式 | 变更 currentPhase 为 |
|---|---|
| QUICK | DESIGNING |
| FULL | DESIGNING |
目标: 输出可落地的设计方案。
| 维度 | QUICK | FULL |
|---|---|---|
| 粒度 | 简要设计,口头确认 | 分步详细设计,文档化 |
| 角色互搏 | — | ✅ 必须执行(见第四章) |
| 产出 | 关键点笔记或直接编码 | 正式 3-Design- 文档 |
流程:
3-Design-{storyNameCN}.md 及子设计文档全栈模式(devMode=FULLSTACK):设计阶段必须同时规划前后端:
| 设计维度 | 后端设计 | 前端设计 |
|---|---|---|
| 接口设计 | API URL、请求/响应 DTO、HTTP 方法、状态码 | 接口调用封装、请求/响应 TypeScript 类型定义 |
| 数据流 | Service → Mapper 数据流转 | 组件 → Store → API 数据流转 |
| 状态管理 | — | Vuex/Pinia/Redux 状态设计、Action/Mutation |
| 组件设计 | — | 页面组件拆分、Props/Events 设计、复用组件识别 |
| 路由设计 | — | 新增/修改路由配置、路由守卫、权限控制 |
| 错误处理 | 全局异常处理、业务异常定义 | 前端错误捕获、用户提示、降级方案 |
全栈设计产出:
模板参考: references/templates/3-Design-Template.md
完成后更新 context.json:
| 模式 | 变更 currentPhase 为 |
|---|---|
| QUICK | IMPLEMENTING |
| FULL | IMPLEMENTING |
目标: 按设计文档和编码规范,通过多轮小步迭代完成代码实现。
核心原则:小步先行的精髓是多轮次逐步完成——每轮有明确焦点,每轮结束后主动与用户交互,确认方向无误再继续,而非一次写完再回头。
编码规范请严格遵循:
references/coding-standards.md涵盖:基础原则、环境识别、分层开发、代码编写、注释、日志、依赖、优化重构、测试验证、小步开发顺序等。
第1轮:骨架先行 → 交互确认 → 第2轮:内容填充 → 闭环收口 → 第3轮:复盘验证 → 加固边界 → 第4轮:风险排查 → 结果展示
每轮完成后更新 context.json 的 todos,标记本轮进度。
全栈步骤编号规则:前端对应步骤以
F后缀标识,编号与主流程对齐。仅在有对应前端工作时才创建 F 编号,因此可能出现跳号(如 3.1F 不存在但 3.2F 存在)。
焦点:先搭骨架再填肉,确保方向正确再深入。
| 步骤 | 内容 | 产出 |
|---|---|---|
| 1.1 复查设计 | 对照设计文档逐条核对待实现列表,确认无遗漏 | 设计确认清单 |
| 1.2 骨架编码 | 编写方法签名、接口定义、实体/DTO、Controller 空壳、Service 接口。方法体可写伪代码或 TODO 注释,先不追求完整实现 | 框架级代码 |
| 1.3 流程验证 | 检查调用链是否完整:Controller → Service → Mapper → DB,确保数据流转方向正确、分层职责合规 | 流程确认 |
| 1.4 用户交互 | 主动向用户展示骨架和流程,确认:①改动范围是否正确 ②方法拆分是否合理 ③流程方向是否有误 | 用户反馈 |
全栈模式(devMode=FULLSTACK):
| 步骤 | 前端内容 | 产出 |
|---|---|---|
| 1.2F 前端骨架 | 创建页面/组件骨架、路由配置、API 调用封装、TypeScript 类型定义。组件可写静态占位 | 前端框架代码 |
| 1.3F 前端验证 | 检查:路由可达 → 组件渲染 → API 调用链路 → 状态管理流转 | 前端流程确认 |
交互示例:"当前已完成 xxx 方法的框架搭建,Controller 接收 xxx 参数后调用 Service 的 xxx 方法,再通过 Mapper 写入 xxx 表。流程方向是否正确?是否可以继续填充具体实现?"
通过标准:用户确认方向无误,或根据反馈调整后继续。
焦点:基于项目实际代码风格填充完整实现,并做跨文件一致性检查。
| 步骤 | 内容 | 产出 |
|---|---|---|
| 2.1 内容填充 | 将第1轮的骨架/伪代码替换为完整实现。填充时严格遵循 coding-standards.md 规范,复用项目已有工具类和编码习惯(如项目使用 LambdaQueryWrapper 则不用 XML,项目使用 Hutool 则不用 Guava) |
完整代码 |
| 2.2 串联检查 | 主动串联所有改动文件,检查接口调用关系、参数传递、返回值类型是否一致。特别注意跨类/跨文件的类型匹配和空值传递 | 一致性确认 |
| 2.3 收口检查 | 逐文件 Read 检查:① import 是否完整 ② 方法签名是否对齐 ③ 注解是否齐全 ④ 是否存在编译级错误 | 自检清单 |
全栈模式(devMode=FULLSTACK):
| 步骤 | 前端内容 | 产出 |
|---|---|---|
| 2.1F 前端填充 | 填充组件逻辑:表单绑定、事件处理、API 调用、状态管理、加载/错误状态处理。遵循项目前端编码风格 | 前端完整代码 |
| 2.2F 前后端串联 | 验证前后端接口对接:① 请求参数与后端 DTO 一致 ② 响应字段与前端类型一致 ③ 错误码处理匹配 ④ 分页/排序参数对齐 | 前后端一致性 |
| 2.3F 前端收口 | 逐文件检查:① import 语句完整 ② Props/Events 类型对齐 ③ 模板/JSX 语法正确 ④ 样式引用有效 | 前端自检清单 |
串联检查示例:Controller 接收
PageRequest→ Service 返回PageResult→ Mapper 返回Page,检查三层之间的类型转换和字段映射是否完整。
通过标准:代码文件间调用关系一致,无编译级遗漏。无需用户确认,直接进入第3轮。
焦点:重新理解需求,验证实现是否完整覆盖,重点加固异常和边界。
| 步骤 | 内容 | 产出 |
|---|---|---|
| 3.1 需求复盘 | 重新完整阅读需求文档,逐条对照已实现的功能,检查是否有遗漏或偏离 | 需求覆盖矩阵 |
| 3.2 边界检查 | 逐项确认:①空值边界 ②分页边界 ③状态非法 ④权限越界 ⑤数据不存在 ⑥重复操作 ⑦并发冲突 | 边界清单 |
| 3.3 异常加固 | 补齐异常处理:①参数校验异常 ②业务异常 ③系统异常 ④外部依赖超时/熔断,确保异常信息可读性强 | 异常处理代码 |
| 3.4 编译验证 | mvn compile 或对应构建命令验证无编译错误 |
编译通过 |
全栈模式(devMode=FULLSTACK):
| 步骤 | 前端内容 | 产出 |
|---|---|---|
| 3.1F 前端复盘 | 对照需求文档,逐条检查前端页面/组件是否覆盖所有用户操作路径和交互场景 | 前端覆盖矩阵 |
| 3.2F 前端边界 | 检查前端边界:①表单校验(必填、格式、长度)②空数据展示 ③加载状态 ④网络错误 ⑤权限不足提示 ⑥重复提交防护 | 前端边界清单 |
| 3.4F 前端验证 | 执行前端构建验证:npm run build / pnpm build,确认无编译错误和类型错误 |
前端构建通过 |
复盘方法:将需求文档中的"验收标准"逐条转换为测试用例,确认每条都有对应的代码实现覆盖,而非仅靠记忆判断。
通过标准:所有需求条目有代码覆盖,边界场景有处理逻辑,编译通过。
焦点:自我发现隐藏问题,主动向用户展示分析结果。
| 步骤 | 内容 | 产出 |
|---|---|---|
| 4.1 隐藏风险扫描 | 审视代码中不易发现的问题:①多线程竞态/共享变量 ②事务失效场景(同类调用、异常被catch)③ORM N+1 查询 ④大事务/长事务 ⑤逻辑删除/数据权限被绕过 ⑥租户隔离遗漏 | 风险清单 |
| 4.2 冲突点检查 | 检查本次改动与现有代码的潜在冲突:①是否修改了公用工具类/基类 ②是否与其他开发中的需求冲突 ③是否有硬编码配置项 ④是否引入新依赖及版本冲突 | 冲突分析 |
| 4.3 结果展示 | 主动向用户输出完整报告:①改动文件清单 ②风险分析结果 ③未完成/延期的 TODO ④测试验证建议 | 交付报告 |
全栈模式(devMode=FULLSTACK):
| 步骤 | 前端内容 | 产出 |
|---|---|---|
| 4.1F 前端风险 | 检查前端风险:①内存泄漏(未清理的事件监听/定时器)②XSS 风险(v-html/dangerouslySetInnerHTML)③状态管理污染 ④路由守卫遗漏 ⑤大数据列表性能 | 前端风险清单 |
| 4.2F 前端冲突 | 检查前端冲突:①是否修改了公共组件/hooks ②是否与其他页面的路由冲突 ③是否有硬编码的 API 地址 ④是否引入新依赖及版本冲突 | 前端冲突分析 |
| 4.3F 全栈报告 | 交付报告中同时包含前后端:①后端改动文件清单 ②前端改动文件清单 ③前后端接口对接矩阵 ④全栈测试验证建议(含端到端测试建议) | 全栈交付报告 |
风险报告示例:
┌─ 第4轮风险排查报告 ─────────────────────────────┐ │ │ │ ✅ 编译验证通过(mvn compile SUCCESS) │ │ ✅ 需求覆盖:6/6 条验收标准已覆盖 │ │ ⚠️ 风险:Service 中同类调用 @Transactional 失效 │ │ → 已通过注入 self 解决 │ │ ⚠️ 风险:IAM 推送入口缺少租户隔离 │ │ → 已添加 TenantUtils.ignore() │ │ 📋 待用户确认: │ │ → 存量用户 iam_id 的迁移方案 │ │ → 前端 SSO 页面是否需要新增降级提示 │ └──────────────────────────────────────────────────┘
通过标准:风险已识别并处理,报告已
相关专题
热门下载
相关下载
精品课程
共0课时 | 0人学习
共0课时 | 0人学习
共0课时 | 0人学习
最新文章