vending-machine/.kiro/specs/vending-machine-app/requirements.md
2026-04-03 06:07:13 +08:00

12 KiB
Raw Blame History

需求文档

简介

本文档定义了贩卖机配套移动端 App 的功能需求。该 App 需同时支持 Android 和 iOS 双平台,上架 Google Play 和 App Store。核心功能包括会员体系、积分系统、优惠券系统、多语言支持、移动支付集成以及与贩卖机硬件的 API 对接。

术语表

  • App: 贩卖机配套移动端应用程序,支持 Android 和 iOS 双平台
  • 用户: 使用 App 的终端消费者
  • 会员: 已购买会员服务的用户,享有积分获取、节日印花兑换等权益
  • 单月会员: 一次性购买、固定时长生效的会员类型
  • 订阅会员: 按月自动续费的会员类型
  • 积分: 用户通过在贩卖机消费获取的虚拟货币,可用于兑换优惠券或赠送他人
  • 优惠券: 用户可在贩卖机消费时使用的折扣凭证,包括满减券和抵扣券
  • 节日印花: 在节假日期间向会员赠送的特殊优惠券,需手动兑换
  • 会员二维码: 包含会员 ID 等信息的动态二维码,供贩卖机扫码识别用户身份,具有时效限制
  • UID: 用户唯一标识符
  • 贩卖机: 与 App 对接的硬件设备,通过 API 与 App 后端通信
  • 后台: App 的管理后台系统,用于配置内容、商品、价格等
  • 转换比: 后台可配置的消费金额与积分之间的换算比例

需求

需求 1用户认证与账号管理

用户故事: 作为用户,我希望通过手机号验证码登录 App以便安全地访问我的账户和使用各项功能。

