在 AI 实现自动化编程时,任务编写完成后,工程质量检查( lint 、类型检查、单元测试)都正常通过。但是在业务功能验收时,存在业务功能验收通过了,但是实际功能并没有实现的问题,例如:数据根本就没有正确显示。请教各位大神,如何更好的做 AI 自动化的业务功能验收。
需求文档模版:
# 需求文档
## 介绍
需求描述
## 需求
### 需求 REQ-001 - 用户登录
用户故事:用户故事内容
#### 验收标准
- id: REQ-001-AC-001
ears: 采用 EARS 描述的子句 While <可选前置条件>, when <可选触发器>, the <系统名称> shall <系统响应>,
- id: REQ-001-AC-002
ears: 采用 EARS 描述的子句 While <可选前置条件>, when <可选触发器>, the <系统名称> shall <系统响应>,
任务 task 模版:
# 实施计划
执行时需严格遵循 `docs/spec/requirements.md` 中对应需求和验收标准。每项任务通过引用相关需求编号。
## TASK-001 用户登录功能 - [ ]
- 关联需求:
- REQ-001
- 关联验收:
- REQ-001-AC-001
- REQ-001-AC-002
- REQ-001-AC-003
### 实施内容
1. 创建登录表单
2. 实现登录 API 调用
3. 处理 loading 状态
4. 处理错误提示
5. 登录成功后跳转 dashboard
### 测试要求
- 单元测试:
- 表单校验
- 登录成功
- 登录失败
- E2E 测试:
- 用户可完成登录流程
- 错误密码显示提示
- loading 状态防止重复提交
### 规范对齐:constitution.md 「 UI/UX 一致性」「工程化规范」; design.md 「项目结构」「核心模块设计」「国际化」
1
sampeng Apr 26 via iPhone
我现在的办法是 ac 一定是通过 grep ,查找看代码可以验证的。然后起一个干净的 agent 看 ac 是不是都完成了
|
3
sampeng Apr 27
@darklowly 不要用模糊的语句描述功能,而是明确代码的行为。比如有哪些类,走了哪些分支。用 grep 等看代码的方式确认是否实现。如果只是描述一些模糊的行为,模型就会偷懒
|
4
manbudezhu OP @sampeng 可以给个样例吗,不是太明白,怎么用 grep 明确代码行为?
|
5
sampeng Apr 27 via iPhone
@manbudezhu
搭骨架的时候一个例子 [ ] `settings.gradle.kts` include `:app`, `:core`, `:feature:auth` - [ ] `gradle/libs.versions.toml` 包含 kotlin, coroutines, hilt, retrofit, okhttp, kotlinx-serialization, timber, coil, voyager, detekt, mockk, turbine, junit5 - [ ] 根 `build.gradle.kts` 声明 kotlin-serialization 插件 `apply false` - [ ] 根 `subprojects {}` 统一 apply detekt + 配置 Android Lint - [ ] `config/detekt/detekt.yml` 存在 - [ ] `:core` 的 `AppConfig` 是 `@Singleton`,`NetworkModule` 注入 `AppConfig` 而非硬编码配置值 - [ ] `:core` 的 `AppLogger` object 封装 Timber - [ ] `:core` 的 `NetworkModule` 是 `@Module @InstallIn(SingletonComponent::class)` - [ ] `:core` 的 `AppTab` interface 存在 - [ ] `:core` 的 `AppTheme` composable 使用 `MaterialTheme` - [ ] `StreamingApp.kt` 标注 `@HiltAndroidApp` - [ ] `MainActivity.kt` 标注 `@AndroidEntryPoint`,含 Voyager `Navigator` - [ ] `AndroidManifest.xml` 含 `INTERNET` 权限、`android:exported="true"` + MAIN/LAUNCHER - [ ] `:feature:auth` 的 `LoginScreen` 含邮箱+密码输入框+登录按钮 - [ ] `:feature:auth` 的 `build.gradle.kts` 不依赖任何 `:feature:*` - [ ] `LoginViewModelTest.kt` 使用 JUnit 5 + Turbine - [ ] `./gradlew assembleDebug` 通过 - [ ] `./gradlew detekt` 通过 |
6
manbudezhu OP @sampeng 厉害👍
|