HaniBlindBox/.kiro/specs/dashboard-statistics/requirements.md
2026-01-19 00:09:38 +08:00

127 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Requirements Document
## Introduction
本文档定义了仪表盘数据看板模块的迁移需求。该模块将从老项目PHP ThinkPHP + Layui迁移到新项目ASP.NET Core + Vue 3 + Element Plus。数据看板是后台管理系统的核心运营分析页面提供全面的业务数据统计概览包含4个主要卡片区域今日订单、今日货币信息、今日收入汇总、用户数据统计。
## Glossary
- **Dashboard**: 仪表盘,后台管理系统的首页
- **Data_Stand**: 数据看板,展示关键业务数据的核心页面
- **Today_Order_Card**: 今日订单卡片,展示当日订单相关统计数据
- **Currency_Info_Card**: 今日货币信息卡片展示钻石、UU币、达达券的发放和消费数据
- **Income_Summary_Card**: 今日收入汇总卡片,展示收入、支出和利润数据
- **User_Stats_Card**: 用户数据统计卡片,展示用户相关的汇总统计数据
- **Statistics_Service**: 统计服务,后端提供统计数据的服务层
- **Admin_Web**: 新项目前端,基于 Vue 3 + Element Plus 的后台管理前端
## Requirements
### Requirement 1: 今日订单卡片
**User Story:** As a 运营人员, I want to 查看今日订单的详细统计数据, so that I can 了解当日订单和支付情况。
#### Acceptance Criteria
1. WHEN 用户访问数据看板页面 THEN THE Today_Order_Card SHALL 显示今日订单统计数据
2. THE Today_Order_Card SHALL 展示发起订单数(今日创建的订单总数)
3. THE Today_Order_Card SHALL 展示支付订单数(今日支付成功的订单数)
4. THE Today_Order_Card SHALL 展示消费人数(今日有消费的用户数)
5. THE Today_Order_Card SHALL 展示订单总金额(今日订单折后总金额)
6. THE Today_Order_Card SHALL 展示出货总金额(今日出货奖品总价值)
7. THE Today_Order_Card SHALL 展示优惠券抵扣(今日优惠券抵扣总额)
8. THE Today_Order_Card SHALL 展示RMB支付今日微信支付总额
9. THE Today_Order_Card SHALL 展示钻石支付(今日钻石支付总额)
10. THE Today_Order_Card SHALL 展示UU币支付今日UU币支付总额
11. THE Today_Order_Card SHALL 展示达达券支付(今日达达券支付总额)
12. WHEN 用户点击刷新按钮 THEN THE Today_Order_Card SHALL 重新加载数据
### Requirement 2: 今日货币信息卡片
**User Story:** As a 运营人员, I want to 查看货币发放和消费情况, so that I can 监控虚拟货币的流通状况。
#### Acceptance Criteria
1. WHEN 用户访问数据看板页面 THEN THE Currency_Info_Card SHALL 显示货币信息统计数据
2. THE Currency_Info_Card SHALL 展示今日发放钻石
3. THE Currency_Info_Card SHALL 展示今日消费钻石
4. THE Currency_Info_Card SHALL 展示昨日发放钻石
5. THE Currency_Info_Card SHALL 展示昨日消费钻石
6. THE Currency_Info_Card SHALL 展示今日发放UU币
7. THE Currency_Info_Card SHALL 展示今日消费UU币
8. THE Currency_Info_Card SHALL 展示昨日发放UU币
9. THE Currency_Info_Card SHALL 展示昨日消费UU币
10. THE Currency_Info_Card SHALL 展示今日发放达达券
11. THE Currency_Info_Card SHALL 展示今日消费达达券
12. THE Currency_Info_Card SHALL 展示昨日发放达达券
13. THE Currency_Info_Card SHALL 展示昨日消费达达券
14. WHEN 用户点击刷新按钮 THEN THE Currency_Info_Card SHALL 重新加载数据
### Requirement 3: 今日收入汇总卡片
**User Story:** As a 运营人员, I want to 查看今日收入和利润情况, so that I can 了解当日的盈利状况。
#### Acceptance Criteria
1. WHEN 用户访问数据看板页面 THEN THE Income_Summary_Card SHALL 显示收入汇总数据
2. THE Income_Summary_Card SHALL 展示订单收入RMB+钻石)
3. THE Income_Summary_Card SHALL 展示RMB收入
4. THE Income_Summary_Card SHALL 展示钻石商城收入
5. THE Income_Summary_Card SHALL 展示其他收入
6. THE Income_Summary_Card SHALL 展示订单出货(今日出货奖品总价值)
7. THE Income_Summary_Card SHALL 展示支出
8. THE Income_Summary_Card SHALL 展示当天发货金额
9. THE Income_Summary_Card SHALL 展示当天用户剩余达达券
10. THE Income_Summary_Card SHALL 展示盒柜剩余价值
11. THE Income_Summary_Card SHALL 展示利润(收入 - 发货金额 - 用户剩余达达券 - 盒柜剩余)
12. THE Income_Summary_Card SHALL 展示利润计算公式
13. WHEN 利润为负值 THEN THE Income_Summary_Card SHALL 以红色显示利润数值
14. WHEN 用户点击刷新按钮 THEN THE Income_Summary_Card SHALL 重新加载数据
### Requirement 4: 用户数据统计卡片
**User Story:** As a 运营人员, I want to 查看用户相关的汇总统计数据, so that I can 了解用户整体情况。
#### Acceptance Criteria
1. WHEN 用户访问数据看板页面 THEN THE User_Stats_Card SHALL 显示用户统计数据
2. THE User_Stats_Card SHALL 展示绑定手机号人数
3. THE User_Stats_Card SHALL 展示抽奖人数(有抽奖记录的用户总数)
4. THE User_Stats_Card SHALL 展示用户剩余钻石
5. THE User_Stats_Card SHALL 展示用户剩余UU币
6. THE User_Stats_Card SHALL 展示用户剩余达达券
7. THE User_Stats_Card SHALL 展示微信支付金额(历史微信支付总额)
8. THE User_Stats_Card SHALL 展示订单支付数量(历史支付成功订单总数)
9. THE User_Stats_Card SHALL 展示用户出货总金额
10. THE User_Stats_Card SHALL 展示用户盒柜剩余价值
11. THE User_Stats_Card SHALL 展示用户已兑换的达达券
12. THE User_Stats_Card SHALL 展示用户已发货金额
13. WHEN 用户点击刷新按钮 THEN THE User_Stats_Card SHALL 重新加载数据
### Requirement 5: 后端API集成
**User Story:** As a 开发人员, I want to 前端正确调用后端统计API, so that I can 获取准确的统计数据。
#### Acceptance Criteria
1. THE Statistics_Service SHALL 提供 `GET /api/admin/business/statistics/today-order` 获取今日订单数据
2. THE Statistics_Service SHALL 提供 `GET /api/admin/business/statistics/currency-info` 获取货币信息数据
3. THE Statistics_Service SHALL 提供 `GET /api/admin/business/statistics/income-summary` 获取收入汇总数据
4. THE Statistics_Service SHALL 提供 `GET /api/admin/business/statistics/user-stats` 获取用户统计数据
5. WHEN API返回成功 THEN THE Admin_Web SHALL 正确解析并展示所有统计字段
6. WHEN API请求失败 THEN THE Admin_Web SHALL 显示错误提示并展示默认值
7. THE Admin_Web SHALL 在API模块中定义完整的TypeScript接口类型
### Requirement 6: 页面布局和交互
**User Story:** As a 运营人员, I want to 数据看板有清晰的布局和良好的交互体验, so that I can 高效地查看数据。
#### Acceptance Criteria
1. THE Data_Stand SHALL 使用两列布局,左侧显示今日订单和今日收入汇总,右侧显示今日货币信息和用户数据统计
2. THE Data_Stand SHALL 每个卡片区域独立异步加载,避免页面阻塞
3. THE Data_Stand SHALL 每个卡片显示加载动画,提升用户体验
4. THE Data_Stand SHALL 每个卡片有独立的刷新按钮
5. WHEN 页面加载时 THEN THE Data_Stand SHALL 自动加载所有卡片数据
6. THE Data_Stand SHALL 使用响应式布局,在不同屏幕尺寸下自适应