验收标准

  1. WHEN 用户在登录页输入手机号并请求验证码, THE App SHALL 调用第三方短信平台发送验证码至该手机号
  2. WHEN 用户在登录页选择手机区号, THE App SHALL 支持切换不同国家或地区的手机区号
  3. WHEN 用户输入正确的验证码并点击登录按钮, THE App SHALL 验证验证码正确性并完成登录,跳转至首页
  4. WHEN 用户点击登录按钮但未勾选同意协议, THE App SHALL 弹出系统提示"请阅读并同意协议"并阻止登录操作
  5. WHEN 用户未登录时访问我的页, THE App SHALL 展示默认头像和登录按钮
  6. WHEN 用户成功登录后访问我的页, THE App SHALL 展示默认用户昵称("用户" + 随机6位数字和 UID
  7. WHEN 用户在关于页点击注销账号按钮并在弹窗中确认, THE App SHALL 注销该账号、退出登录状态、返回首页并弹出系统提示"已注销"
  8. WHEN 用户在我的页点击退出登录按钮并在弹窗中确认, THE App SHALL 退出当前登录状态

需求 2多语言支持

用户故事: 作为用户,我希望 App 支持多种语言,以便使用我熟悉的语言操作 App。

验收标准

  1. THE App SHALL 支持简体中文、繁体中文和英文三种语言
  2. WHEN 用户在我的页点击切换语言按钮, THE App SHALL 弹出多语言选择列表供用户选择
  3. WHEN 用户选择一种语言后, THE App SHALL 将所有界面文字切换为所选语言
  4. WHEN 后台配置文字或图片内容时, THE 后台 SHALL 支持为每项内容配置三种语言的版本

需求 3首页展示与导航

用户故事: 作为用户,我希望在首页快速访问各项功能入口,以便高效地使用 App。

验收标准

  1. THE App SHALL 在首页顶部展示后台可配置的 Banner 轮播图
  2. WHEN 用户点击 Banner 图片, THE App SHALL 根据后台配置跳转至内部指定页面或外部链接
  3. WHEN 用户点击成为会员入口图片, THE App SHALL 跳转至会员页
  4. WHEN 用户点击节日印花入口图片, THE App SHALL 跳转至节日印花页
  5. WHEN 用户点击会员二维码入口图片且用户为会员, THE App SHALL 弹出会员二维码弹窗
  6. WHEN 用户点击会员二维码入口图片且用户非会员, THE App SHALL 跳转至会员页
  7. WHEN 用户点击使用说明按钮, THE App SHALL 弹出优惠券使用说明弹窗,弹窗内容由后台配置
  8. THE App SHALL 在首页展示后台可配置的可兑换优惠券列表,每项展示优惠券名称、到期时间、兑换条件和兑换按钮

需求 4会员体系

用户故事: 作为用户,我希望购买会员服务,以便享受积分获取和专属优惠等权益。

验收标准

  1. THE App SHALL 在会员页展示后台可配置的会员宣传长图
  2. WHEN 用户在会员页点击开通会员按钮, THE App SHALL 根据设备平台拉起 Google PayAndroid或 Apple PayiOS支付流程
  3. WHEN 用户成功完成会员支付, THE App SHALL 刷新会员页并将按钮文字更改为"会员已开通",按钮置为灰色不可点击状态
  4. WHEN 会员身份到期后超过3个月, THE App SHALL 清空该用户的剩余积分
  5. WHILE 会员身份到期后3个月内, THE App SHALL 保留该用户的剩余积分
  6. WHEN 用户购买订阅会员后, THE App SHALL 每月自动续费
  7. WHEN 用户已购买单月会员后查看会员页, THE App SHALL 隐藏单月会员购买按钮,仅显示订阅会员购买按钮
  8. WHEN 用户已购买订阅会员后查看会员页, THE App SHALL 将购买按钮文字变更为"已购买订阅会员",按钮置为灰色不可点击状态

需求 5积分系统

用户故事: 作为会员,我希望通过消费获取积分并管理积分,以便兑换优惠券或赠送给其他用户。

验收标准

  1. WHEN 用户在贩卖机完成支付, THE App SHALL 按照后台配置的转换比将支付金额转换为积分并添加至用户账户
  2. THE 后台 SHALL 支持配置金额与积分的转换比例
  3. WHEN 用户在我的页点击我的积分区域, THE App SHALL 跳转至我的积分页,展示获取记录和使用记录两个标签
  4. WHEN 用户查看积分获取记录, THE App SHALL 展示每条记录的积分来源、获取时间和增加数量
  5. WHEN 用户查看积分使用记录, THE App SHALL 展示每条记录的使用方式、使用时间和减少数量
  6. WHEN 用户在赠送积分弹窗中输入对方 UID 和赠送积分数量并点击赠送按钮且剩余积分充足, THE App SHALL 从当前用户扣除积分、为对方增加积分、关闭弹窗并弹出系统提示"积分已赠送"
  7. WHEN 用户在赠送积分弹窗中点击赠送按钮且剩余积分不足, THE App SHALL 弹出系统提示"剩余积分不足,无法赠送"

需求 6优惠券系统

用户故事: 作为用户,我希望使用积分兑换优惠券并在贩卖机消费时使用,以便获得折扣优惠。

验收标准

  1. WHEN 用户在首页点击优惠券的兑换按钮, THE App SHALL 弹出确定兑换弹窗
  2. WHEN 用户在确定兑换弹窗中点击确定兑换按钮且积分充足, THE App SHALL 完成兑换、关闭弹窗并弹出系统提示"兑换成功"
  3. WHEN 用户在确定兑换弹窗中点击确定兑换按钮且积分不足, THE App SHALL 关闭弹窗并弹出系统提示"积分不足,无法兑换"
  4. IF 兑换期间优惠券被下架, THEN THE App SHALL 关闭弹窗并弹出系统提示"优惠券已下架"
  5. WHEN 用户在我的页点击我的优惠券按钮, THE App SHALL 跳转至我的优惠券页
  6. THE App SHALL 在我的优惠券页将优惠券分为"可使用""已使用""已过期"三种状态展示
  7. WHEN 优惠券状态为已使用或已过期, THE App SHALL 在优惠券上显示对应的"已使用"或"已过期"标识图标
  8. THE 后台 SHALL 支持配置优惠券的名称、类型(满减、抵扣)、到期时间和兑换条件

需求 7节日印花系统

用户故事: 作为会员,我希望在节假日兑换专属印花优惠券,以便享受节日特惠。

验收标准

  1. THE App SHALL 在节日印花页展示后台可配置的 Banner 图(点击无跳转)
  2. THE App SHALL 在节日印花页展示可兑换的印花优惠券列表兑换条件可配置为0积分或少量积分
  3. WHEN 会员用户点击印花优惠券的兑换按钮, THE App SHALL 执行兑换流程
  4. WHEN 非会员用户点击印花优惠券的兑换按钮, THE App SHALL 跳转至会员页
  5. WHEN 会员成功兑换一张印花优惠券后, THE App SHALL 将该优惠券的兑换按钮替换为"已兑换",按钮置为灰色不可点击状态
  6. THE App SHALL 限制每张印花优惠券每位用户仅能兑换1次

需求 8移动支付集成

用户故事: 作为用户,我希望通过 Google Pay 或 Apple Pay 完成支付,以便快捷安全地购买会员服务。

验收标准

  1. WHEN 用户在 Android 设备上发起会员购买, THE App SHALL 调用 Google Pay 支付接口完成支付流程
  2. WHEN 用户在 iOS 设备上发起会员购买, THE App SHALL 调用 Apple Pay 支付接口完成支付流程
  3. WHEN 支付成功完成, THE App SHALL 更新用户会员状态并刷新当前页面
  4. IF 支付过程中发生错误, THEN THE App SHALL 向用户展示明确的错误提示信息并保持当前页面状态不变
  5. THE App SHALL 在 Google Play 和 Apple 后台配置对应的会员商品和价格信息
  6. WHEN 订阅会员支付成功, THE App SHALL 激活自动续费功能并在每月到期时自动扣款

需求 9贩卖机硬件 API 对接

用户故事: 作为会员,我希望在贩卖机上扫码后自动识别我的身份和优惠信息,以便享受会员权益和优惠券抵扣。

验收标准

  1. WHEN 用户在 App 中打开会员二维码, THE App SHALL 生成包含会员 ID 等信息的动态二维码,该二维码在数分钟后自动失效
  2. WHEN 贩卖机扫描会员二维码后, THE App 后端 SHALL 通过用户信息接口返回该用户的会员信息和优惠券信息
  3. WHEN 贩卖机请求用户信息且该用户已被其他贩卖机锁定, THE App 后端 SHALL 返回用户锁定状态,贩卖机提示"已在其他机器扫码"
  4. WHEN 贩卖机扫码成功获取用户信息后, THE App 后端 SHALL 锁定该用户,防止同时在多台贩卖机操作
  5. WHEN 用户在贩卖机完成支付后, THE 贩卖机 SHALL 调用支付中心接口将用户 ID、支付金额、使用的优惠券 ID 等信息发送至 App 后端
  6. WHEN 贩卖机收到用户的优惠券信息后, THE 贩卖机 SHALL 根据用户购买的物品和金额判断是否使用优惠券,优先使用快到期且抵扣金额最大的优惠券
  7. IF 支付流程结束(无论成功或失败), THEN THE App 后端 SHALL 通过支付中心接口记录支付结果并解除用户锁定

需求 10个人中心与信息展示

用户故事: 作为用户,我希望在个人中心查看和管理我的账户信息,以便了解我的会员状态、积分和优惠券情况。

验收标准

  1. THE App SHALL 在我的页展示用户的剩余积分数量
  2. WHEN 用户在我的页点击用户协议或隐私政策按钮, THE App SHALL 跳转至对应的协议页面,内容由后台配置
  3. WHEN 用户在我的页点击关于按钮, THE App SHALL 跳转至关于页,展示 LOGO、版本号和注销账号按钮
  4. THE App SHALL 在首页各入口图片支持后台动态配置和更新

需求 11管理后台

用户故事: 作为运营人员,我希望通过管理后台配置和管理 App 的内容、商品和用户数据,以便灵活运营贩卖机业务。

验收标准

  1. THE 管理后台 SHALL 提供 Banner 管理功能,支持增删改查、排序和多语言图片配置
  2. THE 管理后台 SHALL 提供优惠券管理功能,支持创建、编辑、上下架优惠券,配置类型(满减、抵扣)、兑换条件和到期时间
  3. THE 管理后台 SHALL 提供节日印花管理功能,支持创建和编辑印花优惠券及 Banner 图配置
  4. THE 管理后台 SHALL 提供积分配置功能,支持设置金额与积分的转换比例
  5. THE 管理后台 SHALL 提供会员商品管理功能,支持配置会员价格、生效时长和宣传图
  6. THE 管理后台 SHALL 提供用户管理功能,支持查看用户列表和用户详情(会员状态、积分、优惠券)
  7. THE 管理后台 SHALL 提供内容管理功能,支持编辑用户协议、隐私政策和优惠券使用说明的多语言版本
  8. THE 管理后台 SHALL 提供首页入口图片管理功能,支持配置各功能入口的多语言图片