拓展任务 AI 辅助实现账号注册功能
一、任务目标
借助 AI 工具分阶段实现账号注册,检查生成的代码并运行验证。注册页能够校验输入、提交注册请求并显示结果;注册成功后返回登录页,回填新注册的用户名。
二、明确注册功能要求
注册页不包含头像选择和上传,需要实现以下功能:
| 功能 | 实现要求 |
|---|---|
| 打开注册页 | 点击登录页中的“账号注册”,进入注册页 |
| 页面内容 | 显示用户名、密码、确认密码、用户协议、注册按钮和返回登录入口 |
| 输入校验 | 依次检查用户名、密码、确认密码和用户协议 |
| 提交注册 | 输入符合要求后,调用注册接口创建普通用户账号 |
| 注册成功 | 返回登录页,在用户名输入框中显示刚刚注册的账号 |
| 注册失败 | 停留在注册页,显示服务端返回的提示 |
页面输入应符合以下规则:
- 用户名和密码不能为空。
- 密码不能少于 6 个字符。
- 确认密码必须与密码一致。
- 提交注册前必须勾选用户协议。
三、了解注册接口
注册接口用于创建新的账号。接口信息如下:
| 项目 | 内容 |
|---|---|
| 请求方式 | POST |
| 请求地址 | /order-account/register |
| 请求体格式 | multipart/form-data |
请求体包含以下参数:
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
name | String | 是 | 注册用户名 |
password | String | 是 | 登录密码 |
imagePath | String | 是 | 账号头像的网络地址 |
role | String | 是 | 账号角色,1 表示普通用户 |
storeName | String | 否 | 商家店铺名称,仅商家账号需要提交 |
本任务注册普通用户,因此 role 固定为 1,不提交 storeName。注册页不提供头像操作,imagePath 使用项目预设的默认头像地址:
https://api.food2.sziit.top/ugc/file/order/09f98089616e972706515c9fc1536deb_1769595247074_186.png
注册成功时,接口返回:
{ "code": 200, "msg": "成功"}注册响应只需读取 code 和 msg,没有需要解析的业务数据,因此可以复用 Response<Unit>。Unit 在这里表示不需要接收业务数据。
四、使用 AI 辅助完成注册功能
1. 让 AI 了解项目
先让 AI 阅读现有登录页面、网络请求类、响应模型和加载对话框,了解项目使用的开发方式,再提出注册需求。
向 AI 输入:
请阅读当前 Android 项目中的 LoginActivity、activity_login.xml、FoodApiClient、Response<T>、LoadingDialog 和 AndroidManifest.xml。
我要在现有项目中新增账号注册功能。注册页包含用户名、密码、确认密码、用户协议和注册按钮,不包含头像选择与上传。注册成功后返回登录页并回填用户名,不实现自动登录。
不得新增或修改字符串、颜色、图片、图标和样式资源,不得更换网络框架。本次不要输出代码,只列出实现顺序、需要修改的文件和每一步的验证方法。检查计划是否沿用现有的页面、网络请求和数据处理方式。注册功能应复用已有资源,不添加头像上传、商家注册,也不改写登录流程。
2. 分阶段生成代码
按照下表分阶段向 AI 提出要求。每完成一个阶段,运行应用并检查结果,再继续下一阶段。
| 阶段 | 交给 AI 的任务 | 运行验证 |
|---|---|---|
| 创建页面 | 创建注册布局和 RegisterActivity,配置清单,并从登录页打开注册页 | 注册页能够打开和关闭 |
| 输入校验 | 为注册按钮添加事件,依次检查用户名、密码、确认密码和用户协议 | 每种错误输入显示对应提示 |
| 调用接口 | 在 FoodApiClient 中添加 register(),显示加载对话框并提交注册请求 | 新账号能够注册,重复账号显示失败提示 |
| 处理结果 | 注册成功后通过 Activity Result 返回用户名 | 返回登录页并回填用户名,随后能够完成登录 |
每次提出代码要求时,使用以下格式:
当前已经完成:填写已经通过验证的功能。本次只完成:填写当前阶段的一个具体目标。
请遵守以下要求:1. 复用项目现有类、资源和代码风格;2. 不修改与当前目标无关的代码;3. 先给出修改位置,再给出局部代码;4. 不调用尚未定义的方法;5. 最后说明如何运行验证。确认 AI 给出了文件、类和方法的位置,能够据此找到需要修改的代码。
3. 检查 AI 生成的代码
将代码写入项目之前,逐项检查:
- 类名、Binding 类型和控件 ID 是否与项目一致。
- 使用的方法、常量和接收注册结果的对象是否已经定义。
- 注册请求是否提交
name、password、imagePath和role=1。 - 网络请求是否在 IO 线程执行,请求结束后是否关闭加载对话框。
- 注册失败时是否停留在注册页并显示提示,成功时是否返回登录页并回填用户名。
- 是否新增了静态资源、无关依赖或重复的响应模型。
发现问题时,只要求 AI 修正当前问题。例如:
当前注册失败分支没有关闭 LoadingDialog。请只修改请求结果处理代码,保证注册成功和失败后都会关闭对话框,不要改动输入校验和页面跳转。请给出修改位置和局部代码。五、运行验证
运行应用,依次完成“打开注册页—检查输入—提交注册—返回登录页—使用新账号登录”,并检查:
- 注册页布局完整,能够正常打开和关闭。
- 所有输入校验均能显示正确提示。
- 新账号可以注册,重复账号能够显示失败信息。
- 注册成功后返回登录页并回填用户名。
- 项目能够正常构建,没有新增静态资源和无关依赖。
提高练习:注册后自动登录
完成基本功能后,可让 AI 制定注册后自动登录的方案。处理顺序为“注册—登录—获取用户信息—保存账号信息—进入主页面”,网络请求仍由 FoodApiClient 处理,不写入 AccountManager。
任务小结
本任务借助 AI 分阶段实现账号注册,通过检查代码和运行结果确认功能符合要求。注册成功后返回登录页并回填用户名,继续使用已有的登录流程。