petstore-docs/产品设计文档.md
2026-04-12 23:24:40 +08:00

301 lines
8.9 KiB
Markdown
Raw Permalink 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.

# 宠伴生活馆 - 产品设计文档
> 版本v1.5
> 日期2026-04-01
> 状态:产品设计确认中
---
## 一、产品定位
**平台定位:** 宠物店服务管理 SaaS 平台,支持多家宠物店入驻
**目标用户v1**
- 宠物店老板 / 员工(管理预约 + 填写报告)
- 宠主通过微信查看服务报告v2
**登录方式:**
- 微信授权登录(老板/员工主要登录方式)
- 手机号+短信验证码(备用)
---
## 二、核心功能闭环v1
```
预约创建(老板/员工)→ 待确认 → 开始服务(谁点谁就是技师)→ 进行中 → 填写报告 → 发送报告 → 已完成
↘ 已取消 → 归到已完成Tab
```
**报告分享流程v1 重点):**
```
填写报告(照片+备注)→ 点击「发送报告」→ 选择发送方式
├── 复制链接(发给宠主微信)
└── 下载二维码(现场扫码)
```
---
## 三、数据模型
### t_store店铺表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | 主键 |
| name | VARCHAR | 店铺名称 |
| logo | VARCHAR | 店铺Logo |
| phone | VARCHAR | 联系电话 |
| address | VARCHAR | 地址 |
| intro | TEXT | 简介 |
| owner_id | BIGINT | 老板用户ID |
| invite_code | VARCHAR | 员工邀请码8位 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
### t_user用户表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | 主键 |
| username | VARCHAR | 用户名 |
| password | VARCHAR | 密码 |
| name | VARCHAR | 姓名/技师名 |
| phone | VARCHAR | 手机号 |
| avatar | VARCHAR | 头像 |
| store_id | BIGINT | 所属店铺 |
| role | VARCHAR | boss / staff |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
### t_appointment预约表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | 主键 |
| pet_name | VARCHAR | 宠物名称 |
| pet_type | VARCHAR | 宠物类型(猫/狗/其他) |
| service_type | VARCHAR | 服务类型 |
| appointment_time | DATETIME | 预约时间(无限制,随便选) |
| status | VARCHAR | new / doing / done / cancel |
| store_id | BIGINT | 店铺ID |
| user_id | BIGINT | 创建人ID谁建的 |
| assigned_user_id | BIGINT | 技师ID开始服务时赋值 |
| remark | TEXT | 备注 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
### t_report报告表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | 主键 |
| appointment_id | BIGINT | 预约ID |
| before_photo | VARCHAR | 服务前照片URL |
| after_photo | VARCHAR | 服务后照片URL |
| remark | TEXT | 备注 |
| user_id | BIGINT | 技师ID |
| store_id | BIGINT | 店铺ID |
| report_token | VARCHAR | 报告访问令牌UUID永久有效 |
| pet_name | VARCHAR | 宠物名(冗余) |
| service_type | VARCHAR | 服务类型(冗余) |
| appointment_time | DATETIME | 服务时间(冗余) |
| staff_name | VARCHAR | 技师名(冗余) |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
### t_service_type服务类型表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | 主键 |
| store_id | BIGINT | 店铺IDNULL表示系统默认 |
| name | VARCHAR | 服务名称 |
| create_time | DATETIME | 创建时间 |
---
## 四、角色权限
| 功能 | 老板boss | 员工staff |
|------|-------------|---------------|
| 预约列表 | ✅ | ✅ |
| 新建预约 | ✅ | ✅ |
| 开始服务/填写报告 | ✅ | ✅ |
| 发送报告 | ✅ | ✅ |
| 员工管理 | ✅ | ❌ |
| 邀请码 | ✅ | ❌ |
| 店铺设置 | ✅ | ❌ |
| 服务类型管理 | ✅ | ❌ |
### 页面入口
- **index.html统一入口**:老板/员工同一套页面,通过「我的」页面区分功能
- 老板「我的」:员工管理 / 服务类型 / 店铺设置 / 我的订单
- 员工「我的」:我的订单
---
## 五、核心功能详解
### 5.1 登录体系
**微信授权登录**(主)
- 老板/员工均可使用微信授权登录
**手机号+短信验证码登录**(备用)
**员工入职流程:**
- 老板后台生成邀请码 → 员工点链接注册 → 自动关联店铺
- 老板后台直接新增员工 → 系统生成随机6位密码 → 员工用手机号+密码登录
### 5.2 预约管理
**创建预约:**
- 老板/员工均可手动创建
- 字段:宠物名字、宠物类型(猫/狗/其他)、服务类型、预约时间、备注
- 建档人 = 当前登录用户
- 预约时间无限制,随便选
**服务类型:**
- 系统默认:洗澡、美容、洗澡+美容、剪指甲、驱虫
- 老板可在默认基础上新增/编辑/删除自定义服务类型
- 员工只能使用,不能管理
**预约状态流转:**
- new待确认→ doing进行中→ done已完成
- new待确认→ cancel已取消→ 归到「已完成」Tab显示
- doing进行中→ done已完成
**开始服务:**
- 点击「开始服务」→ 状态变为「进行中」
- assigned_user_id = 当前登录用户(谁点谁服务)
### 5.3 服务报告
**填写报告(进行中状态可操作):**
- 服务前照片(必填)
- 服务后照片(必填)
- 备注(选填)
- 技师 = 开始服务时分配的用户
- 提交后锁死,不可再修改
- 一约一份报告
### 5.4 发送报告v1 核心功能)
**操作入口:** 报告填写完成后,点击「发送报告」按钮
**发送方式:**
1. **复制链接** — 生成报告链接,一键复制到剪贴板,可发给宠主微信
2. **下载二维码** — 生成报告二维码图片,保存到相册,可打印或现场扫码
**报告链接:**
- URL`https://域名/report.html?token=xxx`
- Token = UUID永久有效
- 宠主打开无需登录v1 免登录)
**报告二维码:**
- 扫码直接打开报告页
- 打印出来可贴在墙上/前台,方便宠主扫码
### 5.5 H5 报告页
**访问方式:** 链接或二维码扫码,免登录
**报告页内容:**
- 品牌头部:店铺 Logo + 店铺名称 + 联系电话 + 地址
- 服务信息卡片:宠物名、服务项目、服务时间、技师名
- 前后对比照片(并排展示)
- 技师备注
- 底部品牌信息(即使链接被转发,店铺信息持续透出)
**分享能力:**
- 长按图片可保存
- 链接可复制转发微信
### 5.6 老板后台(合并到「我的」页面)
**员工管理:**
- 员工邀请码(复制分享)
- 新增员工(姓名+手机号,系统生成密码)
- 删除员工
**服务类型:**
- 新增服务类型
- 删除自定义服务类型(系统默认不可删)
**店铺设置:**
- 店铺名称
- 店铺Logo
- 联系电话
- 地址
- 简介
---
## 六、技术方案
| 端 | 技术 |
|----|------|
| APP前端 | uniapp + Vue3 |
| H5报告页 | Vue3独立部署 |
| 后端 | Spring Boot 3.2 + JPA |
| 数据库 | MySQL |
| 图片存储 | 本地存储后续可平滑切换OSS |
---
## 七、开发进度
| 优先级 | 功能 | 状态 |
|--------|------|------|
| P0 | 老板入驻/登录 | ✅ |
| P0 | 员工邀请码注册 | ✅ |
| P0 | 员工登录(微信+验证码) | ✅ |
| P0 | 预约列表 | ✅ |
| P0 | 预约创建 | ✅ |
| P0 | 开始服务(分配技师) | ✅ |
| P0 | 报告填写 | ✅ |
| P0 | 发送报告(复制链接+下载二维码) | 🔨 本次 |
| P0 | H5报告页品牌信息强化 | 🔨 本次 |
| P0 | H5报告页链接+二维码) | ✅ |
| P0 | 老板后台(员工管理+邀请码) | ✅ 已合并到index.html |
| P0 | 老板后台(预约概览) | ✅ 已合并到index.html |
| P1 | 服务类型管理(老板后台) | ✅ |
| P1 | 店铺设置(老板后台) | ✅ |
| P1 | 本地文件上传替代base64 | ✅ |
| P2 | 宠主端(历史报告汇总) | ⏳ v2 |
---
## 八、数据库变更
```sql
-- 预约表新增技师字段
ALTER TABLE t_appointment ADD COLUMN assigned_user_id BIGINT COMMENT '技师ID';
-- 店铺表新增简介字段
ALTER TABLE t_store ADD COLUMN intro TEXT COMMENT '简介';
-- 服务类型表
CREATE TABLE t_service_type (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
store_id BIGINT COMMENT '店铺IDNULL表示系统默认',
name VARCHAR(50) NOT NULL,
create_time DATETIME
);
-- 系统默认服务类型
INSERT INTO t_service_type (store_id, name, create_time) VALUES
(NULL, '洗澡', NOW()),
(NULL, '美容', NOW()),
(NULL, '洗澡+美容', NOW()),
(NULL, '剪指甲', NOW()),
(NULL, '驱虫', NOW());
```
---
## 九、待确认/后续事项
- [ ] 宠伴生活馆 Logo 素材
- [ ] 图片存储方案(本地 / OSS
- [ ] 短信验证码服务商接入
- [ ] 微信授权登录 AppID/AppSecret
- [ ] H5页面域名及部署方案
- [ ] 宠主端v2历史报告汇总、宠主登录