添加docs目录和项目文档
This commit is contained in:
parent
e7f9b21d06
commit
cd8cac9a97
100
docs/CODE-MAP.md
Normal file
100
docs/CODE-MAP.md
Normal file
@ -0,0 +1,100 @@
|
||||
# CODE MAP(Flutter 项目)
|
||||
|
||||
> 版本:v1.1.0+2 | 更新:2026-02-17
|
||||
|
||||
## 1) 目录树(文件级,聚焦 lib/)
|
||||
|
||||
```
|
||||
banxiang_app/
|
||||
├── lib/
|
||||
│ ├── main.dart
|
||||
│ ├── theme.dart
|
||||
│ ├── models/
|
||||
│ │ ├── activity.dart
|
||||
│ │ ├── hospital.dart
|
||||
│ │ ├── message.dart
|
||||
│ │ └── user.dart
|
||||
│ ├── screens/
|
||||
│ │ ├── activity_detail_screen.dart
|
||||
│ │ ├── activity_list_screen.dart
|
||||
│ │ ├── ai_chat_screen.dart
|
||||
│ │ ├── booking_screen.dart
|
||||
│ │ ├── create_activity_screen.dart
|
||||
│ │ ├── department_screen.dart
|
||||
│ │ ├── doctor_list_screen.dart
|
||||
│ │ ├── home_screen.dart
|
||||
│ │ ├── hospital_list_screen.dart
|
||||
│ │ ├── login_screen.dart
|
||||
│ │ ├── main_screen.dart
|
||||
│ │ ├── medical_screen.dart
|
||||
│ │ ├── messages_screen.dart
|
||||
│ │ ├── order_list_screen.dart
|
||||
│ │ ├── payment_screen.dart
|
||||
│ │ ├── profile_screen.dart
|
||||
│ │ ├── profile_setup_screen.dart
|
||||
│ │ ├── publish_screen.dart
|
||||
│ │ └── services_screen.dart
|
||||
│ ├── services/
|
||||
│ │ ├── activity_service.dart
|
||||
│ │ ├── ai_service.dart
|
||||
│ │ ├── auth_service.dart
|
||||
│ │ └── medical_service.dart
|
||||
│ └── utils/
|
||||
│ └── constants.dart
|
||||
```
|
||||
|
||||
## 2) 文件说明
|
||||
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| main.dart | 应用入口,读取本地token后决定进入登录页或活动广场页 |
|
||||
| theme.dart | 定义全局浅色主题 AppTheme.lightTheme |
|
||||
| models/activity.dart | 活动实体模型,承载标题、分类、时间、地点、人数等基础字段 |
|
||||
| models/hospital.dart | 医疗相关实体,含 Hospital、Doctor、Appointment 三类模型 |
|
||||
| models/message.dart | 聊天消息模型,含文本、发送方与时间 |
|
||||
| models/user.dart | 用户资料模型,含手机号、昵称、性别、兴趣等 |
|
||||
| screens/activity_list_screen.dart | 活动广场页,瀑布流展示活动卡片+底部导航+发布入口 |
|
||||
| screens/activity_detail_screen.dart | 活动详情页,含图片轮播、评论区、点赞与报名底栏 |
|
||||
| screens/login_screen.dart | 手机验证码模拟登录页,登录后按新老用户分流 |
|
||||
| screens/profile_setup_screen.dart | 新用户三步资料完善流程 |
|
||||
| screens/profile_screen.dart | 个人资料编辑页 |
|
||||
| screens/publish_screen.dart | 发布页,支持图片/视频上传 |
|
||||
| screens/ai_chat_screen.dart | AI聊天页,支持快捷提问和消息渲染 |
|
||||
| screens/services_screen.dart | 生活服务总入口页 |
|
||||
| screens/medical_screen.dart | 医疗健康服务聚合页 |
|
||||
| screens/messages_screen.dart | 消息通知页(空壳) |
|
||||
| screens/main_screen.dart | 底部Tab主容器(旧版,已不作入口) |
|
||||
| services/auth_service.dart | 认证与用户资料服务,管理登录态与资料更新 |
|
||||
| services/activity_service.dart | 活动 mock 数据服务 |
|
||||
| services/ai_service.dart | AI回复 mock 服务,基于关键词规则 |
|
||||
| services/medical_service.dart | 医疗 mock 数据服务 |
|
||||
| utils/constants.dart | 应用常量(应用名、活动分类、兴趣标签等) |
|
||||
|
||||
## 3) 核心方法索引
|
||||
|
||||
| 文件 | 方法 | 说明 |
|
||||
|---|---|---|
|
||||
| main.dart | main | 读取token决定首屏 |
|
||||
| login_screen.dart | _login | 校验验证码+写token+登录分流 |
|
||||
| profile_setup_screen.dart | _finishSetup | 提交资料跳转活动页 |
|
||||
| activity_list_screen.dart | _buildBody | 构建瀑布流活动列表 |
|
||||
| activity_list_screen.dart | _buildFloatingActionButton | 构建中心悬浮发布按钮 |
|
||||
| activity_detail_screen.dart | _toggleLike | 切换点赞状态 |
|
||||
| activity_detail_screen.dart | _postComment | 发布评论 |
|
||||
| publish_screen.dart | _publish | 校验并发布 |
|
||||
| publish_screen.dart | _pickImages | 多选图片(最多9张) |
|
||||
| auth_service.dart | checkLoginStatus | 读取token恢复登录态 |
|
||||
| auth_service.dart | updateProfile | 更新用户资料 |
|
||||
| activity_service.dart | getActivities | 按分类筛选活动 |
|
||||
| ai_service.dart | mockChat | 基于关键词返回AI回复 |
|
||||
|
||||
## 4) 数据模型汇总
|
||||
|
||||
| 模型 | 主要字段 | 用途 |
|
||||
|---|---|---|
|
||||
| Activity | id, title, category, time, location, maxParticipants, currentParticipants | 社区活动核心实体 |
|
||||
| User | id, phone, nickname, avatar, birthYear, gender, city, interests | 用户画像 |
|
||||
| Hospital | id, name, address, departments | 医院实体 |
|
||||
| Doctor | id, name, department, title, fee | 医生实体 |
|
||||
| Appointment | id, hospitalName, doctorName, time, status, fee | 预约订单 |
|
||||
| Message | text, isUser, time | AI聊天消息 |
|
||||
1458
docs/PRD-V1.0-MVP核心功能.md
Normal file
1458
docs/PRD-V1.0-MVP核心功能.md
Normal file
File diff suppressed because it is too large
Load Diff
617
docs/PRD-V1.1-体验优化版.md
Normal file
617
docs/PRD-V1.1-体验优化版.md
Normal file
@ -0,0 +1,617 @@
|
||||
---
|
||||
slug: prd-v1-1-experience
|
||||
---
|
||||
|
||||
# 「伴享」PRD V1.1 — 体验优化版
|
||||
|
||||
**版本**: V1.1
|
||||
**目标**: V1.0后3周上线,2000人公测,提升留存,引入社区队长和会员体系
|
||||
**发布时间**: 2026年4月下旬
|
||||
**前置条件**: V1.0内测Gate条件全部达标
|
||||
|
||||
---
|
||||
|
||||
## 1. 版本概述
|
||||
|
||||
### 1.1 核心目标
|
||||
|
||||
| 维度 | 目标 | 衡量指标 |
|
||||
|------|------|----------|
|
||||
| 用户增长 | 2000人公测 | 注册用户≥2000 |
|
||||
| 留存提升 | 7日留存50%+ | 较V1.0提升10% |
|
||||
| 社区运营 | 社区队长体系运转 | 队长≥20人 |
|
||||
| 商业验证 | 会员付费起步 | 付费率>5% |
|
||||
| 服务扩展 | 新增家政+日用消费 | 服务板块从1→3 |
|
||||
|
||||
### 1.2 新增功能清单
|
||||
|
||||
| 模块 | 功能 | 优先级 | 开发周期 |
|
||||
|------|------|--------|----------|
|
||||
| 社区队长 | 申请/审核/等级/排行榜 | P0 | 2周 |
|
||||
| 会员订阅 | 月卡/年卡/权益/子女代付 | P0 | 1周 |
|
||||
| 家政服务 | 保洁/维修/陪护 | P1 | 1周 |
|
||||
| 日常消费 | 生鲜配送/日化用品 | P1 | 1周 |
|
||||
| 新手引导 | 首次使用动画引导 | P1 | 0.5周 |
|
||||
| 分享功能 | 活动分享到微信 | P1 | 0.5周 |
|
||||
| 消息推送 | 活动提醒/AI关怀 | P1 | 0.5周 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 社区队长体系
|
||||
|
||||
### 2.1 需求描述
|
||||
|
||||
社区队长是「伴享」增长引擎的核心。借鉴Meet5 Community Captains模式,从广场舞队长、社区积极分子、退休干部、太极教练等人群中招募,赋予组织权限和激励,驱动线下活动供给和用户增长。
|
||||
|
||||
### 2.2 用户故事
|
||||
|
||||
- **US-CQ.1**: 作为活跃用户,我组织了3次以上活动,希望获得官方认可
|
||||
- **US-CQ.2**: 作为社区队长,我希望看到自己的等级和排名
|
||||
- **US-CQ.3**: 作为社区队长,我希望组织活动能获得补贴
|
||||
- **US-CQ.4**: 作为普通用户,我希望优先参加队长组织的活动(更有保障)
|
||||
|
||||
### 2.3 队长等级体系
|
||||
|
||||
| 等级 | 条件 | 权益 | 标识 |
|
||||
|------|------|------|------|
|
||||
| **见习队长** | 累计组织3次活动,好评率>80% | 专属标识🏅、活动优先推荐、队长培训群 | 铜色徽章 |
|
||||
| **银牌队长** | 累计20次、好评率>90%、活跃用户带新>20人 | 免费会员1年、活动补贴20元/次、月度队长聚会 | 银色徽章 |
|
||||
| **金牌队长** | 累计50次、好评率>95%、带新>100人 | 月度奖金500元、平台分成5%、专属客服 | 金色徽章 |
|
||||
| **荣誉队长** | 年度评选TOP10 | 品牌大使、媒体曝光、年度旅行奖励 | 钻石徽章 |
|
||||
|
||||
### 2.4 交互流程
|
||||
|
||||
#### 队长申请
|
||||
|
||||
```
|
||||
我的 → 社区队长 → 申请成为队长
|
||||
↓
|
||||
申请条件检查:
|
||||
├── 已实名认证 ✓
|
||||
├── 累计组织≥3次活动 ✓
|
||||
└── 好评率≥80% ✓
|
||||
↓
|
||||
填写申请信息:
|
||||
├── 自我介绍(100字以内)
|
||||
├── 擅长活动类型(多选)
|
||||
├── 活动区域(选择区域)
|
||||
└── 联系方式确认
|
||||
↓
|
||||
提交申请 → 后台审核(1-3天)
|
||||
├── 通过 → Push通知"恭喜成为见习队长!" + 解锁队长功能
|
||||
└── 拒绝 → 通知原因 + 建议继续积累
|
||||
```
|
||||
|
||||
#### 队长主页
|
||||
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 🏅 银牌队长 · 李教练 │
|
||||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||||
│ 累计活动:28次 好评率:96% │
|
||||
│ 活跃粉丝:156人 排名:#5 │
|
||||
├──────────────────────────────────┤
|
||||
│ 📊 本月数据 │
|
||||
│ 组织活动 8次 新增粉丝 23人 │
|
||||
│ 获得好评 52个 补贴收入 ¥160 │
|
||||
├──────────────────────────────────┤
|
||||
│ 🎯 升级进度 │
|
||||
│ 距金牌队长还需: │
|
||||
│ ▓▓▓▓▓▓▓▓░░ 28/50次活动 │
|
||||
│ ▓▓▓▓▓▓▓▓▓░ 96%/95%好评 │
|
||||
│ ▓▓▓▓▓░░░░░ 56/100带新 │
|
||||
├──────────────────────────────────┤
|
||||
│ [创建活动] [我的粉丝] [收入明细] │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.5 数据结构
|
||||
|
||||
```sql
|
||||
-- 队长信息表
|
||||
CREATE TABLE captains (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT UNIQUE REFERENCES users(id),
|
||||
level VARCHAR(20) DEFAULT 'trainee'
|
||||
CHECK (level IN ('trainee', 'silver', 'gold', 'honor')),
|
||||
bio TEXT,
|
||||
specialties TEXT[],
|
||||
serving_area VARCHAR(50),
|
||||
total_activities INTEGER DEFAULT 0,
|
||||
total_participants INTEGER DEFAULT 0,
|
||||
total_new_users INTEGER DEFAULT 0,
|
||||
avg_rating DECIMAL(2,1) DEFAULT 0,
|
||||
monthly_subsidy DECIMAL(10,2) DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'active', 'suspended', 'revoked')),
|
||||
approved_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 队长申请表
|
||||
CREATE TABLE captain_applications (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
bio TEXT,
|
||||
specialties TEXT[],
|
||||
serving_area VARCHAR(50),
|
||||
contact_info JSONB,
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'approved', 'rejected')),
|
||||
reviewer_note TEXT,
|
||||
reviewed_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 队长排行榜(月度物化视图)
|
||||
CREATE MATERIALIZED VIEW captain_monthly_ranking AS
|
||||
SELECT
|
||||
c.user_id,
|
||||
u.nickname,
|
||||
u.avatar_url,
|
||||
c.level,
|
||||
COUNT(a.id) AS monthly_activities,
|
||||
SUM(ap.cnt) AS monthly_participants,
|
||||
AVG(ap.avg_rating) AS monthly_avg_rating
|
||||
FROM captains c
|
||||
JOIN users u ON c.user_id = u.id
|
||||
LEFT JOIN activities a ON a.creator_id = c.user_id
|
||||
AND a.start_time >= date_trunc('month', CURRENT_DATE)
|
||||
LEFT JOIN (
|
||||
SELECT activity_id, COUNT(*) cnt, AVG(rating) avg_rating
|
||||
FROM activity_participants
|
||||
WHERE status = 'signed_in'
|
||||
GROUP BY activity_id
|
||||
) ap ON ap.activity_id = a.id
|
||||
WHERE c.status = 'active'
|
||||
GROUP BY c.user_id, u.nickname, u.avatar_url, c.level
|
||||
ORDER BY monthly_activities DESC;
|
||||
```
|
||||
|
||||
### 2.6 API接口
|
||||
|
||||
**POST /api/v1/captains/apply**
|
||||
```json
|
||||
{
|
||||
"bio": "退休体育老师,太极拳教练,组织活动经验丰富",
|
||||
"specialties": ["太极", "晨练", "户外徒步"],
|
||||
"servingArea": "武侯区"
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/captains/ranking**
|
||||
```json
|
||||
{
|
||||
"ranking": [
|
||||
{
|
||||
"rank": 1,
|
||||
"userId": 5,
|
||||
"nickname": "李教练",
|
||||
"level": "silver",
|
||||
"monthlyActivities": 12,
|
||||
"monthlyParticipants": 98,
|
||||
"avgRating": 4.9
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/captains/me/dashboard**
|
||||
```json
|
||||
{
|
||||
"level": "silver",
|
||||
"stats": {
|
||||
"totalActivities": 28,
|
||||
"totalParticipants": 312,
|
||||
"totalNewUsers": 56,
|
||||
"avgRating": 4.8,
|
||||
"monthlySubsidy": 160
|
||||
},
|
||||
"upgradeProgress": {
|
||||
"nextLevel": "gold",
|
||||
"activities": { "current": 28, "required": 50 },
|
||||
"rating": { "current": 96, "required": 95 },
|
||||
"newUsers": { "current": 56, "required": 100 }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2.7 验收标准
|
||||
|
||||
- [ ] 满足条件的用户可申请队长
|
||||
- [ ] 审核1-3天内完成
|
||||
- [ ] 队长主页展示数据准确
|
||||
- [ ] 排行榜每日更新
|
||||
- [ ] 等级自动升降
|
||||
- [ ] 活动补贴按月结算
|
||||
|
||||
---
|
||||
|
||||
## 3. 会员订阅系统
|
||||
|
||||
### 3.1 需求描述
|
||||
|
||||
会员体系是核心变现手段之一。提供基础会员和尊享会员两档,支持子女代付(重要转化场景)。
|
||||
|
||||
### 3.2 会员权益对比
|
||||
|
||||
| 功能 | 免费用户 | 基础会员(29元/月 或 299元/年) | 尊享会员(待V2.0) |
|
||||
|------|---------|-------------------------------|-------------------|
|
||||
| 活动参与 | 每月3次 | 无限次 | 无限+优先 |
|
||||
| AI管家 | 每天20条 | 无限对话 | 专属AI+家庭共享 |
|
||||
| 服务预约 | 基础 | 优先预约+专属折扣5% | VIP折扣10% |
|
||||
| 客服 | 无 | 专属客服(微信1v1) | 专属客服+电话 |
|
||||
| 生日礼物 | 无 | 电子贺卡+优惠券 | 实物礼品 |
|
||||
| 标识 | 无 | 会员标识✨ | VIP标识👑 |
|
||||
|
||||
### 3.3 交互流程
|
||||
|
||||
#### 开通会员
|
||||
|
||||
```
|
||||
我的 → 会员中心
|
||||
↓
|
||||
┌──────────────────────────────────┐
|
||||
│ ✨ 伴享会员 │
|
||||
│ │
|
||||
│ 解锁全部功能,让生活更便捷 │
|
||||
│ │
|
||||
│ ┌────────────┐ ┌────────────┐ │
|
||||
│ │ 月卡 │ │ 年卡 │ │
|
||||
│ │ 29元/月 │ │ 299元/年 │ │
|
||||
│ │ │ │ 省49元 🔥 │ │
|
||||
│ │ [开通] │ │ [开通] │ │
|
||||
│ └────────────┘ └────────────┘ │
|
||||
│ │
|
||||
│ 或者让子女帮您开通: │
|
||||
│ [生成代付链接] │
|
||||
│ │
|
||||
│ 会员权益: │
|
||||
│ ✅ 活动不限次 │
|
||||
│ ✅ AI管家不限量 │
|
||||
│ ✅ 服务优先预约+折扣 │
|
||||
│ ✅ 专属客服 │
|
||||
│ ✅ 生日礼物 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 子女代付
|
||||
|
||||
```
|
||||
父母端:会员中心 → [生成代付链接] → 生成微信分享卡片
|
||||
↓
|
||||
子女微信:收到分享卡片 → 打开支付页面 → 微信支付
|
||||
↓
|
||||
父母端:收到Push通知 "您的子女为您开通了会员✨"
|
||||
```
|
||||
|
||||
### 3.4 数据结构
|
||||
|
||||
```sql
|
||||
-- 会员表
|
||||
CREATE TABLE memberships (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
plan VARCHAR(20) NOT NULL CHECK (plan IN ('monthly', 'yearly')),
|
||||
price DECIMAL(10, 2) NOT NULL,
|
||||
paid_by_user_id BIGINT REFERENCES users(id), -- 代付人(子女)
|
||||
starts_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
auto_renew BOOLEAN DEFAULT FALSE, -- 明确不设自动续费
|
||||
status VARCHAR(20) DEFAULT 'active'
|
||||
CHECK (status IN ('active', 'expired', 'cancelled')),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_membership_user ON memberships(user_id, status);
|
||||
```
|
||||
|
||||
### 3.5 API接口
|
||||
|
||||
**POST /api/v1/membership/subscribe**
|
||||
```json
|
||||
{
|
||||
"plan": "yearly",
|
||||
"payForUserId": null // 为自己开通
|
||||
}
|
||||
// Response
|
||||
{
|
||||
"orderNo": "MEM20260420001",
|
||||
"amount": 299,
|
||||
"wxPayParams": { ... }
|
||||
}
|
||||
```
|
||||
|
||||
**POST /api/v1/membership/generate-pay-link**
|
||||
```json
|
||||
// 生成子女代付链接
|
||||
// Response
|
||||
{
|
||||
"payLink": "https://pay.banxiang.com/member/xxx",
|
||||
"shareCard": {
|
||||
"title": "张阿姨邀请您为TA开通伴享会员",
|
||||
"description": "299元/年,让父母的生活更便捷",
|
||||
"imageUrl": "https://..."
|
||||
},
|
||||
"expiresAt": "2026-04-21T10:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
### 3.6 验收标准
|
||||
|
||||
- [ ] 支付后立即生效
|
||||
- [ ] 不设自动续费(合规要求)
|
||||
- [ ] 到期前7天/3天/1天提醒续费
|
||||
- [ ] 子女代付链接24小时有效
|
||||
- [ ] 会员标识在头像/个人页显示
|
||||
- [ ] 免费用户超出限额时引导开通会员
|
||||
|
||||
---
|
||||
|
||||
## 4. 家政服务
|
||||
|
||||
### 4.1 需求描述
|
||||
|
||||
接入成都本地2-3家家政公司,提供保洁、维修、陪护三项基础服务。
|
||||
|
||||
### 4.2 用户故事
|
||||
|
||||
- **US-HP.1**: 作为用户,我希望一键预约保洁阿姨上门
|
||||
- **US-HP.2**: 作为用户,我希望看到服务人员的评价和资质
|
||||
- **US-HP.3**: 作为用户,我希望服务完成后可以评价
|
||||
|
||||
### 4.3 服务列表
|
||||
|
||||
| 服务 | 价格区间 | 平台佣金 | 服务时长 |
|
||||
|------|----------|----------|----------|
|
||||
| 钟点保洁 | 40-60元/时 | 15% | 2-4小时 |
|
||||
| 深度保洁 | 200-400元/次 | 15% | 4-8小时 |
|
||||
| 水电维修 | 50-200元/次 | 12% | 按需 |
|
||||
| 家电维修 | 80-300元/次 | 12% | 按需 |
|
||||
| 陪同就医 | 100-200元/次 | 10% | 半天/全天 |
|
||||
| 陪聊服务 | 50-80元/时 | 10% | 1-3小时 |
|
||||
|
||||
### 4.4 交互流程
|
||||
|
||||
```
|
||||
服务Tab → 家政服务
|
||||
↓
|
||||
┌──────────────────────────────────┐
|
||||
│ 🏠 家政服务 │
|
||||
├──────────────────────────────────┤
|
||||
│ ┌────────┐ ┌────────┐ ┌────────┐│
|
||||
│ │ 🧹 │ │ 🔧 │ │ 🤝 ││
|
||||
│ │ 保洁 │ │ 维修 │ │ 陪护 ││
|
||||
│ └────────┘ └────────┘ └────────┘│
|
||||
├──────────────────────────────────┤
|
||||
│ 推荐服务人员: │
|
||||
│ ┌────────────────────────────┐ │
|
||||
│ │ 👩 李阿姨 好评率98% │ │
|
||||
│ │ 擅长:保洁 服务次数:320 │ │
|
||||
│ │ ¥50/小时 [预约] │ │
|
||||
│ └────────────────────────────┘ │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 4.5 数据结构
|
||||
|
||||
```sql
|
||||
-- 服务商表
|
||||
CREATE TABLE service_providers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
company_name VARCHAR(100),
|
||||
category VARCHAR(50), -- housekeeping/repair/companion
|
||||
contact_phone VARCHAR(20),
|
||||
license_no VARCHAR(50),
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 服务人员表
|
||||
CREATE TABLE service_workers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
name VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
skills TEXT[],
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
service_count INTEGER DEFAULT 0,
|
||||
hourly_rate DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 服务订单表
|
||||
CREATE TABLE service_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
worker_id BIGINT REFERENCES service_workers(id),
|
||||
service_type VARCHAR(50),
|
||||
scheduled_date DATE,
|
||||
scheduled_time TIME,
|
||||
duration_hours DECIMAL(3,1),
|
||||
address TEXT,
|
||||
requirements TEXT,
|
||||
amount DECIMAL(10,2),
|
||||
platform_fee DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'paid', 'confirmed', 'in_progress', 'completed', 'cancelled')),
|
||||
rating INTEGER CHECK (rating BETWEEN 1 AND 5),
|
||||
review TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 4.6 API接口
|
||||
|
||||
**GET /api/v1/services/housekeeping/workers**
|
||||
```
|
||||
Query: type=cleaning|repair|companion&lat=30.57&lng=104.07
|
||||
```
|
||||
|
||||
**POST /api/v1/services/housekeeping/orders**
|
||||
```json
|
||||
{
|
||||
"workerId": 1,
|
||||
"serviceType": "cleaning",
|
||||
"scheduledDate": "2026-04-22",
|
||||
"scheduledTime": "09:00",
|
||||
"durationHours": 3,
|
||||
"address": "武侯区XX小区3栋2单元501",
|
||||
"requirements": "重点打扫厨房和卫生间"
|
||||
}
|
||||
```
|
||||
|
||||
### 4.7 验收标准
|
||||
|
||||
- [ ] 服务人员展示评价和资质
|
||||
- [ ] 预约流程≤3步
|
||||
- [ ] 支付前二次确认
|
||||
- [ ] 服务完成后可评价
|
||||
- [ ] 订单可取消(提前24小时免费,之内收取30%)
|
||||
|
||||
---
|
||||
|
||||
## 5. 日常消费服务
|
||||
|
||||
### 5.1 需求描述
|
||||
|
||||
整合2-3家本地生鲜/日化商家,用户可在线选购,30分钟-2小时配送到家。
|
||||
|
||||
### 5.2 交互流程
|
||||
|
||||
```
|
||||
服务Tab → 日常消费 → 商家列表
|
||||
↓
|
||||
选择商家 → 浏览商品(分类:蔬菜/水果/肉蛋/日化)
|
||||
↓
|
||||
加入购物车 → 确认订单(地址+时间)→ 微信支付
|
||||
↓
|
||||
等待配送 → 收货确认 → 评价
|
||||
```
|
||||
|
||||
### 5.3 数据结构
|
||||
|
||||
```sql
|
||||
-- 商品表
|
||||
CREATE TABLE products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
name VARCHAR(100),
|
||||
category VARCHAR(50),
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
price DECIMAL(10,2),
|
||||
unit VARCHAR(20), -- 斤/个/盒/份
|
||||
stock INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 购物车表
|
||||
CREATE TABLE cart_items (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
product_id BIGINT REFERENCES products(id),
|
||||
quantity INTEGER DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(user_id, product_id)
|
||||
);
|
||||
|
||||
-- 配送订单表
|
||||
CREATE TABLE delivery_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
items JSONB, -- [{productId, name, qty, price}]
|
||||
total_amount DECIMAL(10,2),
|
||||
delivery_fee DECIMAL(10,2) DEFAULT 0,
|
||||
delivery_address TEXT,
|
||||
delivery_phone VARCHAR(11),
|
||||
estimated_delivery TIMESTAMP,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 5.4 验收标准
|
||||
|
||||
- [ ] 商品展示清晰(大图+价格+单位)
|
||||
- [ ] 购物车增删改查正常
|
||||
- [ ] 满30元免配送费,否则收5元
|
||||
- [ ] 订单实时状态更新
|
||||
|
||||
---
|
||||
|
||||
## 6. 新手引导
|
||||
|
||||
### 6.1 交互流程
|
||||
|
||||
```
|
||||
首次打开APP → 3张引导卡片(可跳过)
|
||||
├── 卡片1: "发现身边的好活动" + 活动截图
|
||||
├── 卡片2: "AI管家,一句话搞定" + AI管家截图
|
||||
└── 卡片3: "便捷生活服务" + 服务截图
|
||||
↓
|
||||
首次进入首页 → 高亮引导浮层(逐步指引)
|
||||
├── Step 1: "点这里搜索活动" → 高亮搜索栏
|
||||
├── Step 2: "这是AI管家入口" → 高亮底部Tab
|
||||
└── Step 3: "这是服务入口" → 高亮服务Tab
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 分享功能
|
||||
|
||||
### 7.1 活动分享到微信
|
||||
|
||||
```
|
||||
活动详情页 → 右上角分享按钮
|
||||
↓
|
||||
选择:微信好友 / 朋友圈
|
||||
↓
|
||||
生成分享卡片:
|
||||
┌────────────────────────┐
|
||||
│ 🏃 太极晨练·人民公园 │
|
||||
│ 4月3日 7:00 还剩4个名额│
|
||||
│ 来「伴享」一起参加吧! │
|
||||
│ [伴享APP logo] │
|
||||
└────────────────────────┘
|
||||
↓
|
||||
接收者点击 → H5落地页(含下载引导)
|
||||
```
|
||||
|
||||
### 7.2 验收标准
|
||||
|
||||
- [ ] 微信分享卡片展示正确
|
||||
- [ ] H5落地页可查看活动详情
|
||||
- [ ] 引导下载APP
|
||||
|
||||
---
|
||||
|
||||
## 8. V1.1验收标准总表
|
||||
|
||||
| 指标 | 目标值 | 判定 |
|
||||
|------|--------|------|
|
||||
| 注册用户 | ≥2000 | 必达 |
|
||||
| 社区队长 | ≥20人 | 必达 |
|
||||
| 会员付费率 | >5% | 必达 |
|
||||
| 7日留存率 | >50% | 必达 |
|
||||
| 家政服务订单 | >50单/月 | 目标 |
|
||||
| 配送服务订单 | >100单/月 | 目标 |
|
||||
| 分享率 | >10%用户 | 目标 |
|
||||
| NPS | >40 | 目标 |
|
||||
|
||||
### 进入V1.2的Gate条件
|
||||
|
||||
- [ ] 所有"必达"指标达标
|
||||
- [ ] 社区队长运营SOP建立
|
||||
- [ ] 商家合作流程跑通
|
||||
- [ ] V1.2需求评审通过
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
562
docs/PRD-V1.2-功能丰富版.md
Normal file
562
docs/PRD-V1.2-功能丰富版.md
Normal file
@ -0,0 +1,562 @@
|
||||
---
|
||||
slug: prd-v1-2-feature-rich
|
||||
---
|
||||
|
||||
# 「伴享」PRD V1.2 — 功能丰富版
|
||||
|
||||
**版本**: V1.2
|
||||
**目标**: V1.1后4周上线,5000人规模,健康管理+子女端+3个新服务
|
||||
**发布时间**: 2026年5月下旬
|
||||
**前置条件**: V1.1 Gate条件达标
|
||||
|
||||
---
|
||||
|
||||
## 1. 版本概述
|
||||
|
||||
### 1.1 核心目标
|
||||
|
||||
| 维度 | 目标 | 衡量指标 |
|
||||
|------|------|----------|
|
||||
| 用户规模 | 5000注册用户 | 注册≥5000 |
|
||||
| 子女覆盖 | 子女端1000+用户 | 小程序用户≥1000 |
|
||||
| 健康数据 | 手环接入用户>500 | 健康数据活跃 |
|
||||
| 月活 | 1500+月活 | MAU≥1500 |
|
||||
| 服务扩展 | 总计6个服务板块 | 新增候鸟/文教/设备 |
|
||||
|
||||
### 1.2 新增功能清单
|
||||
|
||||
| 模块 | 功能 | 优先级 | 开发周期 |
|
||||
|------|------|--------|----------|
|
||||
| 健康管理 | 手环接入/数据展示/异常报警/周报 | P0 | 2周 |
|
||||
| 子女端小程序 | 活动查看/健康数据/代办/代付 | P0 | 2周 |
|
||||
| 内容社区 | 朋友圈/话题广场 | P1 | 1周 |
|
||||
| 候鸟养老 | 旅居产品/短期度假 | P1 | 1周 |
|
||||
| 文化教育 | 老年大学/兴趣班 | P1 | 1周 |
|
||||
| 智能设备 | 设备商城/配对绑定 | P2 | 1周 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 健康管理模块
|
||||
|
||||
### 2.1 需求描述
|
||||
|
||||
接入华为/小米智能手环手表,自动采集步数、心率、血压、血糖、睡眠数据,建立电子健康档案,数据可视化展示,异常情况自动报警通知子女。
|
||||
|
||||
**重要声明**:本模块为健康记录工具,所有数据仅供参考,不构成医疗诊断。
|
||||
|
||||
### 2.2 用户故事
|
||||
|
||||
- **US-HM.1**: 作为用户,我希望手环数据自动同步到APP,不用手动录入
|
||||
- **US-HM.2**: 作为用户,我希望看到清晰的健康趋势图(血压/心率/步数)
|
||||
- **US-HM.3**: 作为子女,我希望父母血压异常时能收到通知
|
||||
- **US-HM.4**: 作为用户,我希望每周收到健康总结报告
|
||||
|
||||
### 2.3 功能详情
|
||||
|
||||
#### 2.3.1 设备绑定
|
||||
|
||||
**支持设备**(MVP阶段):
|
||||
- 华为手环系列(Band 8/9)
|
||||
- 华为手表系列(GT 4/5)
|
||||
- 小米手环系列(Band 8/9)
|
||||
- 小米手表系列
|
||||
|
||||
**绑定流程**:
|
||||
```
|
||||
健康管理 → 绑定设备 → 选择品牌
|
||||
↓
|
||||
华为:通过华为健康API OAuth授权
|
||||
小米:通过小米运动API OAuth授权
|
||||
↓
|
||||
授权成功 → 自动同步历史7天数据
|
||||
↓
|
||||
设置同步频率:每30分钟/每小时/手动
|
||||
```
|
||||
|
||||
#### 2.3.2 健康数据看板
|
||||
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ ❤️ 我的健康 │
|
||||
│ 2026年4月20日 周一 │
|
||||
├──────────────────────────────────┤
|
||||
│ 今日概览 │
|
||||
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
|
||||
│ │🚶 │ │❤️ │ │💤 │ │🩸 │ │
|
||||
│ │步数 │ │心率 │ │睡眠 │ │血压 │ │
|
||||
│ │6,842│ │72 │ │7.2h│ │正常 │ │
|
||||
│ └────┘ └────┘ └────┘ └────┘ │
|
||||
├──────────────────────────────────┤
|
||||
│ 血压趋势(近7天) │
|
||||
│ ┌────────────────────────────┐ │
|
||||
│ │ 140─╮ │ │
|
||||
│ │ 130─│─╮ ╭─╮ │ │
|
||||
│ │ 120─╰─╯─╮─╭╯ ╰─╮─● │ │
|
||||
│ │ 80─────╰╯──────╰── │ │
|
||||
│ │ 周一 二 三 四 五 六 日 │ │
|
||||
│ └────────────────────────────┘ │
|
||||
│ 收缩压: 125 mmHg 舒张压: 82 │
|
||||
│ 状态: ✅ 正常范围 │
|
||||
├──────────────────────────────────┤
|
||||
│ 本周报告 → │
|
||||
│ 异常预警设置 → │
|
||||
│ 健康档案 → │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 2.3.3 异常预警
|
||||
|
||||
| 指标 | 正常范围 | 预警阈值 | 动作 |
|
||||
|------|----------|----------|------|
|
||||
| 收缩压 | 90-140 mmHg | >150 或 <85 | Push通知+子女通知 |
|
||||
| 舒张压 | 60-90 mmHg | >100 或 <55 | Push通知+子女通知 |
|
||||
| 心率 | 60-100 bpm | >120 或 <50 | Push通知+子女通知+建议就医 |
|
||||
| 血糖 | 3.9-6.1 mmol/L | >7.0 或 <3.5 | Push通知+子女通知 |
|
||||
| 步数 | >3000步/天 | 连续3天<1000 | 关怀提醒 |
|
||||
| 睡眠 | 6-9小时 | <4小时或>11小时 | 关怀提醒 |
|
||||
|
||||
**预警流程**:
|
||||
```
|
||||
数据同步 → 异常检测引擎
|
||||
├── 达到预警阈值
|
||||
│ ├── Push通知用户:"您的血压偏高(155/95),建议休息并测量"
|
||||
│ ├── 通知子女端:"父/母血压异常(155/95),请关注"
|
||||
│ └── 记录预警日志
|
||||
└── 正常 → 不通知
|
||||
```
|
||||
|
||||
#### 2.3.4 每周健康报告
|
||||
|
||||
每周一生成上周健康报告,Push通知用户和子女:
|
||||
|
||||
```
|
||||
📊 张阿姨的健康周报(4.14-4.20)
|
||||
|
||||
✅ 步数:平均6,200步/天(目标6,000 ✓)
|
||||
⚠️ 血压:平均128/83,周三偏高(142/92)
|
||||
✅ 心率:平均72bpm,范围正常
|
||||
✅ 睡眠:平均7.1小时,质量良好
|
||||
|
||||
💡 建议:
|
||||
1. 血压偶有波动,建议减少盐分摄入
|
||||
2. 步数达标,继续保持!
|
||||
3. 周末可适当增加户外活动
|
||||
|
||||
⚠️ 以上仅供参考,不构成医疗建议
|
||||
```
|
||||
|
||||
### 2.4 数据结构
|
||||
|
||||
```sql
|
||||
-- 设备绑定表
|
||||
CREATE TABLE health_devices (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
brand VARCHAR(20) NOT NULL, -- huawei/xiaomi
|
||||
device_model VARCHAR(50),
|
||||
device_id VARCHAR(100),
|
||||
auth_token TEXT, -- 加密存储
|
||||
refresh_token TEXT,
|
||||
sync_interval INTEGER DEFAULT 60, -- 分钟
|
||||
last_sync_at TIMESTAMP,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 健康数据表(时序数据)
|
||||
CREATE TABLE health_records (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
record_type VARCHAR(20) NOT NULL, -- steps/heart_rate/blood_pressure/blood_sugar/sleep
|
||||
value JSONB NOT NULL, -- 灵活存储不同类型数据
|
||||
recorded_at TIMESTAMP NOT NULL,
|
||||
source VARCHAR(20), -- device/manual
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 分区索引(按用户和时间查询)
|
||||
CREATE INDEX idx_health_user_type_time
|
||||
ON health_records(user_id, record_type, recorded_at DESC);
|
||||
|
||||
-- value字段示例:
|
||||
-- steps: {"count": 6842}
|
||||
-- heart_rate: {"bpm": 72}
|
||||
-- blood_pressure: {"systolic": 125, "diastolic": 82}
|
||||
-- blood_sugar: {"mmol": 5.8, "timing": "fasting"}
|
||||
-- sleep: {"duration_hours": 7.2, "deep_hours": 2.1, "light_hours": 4.5, "rem_hours": 0.6}
|
||||
|
||||
-- 预警记录表
|
||||
CREATE TABLE health_alerts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
alert_type VARCHAR(50),
|
||||
record_id BIGINT REFERENCES health_records(id),
|
||||
value JSONB,
|
||||
threshold JSONB,
|
||||
notified_user BOOLEAN DEFAULT FALSE,
|
||||
notified_family BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 健康报告表
|
||||
CREATE TABLE health_reports (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
report_type VARCHAR(20) DEFAULT 'weekly',
|
||||
period_start DATE,
|
||||
period_end DATE,
|
||||
content JSONB,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 2.5 API接口
|
||||
|
||||
**POST /api/v1/health/devices/bind**
|
||||
```json
|
||||
{
|
||||
"brand": "huawei",
|
||||
"authCode": "xxx" // OAuth回调code
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/health/dashboard**
|
||||
```json
|
||||
{
|
||||
"today": {
|
||||
"steps": 6842,
|
||||
"heartRate": { "current": 72, "min": 58, "max": 98 },
|
||||
"bloodPressure": { "systolic": 125, "diastolic": 82, "status": "normal" },
|
||||
"sleep": { "duration": 7.2, "quality": "good" }
|
||||
},
|
||||
"trends": {
|
||||
"bloodPressure": [
|
||||
{ "date": "2026-04-14", "systolic": 128, "diastolic": 83 },
|
||||
{ "date": "2026-04-15", "systolic": 132, "diastolic": 85 }
|
||||
]
|
||||
},
|
||||
"alerts": []
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/health/reports/weekly**
|
||||
```
|
||||
Query: week=2026-W16
|
||||
```
|
||||
|
||||
### 2.6 验收标准
|
||||
|
||||
- [ ] 华为/小米手环成功绑定和数据同步
|
||||
- [ ] 健康看板数据展示正确
|
||||
- [ ] 趋势图展示近7/30天数据
|
||||
- [ ] 异常预警5分钟内通知用户和子女
|
||||
- [ ] 每周一自动生成周报
|
||||
- [ ] 所有健康数据单独加密存储
|
||||
- [ ] 页面标注"仅供参考,不构成医疗建议"
|
||||
|
||||
---
|
||||
|
||||
## 3. 子女端小程序
|
||||
|
||||
### 3.1 需求描述
|
||||
|
||||
微信小程序,子女通过扫码绑定父母账号后,可查看父母活动、健康数据、代办服务、代付会员。
|
||||
|
||||
### 3.2 用户故事
|
||||
|
||||
- **US-CW.1**: 作为子女,我希望知道父母今天参加了什么活动
|
||||
- **US-CW.2**: 作为子女,我希望看到父母的血压心率数据
|
||||
- **US-CW.3**: 作为子女,我希望帮父母预约挂号
|
||||
- **US-CW.4**: 作为子女,我希望帮父母续费会员
|
||||
|
||||
### 3.3 功能模块
|
||||
|
||||
```
|
||||
子女端小程序
|
||||
├── 首页(父母状态概览)
|
||||
│ ├── 今日健康数据卡片
|
||||
│ ├── 最近活动记录
|
||||
│ └── 预警通知列表
|
||||
├── 健康
|
||||
│ ├── 实时数据
|
||||
│ ├── 趋势图
|
||||
│ └── 历史周报
|
||||
├── 活动
|
||||
│ ├── 参与的活动列表
|
||||
│ └── 活动详情(地点/时间/参与者)
|
||||
├── 代办
|
||||
│ ├── 帮父母挂号
|
||||
│ ├── 帮父母预约家政
|
||||
│ └── 帮父母购物
|
||||
├── 我的
|
||||
│ ├── 绑定的父母列表
|
||||
│ ├── 帮父母充值会员
|
||||
│ └── 消息通知设置
|
||||
```
|
||||
|
||||
### 3.4 交互流程
|
||||
|
||||
#### 绑定流程
|
||||
|
||||
```
|
||||
子女打开小程序 → 微信一键登录
|
||||
↓
|
||||
输入父母分享的邀请码 / 扫描二维码
|
||||
↓
|
||||
确认绑定信息(显示父母昵称头像)
|
||||
↓
|
||||
绑定成功 → 进入首页
|
||||
```
|
||||
|
||||
#### 首页
|
||||
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 👵 妈妈 · 张阿姨 │
|
||||
│ 在线 · 今日步数 6,842 │
|
||||
├──────────────────────────────────┤
|
||||
│ ❤️ 健康状态 │
|
||||
│ 血压 125/82 ✅ 心率 72 ✅ │
|
||||
│ 睡眠 7.2h ✅ 步数 6842 ✅ │
|
||||
│ [查看详情 →] │
|
||||
├──────────────────────────────────┤
|
||||
│ 📅 最近活动 │
|
||||
│ 4/20 太极晨练·人民公园 ✓已签到 │
|
||||
│ 4/22 茶话会·宽窄巷子 报名中 │
|
||||
│ [查看全部 →] │
|
||||
├──────────────────────────────────┤
|
||||
│ 🔔 消息 │
|
||||
│ 暂无预警,一切正常 ✅ │
|
||||
├──────────────────────────────────┤
|
||||
│ [帮妈妈挂号] [帮妈妈续会员] │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 3.5 数据结构
|
||||
|
||||
```sql
|
||||
-- 子女用户表(微信小程序)
|
||||
CREATE TABLE child_users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
wx_openid VARCHAR(50) UNIQUE NOT NULL,
|
||||
wx_unionid VARCHAR(50),
|
||||
nickname VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
phone VARCHAR(11),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 子女-父母关联表
|
||||
CREATE TABLE child_parent_links (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
child_id BIGINT REFERENCES child_users(id),
|
||||
parent_user_id BIGINT REFERENCES users(id),
|
||||
relationship VARCHAR(20) DEFAULT 'child', -- child/daughter/son
|
||||
notification_enabled BOOLEAN DEFAULT TRUE,
|
||||
alert_phone VARCHAR(11),
|
||||
linked_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(child_id, parent_user_id)
|
||||
);
|
||||
```
|
||||
|
||||
### 3.6 API接口(子女端)
|
||||
|
||||
**GET /api/v1/child/parents/:parentId/overview**
|
||||
```json
|
||||
{
|
||||
"parent": {
|
||||
"nickname": "张阿姨",
|
||||
"avatar": "...",
|
||||
"lastOnline": "2026-04-20T08:30:00Z"
|
||||
},
|
||||
"health": {
|
||||
"steps": 6842,
|
||||
"bloodPressure": { "systolic": 125, "diastolic": 82, "status": "normal" },
|
||||
"heartRate": 72,
|
||||
"sleep": 7.2
|
||||
},
|
||||
"recentActivities": [
|
||||
{ "id": 1, "title": "太极晨练", "date": "2026-04-20", "status": "signed_in" }
|
||||
],
|
||||
"alerts": [],
|
||||
"membershipExpires": "2027-04-20"
|
||||
}
|
||||
```
|
||||
|
||||
**POST /api/v1/child/parents/:parentId/proxy-order**
|
||||
```json
|
||||
{
|
||||
"orderType": "appointment",
|
||||
"data": {
|
||||
"hospitalId": 1,
|
||||
"departmentId": 3,
|
||||
"doctorId": 1,
|
||||
"slotDate": "2026-04-25",
|
||||
"slotTime": "09:00"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3.7 验收标准
|
||||
|
||||
- [ ] 微信扫码5秒内完成绑定
|
||||
- [ ] 健康数据实时同步(延迟<5分钟)
|
||||
- [ ] 预警通知30秒内到达子女端
|
||||
- [ ] 代办功能正确创建订单
|
||||
- [ ] 支持绑定多位父母
|
||||
- [ ] 小程序加载 < 2秒
|
||||
|
||||
---
|
||||
|
||||
## 4. 内容社区
|
||||
|
||||
### 4.1 朋友圈
|
||||
|
||||
**功能**:
|
||||
- 发布图文动态(最多9张图+500字文字)
|
||||
- 点赞、评论
|
||||
- 仅展示好友和同城动态
|
||||
- 内容审核(敏感词+图片鉴黄)
|
||||
|
||||
### 4.2 话题广场
|
||||
|
||||
**功能**:
|
||||
- 预设话题:#今日晨练 #养生食谱 #退休生活 #带孙记
|
||||
- 用户可创建话题
|
||||
- 话题热度排行
|
||||
|
||||
### 4.3 数据结构
|
||||
|
||||
```sql
|
||||
-- 动态表
|
||||
CREATE TABLE posts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
content TEXT,
|
||||
images TEXT[],
|
||||
topic_id BIGINT,
|
||||
location VARCHAR(100),
|
||||
like_count INTEGER DEFAULT 0,
|
||||
comment_count INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 点赞表
|
||||
CREATE TABLE post_likes (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
post_id BIGINT REFERENCES posts(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(post_id, user_id)
|
||||
);
|
||||
|
||||
-- 评论表
|
||||
CREATE TABLE post_comments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
post_id BIGINT REFERENCES posts(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
content TEXT,
|
||||
reply_to_id BIGINT REFERENCES post_comments(id),
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 话题表
|
||||
CREATE TABLE topics (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
name VARCHAR(50) UNIQUE,
|
||||
description TEXT,
|
||||
post_count INTEGER DEFAULT 0,
|
||||
is_official BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 4.4 验收标准
|
||||
|
||||
- [ ] 发布动态流程 < 1分钟
|
||||
- [ ] 图片上传支持压缩(<2MB/张)
|
||||
- [ ] 内容审核延迟 < 5秒
|
||||
- [ ] 点赞/评论实时更新
|
||||
|
||||
---
|
||||
|
||||
## 5. 新增3个服务板块
|
||||
|
||||
### 5.1 候鸟养老
|
||||
|
||||
| 产品类型 | 价格区间 | 合作方 | 佣金 |
|
||||
|----------|----------|--------|------|
|
||||
| 旅居短租(攀枝花/三亚/大理) | 2000-5000元/月 | 养老社区/民宿 | 8% |
|
||||
| 短期度假(5-7天) | 1000-3000元/次 | 旅行社 | 10% |
|
||||
| 候鸟团(含交通+住宿+活动) | 3000-8000元/人 | 旅行社 | 10% |
|
||||
|
||||
### 5.2 文化教育
|
||||
|
||||
| 服务 | 价格 | 合作方 |
|
||||
|------|------|--------|
|
||||
| 老年大学课程(书法/摄影/绘画) | 200-500元/期 | 老年大学/培训机构 |
|
||||
| 兴趣班(太极/舞蹈/合唱) | 100-300元/月 | 文化馆/私人教练 |
|
||||
| 线上讲座(健康/防诈/数码) | 免费/9.9元 | 专家/志愿者 |
|
||||
|
||||
### 5.3 智能设备商城
|
||||
|
||||
| 设备 | 价格区间 | 佣金 |
|
||||
|------|----------|------|
|
||||
| 健康手环(华为/小米) | 200-500元 | 5-8% |
|
||||
| 智能血压计 | 200-400元 | 8% |
|
||||
| 智能药盒 | 100-300元 | 10% |
|
||||
| 紧急呼叫器 | 100-200元 | 10% |
|
||||
|
||||
### 5.4 数据结构
|
||||
|
||||
```sql
|
||||
-- 通用服务产品表(候鸟养老/文化教育/智能设备共用)
|
||||
CREATE TABLE service_products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
category VARCHAR(50), -- travel/education/device
|
||||
subcategory VARCHAR(50),
|
||||
title VARCHAR(200),
|
||||
description TEXT,
|
||||
images TEXT[],
|
||||
price DECIMAL(10,2),
|
||||
price_unit VARCHAR(20), -- 元/月、元/期、元/个
|
||||
commission_rate DECIMAL(4,2),
|
||||
location VARCHAR(100),
|
||||
available_from DATE,
|
||||
available_to DATE,
|
||||
stock INTEGER,
|
||||
sales_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. V1.2验收标准总表
|
||||
|
||||
| 指标 | 目标值 | 判定 |
|
||||
|------|--------|------|
|
||||
| 注册用户 | ≥5000 | 必达 |
|
||||
| 月活用户 | ≥1500 | 必达 |
|
||||
| 子女端用户 | ≥1000 | 必达 |
|
||||
| 手环绑定用户 | ≥500 | 目标 |
|
||||
| 健康预警准确率 | >95% | 必达 |
|
||||
| 子女端NPS | >40 | 目标 |
|
||||
| 内容社区日发帖 | >50条 | 目标 |
|
||||
| 新增服务板块上线 | 3个 | 必达 |
|
||||
|
||||
### 进入V2.0的Gate条件
|
||||
|
||||
- [ ] 核心指标达标
|
||||
- [ ] 健康数据安全审计通过
|
||||
- [ ] 子女端体验满意度>80%
|
||||
- [ ] 商家合作模式验证成功
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
560
docs/PRD-V2.0-完整产品.md
Normal file
560
docs/PRD-V2.0-完整产品.md
Normal file
@ -0,0 +1,560 @@
|
||||
---
|
||||
slug: prd-v2-0-full-product
|
||||
---
|
||||
|
||||
# 「伴享」PRD V2.0 — 完整产品版
|
||||
|
||||
**版本**: V2.0
|
||||
**目标**: V1.2后6周上线,10000用户,100+商家入驻,月收入10万+,完整商业化
|
||||
**发布时间**: 2026年7月
|
||||
**前置条件**: V1.2 Gate条件达标
|
||||
|
||||
---
|
||||
|
||||
## 1. 版本概述
|
||||
|
||||
### 1.1 核心目标
|
||||
|
||||
| 维度 | 目标 | 衡量指标 |
|
||||
|------|------|----------|
|
||||
| 用户规模 | 10000注册 | 注册≥10000 |
|
||||
| 商家生态 | 100+商家入驻 | 入驻≥100家 |
|
||||
| 月收入 | 10万+ | GMV≥100万 |
|
||||
| 服务完整 | 全部9个板块 | 上线9/9 |
|
||||
| 覆盖范围 | 成都5个区 | 武侯/青羊/锦江/成华/金牛 |
|
||||
|
||||
### 1.2 新增功能清单
|
||||
|
||||
| 模块 | 功能 | 优先级 | 开发周期 |
|
||||
|------|------|--------|----------|
|
||||
| 商家后台(Web) | 注册/认证/服务管理/订单/数据/结算 | P0 | 3周 |
|
||||
| 康养护理 | 居家护理/康复/心理咨询 | P0 | 1周 |
|
||||
| 金融理财 | 适老理财信息/保险咨询(合规展示) | P1 | 1周 |
|
||||
| 法律服务 | 遗嘱咨询/权益保护 | P1 | 1周 |
|
||||
| 积分系统 | 签到积分/消费积分/积分兑换 | P1 | 1周 |
|
||||
| 优惠券 | 平台券/商家券/新人券 | P1 | 0.5周 |
|
||||
| 拼团活动 | 活动拼团/服务拼团 | P2 | 1周 |
|
||||
| 线上课程 | 老年大学直播/录播课 | P2 | 1周 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 商家后台(Web端)
|
||||
|
||||
### 2.1 需求描述
|
||||
|
||||
为入驻商家提供独立的Web管理后台,支持商家自助注册、资质认证、服务发布与管理、订单处理、财务结算、数据分析。
|
||||
|
||||
### 2.2 用户故事
|
||||
|
||||
- **US-BZ.1**: 作为商家,我希望在线完成入驻申请
|
||||
- **US-BZ.2**: 作为商家,我希望自助发布和管理服务/商品
|
||||
- **US-BZ.3**: 作为商家,我希望实时看到订单并及时处理
|
||||
- **US-BZ.4**: 作为商家,我希望了解我的客户画像和销售数据
|
||||
- **US-BZ.5**: 作为商家,我希望收入按时结算到账
|
||||
|
||||
### 2.3 功能模块
|
||||
|
||||
```
|
||||
商家后台(Web端)
|
||||
├── 注册与认证
|
||||
│ ├── 商家注册(企业信息+联系人)
|
||||
│ ├── 资质上传(营业执照+行业许可证)
|
||||
│ └── 平台审核(1-3个工作日)
|
||||
├── 服务管理
|
||||
│ ├── 服务/商品发布(标题/描述/价格/图片)
|
||||
│ ├── 服务列表管理(上下架/编辑/删除)
|
||||
│ ├── 库存管理(实物商品)
|
||||
│ └── 排班管理(服务类商家)
|
||||
├── 订单管理
|
||||
│ ├── 订单列表(待处理/进行中/已完成/已取消)
|
||||
│ ├── 订单详情(用户信息脱敏/服务内容/金额)
|
||||
│ ├── 确认/拒绝订单
|
||||
│ └── 退款处理
|
||||
├── 财务结算
|
||||
│ ├── 收入明细(佣金扣除后)
|
||||
│ ├── 月度结算单
|
||||
│ ├── 提现到银行卡(T+7结算)
|
||||
│ └── 发票管理
|
||||
├── 数据看板
|
||||
│ ├── 核心指标(订单量/收入/评价/复购率)
|
||||
│ ├── 用户画像(年龄/性别/区域分布)
|
||||
│ ├── 热销服务TOP10
|
||||
│ └── 趋势图(日/周/月)
|
||||
├── 店铺设置
|
||||
│ ├── 店铺信息编辑
|
||||
│ ├── 营业时间设置
|
||||
│ └── 服务区域设置
|
||||
└── 消息通知
|
||||
├── 新订单提醒
|
||||
├── 用户评价通知
|
||||
└── 平台公告
|
||||
```
|
||||
|
||||
### 2.4 商家入驻流程
|
||||
|
||||
```
|
||||
商家后台首页 → [立即入驻]
|
||||
↓
|
||||
Step 1: 基本信息
|
||||
├── 公司名称
|
||||
├── 统一社会信用代码
|
||||
├── 服务类目(医疗/康养/家政/候鸟/消费/文教/金融/法律/设备)
|
||||
├── 联系人姓名+手机
|
||||
└── 店铺名称+简介
|
||||
↓
|
||||
Step 2: 资质上传
|
||||
├── 营业执照(必传)
|
||||
├── 行业许可证(如医疗机构执业许可证)
|
||||
└── 其他资质(选传)
|
||||
↓
|
||||
Step 3: 确认并提交
|
||||
↓
|
||||
平台审核(1-3工作日)
|
||||
├── 通过 → 短信+邮件通知 → 开通后台权限
|
||||
└── 拒绝 → 说明原因 → 可修改后重新提交
|
||||
```
|
||||
|
||||
### 2.5 数据结构
|
||||
|
||||
```sql
|
||||
-- 商家表
|
||||
CREATE TABLE merchants (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
company_name VARCHAR(200) NOT NULL,
|
||||
credit_code VARCHAR(18) UNIQUE, -- 统一社会信用代码
|
||||
category VARCHAR(50) NOT NULL,
|
||||
store_name VARCHAR(100),
|
||||
store_description TEXT,
|
||||
store_logo_url TEXT,
|
||||
contact_name VARCHAR(50),
|
||||
contact_phone VARCHAR(11),
|
||||
contact_email VARCHAR(100),
|
||||
business_license_url TEXT,
|
||||
industry_license_url TEXT,
|
||||
other_licenses TEXT[],
|
||||
address TEXT,
|
||||
lat DECIMAL(10,7),
|
||||
lng DECIMAL(10,7),
|
||||
service_area TEXT[], -- 服务区域列表
|
||||
business_hours JSONB, -- {"mon":{"open":"09:00","close":"18:00"}, ...}
|
||||
annual_fee DECIMAL(10,2) DEFAULT 0,
|
||||
commission_rate DECIMAL(4,2),
|
||||
level VARCHAR(20) DEFAULT 'normal'
|
||||
CHECK (level IN ('normal', 'certified', 'strategic')),
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
rating_count INTEGER DEFAULT 0,
|
||||
total_orders INTEGER DEFAULT 0,
|
||||
total_revenue DECIMAL(12,2) DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'active', 'suspended', 'closed')),
|
||||
approved_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 商家账户表(登录)
|
||||
CREATE TABLE merchant_accounts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
phone VARCHAR(11) UNIQUE NOT NULL,
|
||||
password_hash VARCHAR(100),
|
||||
role VARCHAR(20) DEFAULT 'owner',
|
||||
last_login_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 商家服务/商品表
|
||||
CREATE TABLE merchant_services (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
title VARCHAR(200) NOT NULL,
|
||||
category VARCHAR(50),
|
||||
subcategory VARCHAR(50),
|
||||
description TEXT,
|
||||
images TEXT[],
|
||||
price DECIMAL(10,2),
|
||||
original_price DECIMAL(10,2),
|
||||
price_unit VARCHAR(20),
|
||||
stock INTEGER,
|
||||
service_duration VARCHAR(50), -- 服务时长
|
||||
is_online BOOLEAN DEFAULT TRUE,
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
sales_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 商家结算表
|
||||
CREATE TABLE merchant_settlements (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
period_start DATE,
|
||||
period_end DATE,
|
||||
total_orders INTEGER,
|
||||
gross_amount DECIMAL(12,2),
|
||||
commission_amount DECIMAL(12,2),
|
||||
net_amount DECIMAL(12,2),
|
||||
bank_account JSONB, -- 银行账户信息(加密)
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'confirmed', 'paid')),
|
||||
paid_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 商家数据日报表
|
||||
CREATE TABLE merchant_daily_stats (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
stat_date DATE,
|
||||
page_views INTEGER DEFAULT 0,
|
||||
unique_visitors INTEGER DEFAULT 0,
|
||||
order_count INTEGER DEFAULT 0,
|
||||
revenue DECIMAL(10,2) DEFAULT 0,
|
||||
avg_rating DECIMAL(2,1),
|
||||
new_reviews INTEGER DEFAULT 0,
|
||||
UNIQUE(merchant_id, stat_date)
|
||||
);
|
||||
```
|
||||
|
||||
### 2.6 API接口(商家端)
|
||||
|
||||
**POST /api/v1/merchant/register**
|
||||
```json
|
||||
{
|
||||
"companyName": "成都XX家政服务有限公司",
|
||||
"creditCode": "91510100XXXXXXXX",
|
||||
"category": "housekeeping",
|
||||
"storeName": "XX家政",
|
||||
"contactName": "王经理",
|
||||
"contactPhone": "13800138001",
|
||||
"businessLicense": "base64..."
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/merchant/dashboard**
|
||||
```json
|
||||
{
|
||||
"overview": {
|
||||
"todayOrders": 12,
|
||||
"todayRevenue": 2400,
|
||||
"monthOrders": 156,
|
||||
"monthRevenue": 31200,
|
||||
"avgRating": 4.8,
|
||||
"pendingOrders": 3
|
||||
},
|
||||
"trends": {
|
||||
"daily": [
|
||||
{ "date": "2026-07-01", "orders": 8, "revenue": 1600 }
|
||||
]
|
||||
},
|
||||
"topServices": [
|
||||
{ "id": 1, "title": "钟点保洁", "orders": 45, "revenue": 9000 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**POST /api/v1/merchant/services**
|
||||
```json
|
||||
{
|
||||
"title": "钟点保洁",
|
||||
"category": "housekeeping",
|
||||
"subcategory": "cleaning",
|
||||
"description": "专业保洁阿姨上门服务",
|
||||
"price": 50,
|
||||
"priceUnit": "元/小时",
|
||||
"images": ["base64..."],
|
||||
"serviceDuration": "2-4小时"
|
||||
}
|
||||
```
|
||||
|
||||
**GET /api/v1/merchant/orders**
|
||||
```
|
||||
Query: status=pending|confirmed|completed|cancelled&page=1&pageSize=20
|
||||
```
|
||||
|
||||
**POST /api/v1/merchant/orders/:id/confirm**
|
||||
**POST /api/v1/merchant/orders/:id/reject**
|
||||
|
||||
**GET /api/v1/merchant/settlements**
|
||||
```
|
||||
Query: month=2026-07
|
||||
```
|
||||
|
||||
### 2.7 验收标准
|
||||
|
||||
- [ ] 商家自助注册到审核通过全流程跑通
|
||||
- [ ] 服务发布后C端可见
|
||||
- [ ] 订单实时推送(WebSocket)
|
||||
- [ ] 数据看板数据准确,延迟<1小时
|
||||
- [ ] 结算T+7到账
|
||||
- [ ] Web端兼容Chrome/Safari/Edge
|
||||
|
||||
---
|
||||
|
||||
## 3. 补全剩余服务板块
|
||||
|
||||
### 3.1 康养护理
|
||||
|
||||
| 服务 | 价格 | 佣金 | 合作方 |
|
||||
|------|------|------|--------|
|
||||
| 居家护理(专业护工) | 200-400元/天 | 10% | 护理机构 |
|
||||
| 康复训练(上门) | 150-300元/次 | 12% | 康复中心 |
|
||||
| 心理咨询(线上/线下) | 200-500元/次 | 8% | 心理咨询师 |
|
||||
|
||||
### 3.2 金融理财(合规展示)
|
||||
|
||||
**重要**:平台仅提供信息展示,不销售金融产品,不提供投资建议。
|
||||
|
||||
| 内容 | 形式 | 合规要求 |
|
||||
|------|------|----------|
|
||||
| 适老理财产品信息 | 信息列表+跳转银行官网 | 持牌机构+风险提示 |
|
||||
| 保险产品咨询 | 预约咨询+信息展示 | 持牌保险公司+免责声明 |
|
||||
| 金融防诈知识 | 文章/视频 | 权威来源 |
|
||||
|
||||
### 3.3 法律服务
|
||||
|
||||
| 服务 | 价格 | 佣金 |
|
||||
|------|------|------|
|
||||
| 遗嘱咨询 | 500-2000元/次 | 10% |
|
||||
| 权益保护咨询 | 200-500元/次 | 10% |
|
||||
| 法律文书代写 | 1000-5000元/份 | 8% |
|
||||
|
||||
---
|
||||
|
||||
## 4. 积分系统
|
||||
|
||||
### 4.1 积分获取
|
||||
|
||||
| 行为 | 积分 | 每日上限 |
|
||||
|------|------|----------|
|
||||
| 每日签到 | 5分 | 5分 |
|
||||
| 连续签到7天 | 额外20分 | - |
|
||||
| 参加活动 | 10分/次 | 30分 |
|
||||
| 发布动态 | 5分/条 | 15分 |
|
||||
| 消费(每1元) | 1分 | 无上限 |
|
||||
| 邀请新用户 | 50分/人 | 200分 |
|
||||
| 评价服务 | 3分/次 | 15分 |
|
||||
|
||||
### 4.2 积分兑换
|
||||
|
||||
| 商品 | 所需积分 |
|
||||
|------|----------|
|
||||
| 会员月卡优惠券(5元) | 200分 |
|
||||
| 服务折扣券(9折) | 500分 |
|
||||
| 实物礼品(水杯/毛巾等) | 1000-3000分 |
|
||||
| 活动优先权 | 300分 |
|
||||
|
||||
### 4.3 数据结构
|
||||
|
||||
```sql
|
||||
-- 积分账户表
|
||||
CREATE TABLE point_accounts (
|
||||
user_id BIGINT PRIMARY KEY REFERENCES users(id),
|
||||
total_points INTEGER DEFAULT 0,
|
||||
available_points INTEGER DEFAULT 0,
|
||||
used_points INTEGER DEFAULT 0,
|
||||
expired_points INTEGER DEFAULT 0,
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 积分流水表
|
||||
CREATE TABLE point_transactions (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
type VARCHAR(20), -- earn/use/expire
|
||||
action VARCHAR(50), -- sign_in/activity/spend/invite/redeem
|
||||
points INTEGER,
|
||||
balance INTEGER,
|
||||
reference_id VARCHAR(50), -- 关联订单号等
|
||||
description TEXT,
|
||||
expires_at TIMESTAMP, -- 积分过期时间(获取后1年)
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_points_user_time ON point_transactions(user_id, created_at DESC);
|
||||
|
||||
-- 积分商品表
|
||||
CREATE TABLE point_products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(100),
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
points_required INTEGER,
|
||||
stock INTEGER,
|
||||
category VARCHAR(20), -- coupon/gift/privilege
|
||||
coupon_detail JSONB, -- 如果是优惠券,券面详情
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 优惠券系统
|
||||
|
||||
### 5.1 券类型
|
||||
|
||||
| 类型 | 说明 | 发放场景 |
|
||||
|------|------|----------|
|
||||
| 新人券 | 新注册用户获10元无门槛券 | 注册完成 |
|
||||
| 满减券 | 满50减5 / 满100减10 | 活动发放/积分兑换 |
|
||||
| 服务折扣券 | 指定服务9折 | 会员权益/活动 |
|
||||
| 商家券 | 商家自行发放 | 商家后台配置 |
|
||||
|
||||
### 5.2 数据结构
|
||||
|
||||
```sql
|
||||
-- 优惠券模板
|
||||
CREATE TABLE coupon_templates (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(100),
|
||||
type VARCHAR(20), -- amount/discount/service
|
||||
value DECIMAL(10,2), -- 金额或折扣率
|
||||
min_amount DECIMAL(10,2), -- 最低消费
|
||||
applicable_categories TEXT[], -- 适用类目
|
||||
merchant_id BIGINT, -- 商家券关联商家
|
||||
total_count INTEGER,
|
||||
issued_count INTEGER DEFAULT 0,
|
||||
valid_days INTEGER, -- 领取后有效天数
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 用户优惠券
|
||||
CREATE TABLE user_coupons (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
template_id BIGINT REFERENCES coupon_templates(id),
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
used_order_no VARCHAR(20),
|
||||
expires_at TIMESTAMP,
|
||||
used_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 拼团活动
|
||||
|
||||
### 6.1 需求描述
|
||||
|
||||
用户发起拼团,邀请好友一起参加活动或购买服务,达到成团人数后享受优惠价。
|
||||
|
||||
**场景示例**:
|
||||
- 3人成团参加书法班,每人优惠30元
|
||||
- 5人成团预约候鸟养老旅居,每人优惠200元
|
||||
|
||||
### 6.2 数据结构
|
||||
|
||||
```sql
|
||||
CREATE TABLE group_buy_campaigns (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
service_id BIGINT REFERENCES merchant_services(id),
|
||||
original_price DECIMAL(10,2),
|
||||
group_price DECIMAL(10,2),
|
||||
min_members INTEGER DEFAULT 3,
|
||||
max_members INTEGER DEFAULT 10,
|
||||
valid_hours INTEGER DEFAULT 24,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE group_buy_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
campaign_id BIGINT REFERENCES group_buy_campaigns(id),
|
||||
initiator_id BIGINT REFERENCES users(id),
|
||||
current_members INTEGER DEFAULT 1,
|
||||
status VARCHAR(20) DEFAULT 'pending', -- pending/success/failed/expired
|
||||
expires_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE group_buy_members (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
group_order_id BIGINT REFERENCES group_buy_orders(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
order_no VARCHAR(20),
|
||||
joined_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(group_order_id, user_id)
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 线上课程
|
||||
|
||||
### 7.1 功能
|
||||
|
||||
- 直播课:老年大学教师在线授课(接入腾讯云直播SDK)
|
||||
- 录播课:历史课程回放
|
||||
- 课程分类:健康养生/书法绘画/数码技能/防诈知识
|
||||
- 课程评价和收藏
|
||||
|
||||
### 7.2 数据结构
|
||||
|
||||
```sql
|
||||
CREATE TABLE courses (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(200),
|
||||
category VARCHAR(50),
|
||||
instructor_name VARCHAR(50),
|
||||
instructor_avatar TEXT,
|
||||
description TEXT,
|
||||
cover_image TEXT,
|
||||
type VARCHAR(20), -- live/recorded
|
||||
video_url TEXT, -- 录播URL
|
||||
live_room_id VARCHAR(50), -- 直播间ID
|
||||
scheduled_at TIMESTAMP, -- 直播时间
|
||||
duration_minutes INTEGER,
|
||||
price DECIMAL(10,2) DEFAULT 0, -- 0=免费
|
||||
enrollment_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE course_enrollments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
course_id BIGINT REFERENCES courses(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
progress DECIMAL(5,2) DEFAULT 0, -- 观看进度百分比
|
||||
completed BOOLEAN DEFAULT FALSE,
|
||||
enrolled_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(course_id, user_id)
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. V2.0验收标准总表
|
||||
|
||||
| 指标 | 目标值 | 判定 |
|
||||
|------|--------|------|
|
||||
| 注册用户 | ≥10000 | 必达 |
|
||||
| 月活用户 | ≥3000 | 必达 |
|
||||
| 入驻商家 | ≥100家 | 必达 |
|
||||
| 月收入 | ≥10万元 | 必达 |
|
||||
| 服务板块 | 9个全部上线 | 必达 |
|
||||
| 会员付费率 | >8% | 必达 |
|
||||
| 覆盖区域 | 成都5个区 | 必达 |
|
||||
| 商家满意度 | >80% | 目标 |
|
||||
| 用户NPS | >50 | 目标 |
|
||||
|
||||
---
|
||||
|
||||
## 9. 后续规划
|
||||
|
||||
V2.0完成后,产品进入成熟运营阶段,后续重点:
|
||||
|
||||
1. **V2.1**: AI管家2.0(更多Agent能力:自动缴费、叫车)
|
||||
2. **V2.2**: 商家SaaS工具升级(CRM、营销工具)
|
||||
3. **V3.0**: 多城市版本(重庆、昆明),区域代理系统
|
||||
4. **V3.1**: 尊享会员上线(299元/年,家庭共享)
|
||||
5. **V4.0**: 开放平台API,第三方服务接入
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
748
docs/PRD-产品需求文档.md
Normal file
748
docs/PRD-产品需求文档.md
Normal file
@ -0,0 +1,748 @@
|
||||
---
|
||||
slug: banxiang-prd
|
||||
---
|
||||
|
||||
# 「伴享」银发社交平台 - 产品需求文档(PRD)
|
||||
|
||||
**文档版本**: V1.0
|
||||
**创建日期**: 2026-02-16
|
||||
**负责人**: 范子琪
|
||||
**技术团队**: Codex + Claude Code
|
||||
|
||||
---
|
||||
|
||||
## 📋 文档目的
|
||||
|
||||
本文档定义「伴享」APP 从 MVP 到完整产品的迭代路径,每个版本明确功能范围、开发周期、验收标准,确保团队聚焦、小步快跑、快速验证。
|
||||
|
||||
---
|
||||
|
||||
## 🎯 产品定位
|
||||
|
||||
**一句话定位**: 让银发群体"不孤独、不麻烦、不掉队"的智慧生活社交平台
|
||||
|
||||
**核心能力**:
|
||||
1. **社交活动** - 线下小组活动,对抗孤独
|
||||
2. **生活服务** - 本地商家一站式服务
|
||||
3. **AI 管家** - 语音交互,降低数字门槛
|
||||
|
||||
---
|
||||
|
||||
## 🚀 版本迭代规划总览
|
||||
|
||||
| 版本 | 核心目标 | 关键功能 | 周期 | 里程碑 |
|
||||
|------|---------|---------|------|--------|
|
||||
| **V1.0 MVP** | 跑通闭环,验证模式 | 社交活动 + AI 管家 + 1个服务 | 6周 | 500人内测 |
|
||||
| **V1.1** | 提升体验,增加留存 | 优化交互 + 社区队长 + 2个服务 | 3周 | 2000人公测 |
|
||||
| **V1.2** | 丰富功能,扩大规模 | 健康管理 + 5个服务 + 子女端 | 4周 | 5000人 |
|
||||
| **V2.0** | 完整产品,商业化 | 全部 9 个服务 + 商家后台 | 6周 | 10000人 |
|
||||
|
||||
---
|
||||
|
||||
# 版本 V1.0 MVP(最小可行产品)
|
||||
|
||||
**目标**: 6周内上线,500人内测,验证"社交+服务+AI"模式是否成立
|
||||
|
||||
**发布时间**: 2026年4月初(开发6周)
|
||||
|
||||
---
|
||||
|
||||
## V1.0 功能清单
|
||||
|
||||
### ✅ 必做功能(P0)
|
||||
|
||||
#### 1. 用户系统(2周)
|
||||
|
||||
**功能点**:
|
||||
- [ ] 手机号注册/登录(短信验证码)
|
||||
- [ ] 个人资料设置
|
||||
- 昵称、头像
|
||||
- 出生年月(自动计算年龄)
|
||||
- 性别、居住城市
|
||||
- 兴趣标签(多选,最多5个)
|
||||
- 预设标签:太极、晨练、书法、摄影、舞蹈、旅游、茶艺、手工、唱歌、棋牌
|
||||
- [ ] 实名认证(调用第三方 API,姓名+身份证号)
|
||||
- [ ] 紧急联系人(姓名+手机号,用于活动安全)
|
||||
- [ ] 子女账号关联(生成6位邀请码,子女扫码绑定)
|
||||
|
||||
**适老化设计要求**:
|
||||
- 字体最小 18sp,可调至 24sp
|
||||
- 表单输入框大(最小高度 56dp)
|
||||
- 每页最多 3 个输入项,避免信息过载
|
||||
- 支持语音输入(调用系统语音识别)
|
||||
|
||||
**验收标准**:
|
||||
- 注册流程 < 3 分钟
|
||||
- 70岁老人能独立完成(或在子女协助下完成)
|
||||
|
||||
---
|
||||
|
||||
#### 2. 社交活动模块(4周)— **核心差异化**
|
||||
|
||||
**功能点**:
|
||||
|
||||
##### 2.1 活动发现(首页)
|
||||
- [ ] 活动列表
|
||||
- 显示:活动名称、时间、地点、人数(已报名/总人数)、距离
|
||||
- 排序:默认按时间排序,可切换"离我最近"
|
||||
- 筛选:全部/今天/明天/本周
|
||||
- [ ] 活动分类标签
|
||||
- 晨练、太极、茶话会、书法、摄影、舞蹈、户外徒步、手工、唱歌、棋牌
|
||||
- [ ] 智能推荐(基于兴趣标签 + 地理位置)
|
||||
- 算法:标签匹配度 60% + 距离权重 40%
|
||||
- 首页顶部展示 3 个推荐活动(卡片样式)
|
||||
|
||||
##### 2.2 活动详情页
|
||||
- [ ] 活动信息展示
|
||||
- 标题、封面图(可选)
|
||||
- 时间、地点(显示地图)
|
||||
- 人数限制、已报名人数
|
||||
- 活动描述(支持图文)
|
||||
- 发起人信息(昵称、头像、年龄)
|
||||
- [ ] 操作按钮
|
||||
- "立即报名"(未报名)
|
||||
- "取消报名"(已报名,活动开始前 2 小时可取消)
|
||||
- "查看路线"(调起地图导航)
|
||||
- [ ] 参与者列表(只显示昵称、头像,保护隐私)
|
||||
|
||||
##### 2.3 活动创建(任何用户都可发起)
|
||||
- [ ] 填写活动信息
|
||||
- 活动名称(必填,20字内)
|
||||
- 活动类型(单选)
|
||||
- 时间选择(日期+时间,不能早于当前时间)
|
||||
- 地点选择(地图选点 或 搜索地址)
|
||||
- **限制:只能选公共场所**(公园、茶馆、社区中心、广场等)
|
||||
- 系统检测非公共场所时弹出提示:"为了您的安全,请选择公共场所"
|
||||
- 人数限制(5-15人,默认 10 人)
|
||||
- 活动描述(选填,200字内)
|
||||
- 上传封面图(选填)
|
||||
- [ ] 发布审核
|
||||
- 自动审核:检测敏感词、地点类型
|
||||
- 通过后立即上线
|
||||
|
||||
##### 2.4 我的活动
|
||||
- [ ] 我报名的活动(按时间排序)
|
||||
- [ ] 我发起的活动
|
||||
- [ ] 活动状态
|
||||
- 待开始、进行中、已结束
|
||||
|
||||
##### 2.5 活动签到(安全机制)
|
||||
- [ ] 活动开始前 15 分钟,参与者收到提醒通知
|
||||
- [ ] 活动开始后,参与者需签到
|
||||
- 签到方式:GPS 位置验证(距离活动地点 < 500米)
|
||||
- 未签到用户显示为"未到场"
|
||||
- [ ] 紧急联系按钮
|
||||
- 长按 3 秒自动拨打紧急联系人
|
||||
|
||||
**适老化设计要求**:
|
||||
- 地图界面简化(只保留必要功能)
|
||||
- 活动卡片大、间距宽(最小点击区域 48x48dp)
|
||||
- 用大图标 + 文字标签(不只用图标)
|
||||
|
||||
**验收标准**:
|
||||
- 从发现活动到报名成功 < 1 分钟
|
||||
- 60岁用户能独立创建活动(通过率 > 80%)
|
||||
|
||||
---
|
||||
|
||||
#### 3. AI 智能管家(3周)— **核心卖点**
|
||||
|
||||
**功能点**:
|
||||
|
||||
##### 3.1 语音交互入口
|
||||
- [ ] 首页底部导航栏有"AI 管家"入口(中间位置,突出)
|
||||
- [ ] 点击进入对话界面
|
||||
- [ ] 支持文字输入 + 语音输入
|
||||
- 语音按钮:大圆形按钮,按住说话,松手识别
|
||||
- 语音识别:调用讯飞/百度 ASR API
|
||||
- 语音播报:调用 TTS API
|
||||
|
||||
##### 3.2 基础对话能力
|
||||
- [ ] 接入大模型(通义千问 / 文心一言)
|
||||
- [ ] 对话历史记录(保存最近 30 条)
|
||||
- [ ] 支持打断(语音播报时可随时打断)
|
||||
|
||||
##### 3.3 快捷指令(MVP 阶段只做 3 个)
|
||||
- [ ] **附近活动**
|
||||
- 指令:"帮我找附近的活动" / "今天有什么活动"
|
||||
- 返回:推荐 3 个活动,点击跳转详情页
|
||||
- [ ] **挂号服务**(调用合作医院 API)
|
||||
- 指令:"我要挂号" / "帮我挂个号"
|
||||
- 流程:选择医院 → 选择科室 → 选择医生 → 选择时间 → 确认支付
|
||||
- 结果:发送短信提醒,生成订单
|
||||
- [ ] **生鲜配送**(对接合作商家)
|
||||
- 指令:"我要买菜" / "帮我订菜"
|
||||
- 流程:展示商家清单 → 选择商品 → 填写地址 → 确认支付
|
||||
- 结果:订单生成,配送上门
|
||||
|
||||
**适老化设计要求**:
|
||||
- 对话气泡字体大(16-18sp)
|
||||
- AI 回复简洁(每条 < 100 字)
|
||||
- 语音播报速度可调(慢速模式)
|
||||
|
||||
**验收标准**:
|
||||
- 语音识别准确率 > 90%(普通话)
|
||||
- 快捷指令成功率 > 85%
|
||||
- 从语音提问到得到结果 < 30 秒
|
||||
|
||||
---
|
||||
|
||||
#### 4. 生活服务(只做 1 个板块,3周)
|
||||
|
||||
**MVP 阶段只做医疗健康板块**(最刚需)
|
||||
|
||||
##### 4.1 医疗健康服务
|
||||
- [ ] 在线挂号
|
||||
- 接入 2-3 家成都本地医院(利用合伙人资源)
|
||||
- 流程:选医院 → 选科室 → 选医生 → 选时间 → 支付
|
||||
- 订单管理:查看订单、取消挂号(提前 1 天可退)
|
||||
- [ ] 在线问诊(文字咨询,非视频)
|
||||
- 对接 1-2 个医生
|
||||
- 流程:描述病情 → 上传照片(可选) → 医生回复
|
||||
- 收费:19.9 元/次
|
||||
- [ ] 订单记录
|
||||
- 查看历史订单
|
||||
- 订单状态:待支付、已预约、已完成、已取消
|
||||
|
||||
**适老化设计要求**:
|
||||
- 医生头像、科室图标大
|
||||
- 流程简化(最多 3 步)
|
||||
- 支付前二次确认(防误操作)
|
||||
|
||||
**验收标准**:
|
||||
- 挂号成功率 > 95%
|
||||
- 问诊响应时间 < 2 小时
|
||||
|
||||
---
|
||||
|
||||
#### 5. 支付系统(2周)
|
||||
|
||||
**功能点**:
|
||||
- [ ] 接入微信支付
|
||||
- [ ] 接入支付宝(可选,优先微信)
|
||||
- [ ] 订单管理
|
||||
- 查看订单列表(按时间倒序)
|
||||
- 订单详情:商品/服务、金额、状态、时间
|
||||
- 订单状态:待支付、已支付、已完成、已取消、已退款
|
||||
- [ ] 退款功能
|
||||
- 符合条件的订单可申请退款
|
||||
- 退款审核(人工审核,1-3 个工作日)
|
||||
|
||||
**MVP 阶段不做**:
|
||||
- ❌ 会员订阅(V1.1 再做)
|
||||
- ❌ 积分系统
|
||||
- ❌ 优惠券
|
||||
|
||||
**验收标准**:
|
||||
- 支付成功率 > 99%
|
||||
- 支付流程 < 1 分钟
|
||||
|
||||
---
|
||||
|
||||
### 🔶 不做的功能(留到后续版本)
|
||||
|
||||
**V1.0 明确不做**:
|
||||
- ❌ 社区队长体系(V1.1)
|
||||
- ❌ 健康管理(手环接入)(V1.2)
|
||||
- ❌ 内容社区(朋友圈)(V1.2)
|
||||
- ❌ 子女端小程序(V1.2)
|
||||
- ❌ 商家后台(V2.0)
|
||||
- ❌ 会员订阅(V1.1)
|
||||
- ❌ 其他 8 个服务板块(V1.1-V2.0 逐步加)
|
||||
|
||||
---
|
||||
|
||||
## V1.0 技术方案
|
||||
|
||||
### 架构设计
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Flutter APP(iOS + Android) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ 用户系统 │ 活动模块 │ AI管家 │ 医疗服务 │
|
||||
└────────────────┬────────────────────────┘
|
||||
│ HTTPS API
|
||||
┌────────────────▼────────────────────────┐
|
||||
│ Node.js + Express 后端 │
|
||||
├─────────────────────────────────────────┤
|
||||
│ 用户服务 │ 活动服务 │ AI服务 │ 支付服务 │
|
||||
└────────────────┬────────────────────────┘
|
||||
│
|
||||
┌────────────────▼────────────────────────┐
|
||||
│ PostgreSQL(用户/活动/订单数据) │
|
||||
│ Redis(会话/缓存) │
|
||||
│ OSS(图片/文件存储) │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 技术栈确认
|
||||
|
||||
| 层级 | 技术选型 | 理由 |
|
||||
|------|---------|------|
|
||||
| **移动端** | Flutter 3.x | 跨平台、性能好、适老化组件丰富 |
|
||||
| **后端** | Node.js 22 + Express 4.x | 我们擅长、生态成熟、AI 集成方便 |
|
||||
| **数据库** | PostgreSQL 15 | 关系型数据、稳定可靠 |
|
||||
| **缓存** | Redis 7.x | 高性能、会话管理 |
|
||||
| **存储** | 阿里云 OSS | 图片/文件存储 |
|
||||
| **AI** | 通义千问 API | 国产、价格低、支持语音 |
|
||||
| **地图** | 高德地图 API | 国内覆盖好 |
|
||||
| **支付** | 微信支付 V3 | 银发群体使用率高 |
|
||||
| **短信** | 阿里云短信 | 稳定可靠 |
|
||||
| **语音** | 讯飞 ASR + TTS | 识别准确率高 |
|
||||
|
||||
### 数据库设计(核心表)
|
||||
|
||||
#### 用户表(users)
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
phone VARCHAR(11) UNIQUE NOT NULL, -- 手机号
|
||||
nickname VARCHAR(50), -- 昵称
|
||||
avatar_url TEXT, -- 头像
|
||||
birth_year INTEGER, -- 出生年份
|
||||
gender VARCHAR(10), -- 性别:male/female/other
|
||||
city VARCHAR(50), -- 城市
|
||||
interests TEXT[], -- 兴趣标签(数组)
|
||||
real_name VARCHAR(50), -- 真实姓名(实名认证)
|
||||
id_card VARCHAR(18), -- 身份证号(加密存储)
|
||||
verified BOOLEAN DEFAULT FALSE, -- 是否实名认证
|
||||
emergency_contact_name VARCHAR(50), -- 紧急联系人姓名
|
||||
emergency_contact_phone VARCHAR(11), -- 紧急联系人电话
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### 活动表(activities)
|
||||
```sql
|
||||
CREATE TABLE activities (
|
||||
id SERIAL PRIMARY KEY,
|
||||
creator_id INTEGER REFERENCES users(id), -- 发起人
|
||||
title VARCHAR(100) NOT NULL, -- 活动名称
|
||||
category VARCHAR(50), -- 分类
|
||||
description TEXT, -- 描述
|
||||
cover_image_url TEXT, -- 封面图
|
||||
location_lat DECIMAL(10, 7), -- 纬度
|
||||
location_lng DECIMAL(10, 7), -- 经度
|
||||
location_address TEXT, -- 详细地址
|
||||
start_time TIMESTAMP NOT NULL, -- 开始时间
|
||||
max_participants INTEGER DEFAULT 10, -- 人数限制
|
||||
status VARCHAR(20) DEFAULT 'upcoming', -- 状态:upcoming/ongoing/finished/cancelled
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### 活动报名表(activity_participants)
|
||||
```sql
|
||||
CREATE TABLE activity_participants (
|
||||
id SERIAL PRIMARY KEY,
|
||||
activity_id INTEGER REFERENCES activities(id),
|
||||
user_id INTEGER REFERENCES users(id),
|
||||
signed_in BOOLEAN DEFAULT FALSE, -- 是否签到
|
||||
signed_in_at TIMESTAMP, -- 签到时间
|
||||
joined_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(activity_id, user_id)
|
||||
);
|
||||
```
|
||||
|
||||
#### AI 对话记录表(ai_conversations)
|
||||
```sql
|
||||
CREATE TABLE ai_conversations (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(id),
|
||||
role VARCHAR(20), -- user/assistant
|
||||
content TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### 订单表(orders)
|
||||
```sql
|
||||
CREATE TABLE orders (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(id),
|
||||
type VARCHAR(50), -- 类型:medical/grocery
|
||||
amount DECIMAL(10, 2), -- 金额
|
||||
status VARCHAR(20) DEFAULT 'pending', -- 状态:pending/paid/completed/cancelled/refunded
|
||||
detail JSONB, -- 订单详情(JSON)
|
||||
paid_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## V1.0 开发计划
|
||||
|
||||
### 时间表(6周,42天)
|
||||
|
||||
| 周次 | 任务 | 负责人 | 产出 |
|
||||
|------|------|--------|------|
|
||||
| **第1周** | 技术准备 + 用户系统 | Codex | 后端框架、数据库、注册登录 |
|
||||
| **第2周** | 活动模块(后端) | Codex | API 开发、数据库完善 |
|
||||
| **第3周** | 活动模块(前端) | Codex | Flutter 界面、地图集成 |
|
||||
| **第4周** | AI 管家 + 医疗服务 | Codex | 语音交互、挂号/问诊 |
|
||||
| **第5周** | 支付系统 + 联调测试 | Codex | 微信支付、整体测试 |
|
||||
| **第6周** | 适老化优化 + 内测准备 | Codex + Claude Code | 审阅代码、修复 bug |
|
||||
|
||||
### 每周里程碑
|
||||
|
||||
**第1周末**:
|
||||
- ✅ 用户注册登录可用
|
||||
- ✅ 个人资料填写完整
|
||||
- ✅ 数据库表结构完成
|
||||
|
||||
**第2周末**:
|
||||
- ✅ 活动创建、列表、详情 API 完成
|
||||
- ✅ 报名、取消报名逻辑完成
|
||||
|
||||
**第3周末**:
|
||||
- ✅ Flutter APP 能浏览活动、报名
|
||||
- ✅ 地图选点、导航功能可用
|
||||
|
||||
**第4周末**:
|
||||
- ✅ AI 语音交互可用
|
||||
- ✅ 挂号、问诊功能可用
|
||||
|
||||
**第5周末**:
|
||||
- ✅ 支付流程跑通
|
||||
- ✅ 订单管理完成
|
||||
|
||||
**第6周末**:
|
||||
- ✅ 内测版本提交应用商店审核
|
||||
- ✅ 种子用户邀请码生成
|
||||
|
||||
---
|
||||
|
||||
## V1.0 测试计划
|
||||
|
||||
### 内测目标
|
||||
- **种子用户**: 500 人(从合伙人资源中筛选)
|
||||
- **测试周期**: 2 周
|
||||
- **反馈渠道**: 微信群 + APP 内反馈按钮
|
||||
|
||||
### 测试重点
|
||||
1. **易用性测试**(最重要)
|
||||
- 60-70 岁用户能否独立完成注册
|
||||
- 平均完成一次活动报名的时间
|
||||
- 语音识别准确率
|
||||
|
||||
2. **功能测试**
|
||||
- 活动创建、报名、签到流程
|
||||
- AI 管家对话、快捷指令
|
||||
- 挂号、支付流程
|
||||
|
||||
3. **性能测试**
|
||||
- 页面加载速度(< 2 秒)
|
||||
- 接口响应时间(< 500ms)
|
||||
- 并发支持(500 人同时在线)
|
||||
|
||||
4. **安全测试**
|
||||
- 个人信息加密
|
||||
- 支付安全
|
||||
- 实名认证
|
||||
|
||||
### 验收标准(能否进入 V1.1)
|
||||
- [ ] 注册成功率 > 90%
|
||||
- [ ] 日活用户 > 100 人
|
||||
- [ ] 活动创建数 > 50 个
|
||||
- [ ] 活动报名成功率 > 95%
|
||||
- [ ] AI 对话满意度 > 80%
|
||||
- [ ] 严重 bug < 5 个
|
||||
- [ ] 用户留存率(7日)> 40%
|
||||
|
||||
---
|
||||
|
||||
# 版本 V1.1(体验优化版)
|
||||
|
||||
**目标**: 提升用户体验,增加留存,准备公测
|
||||
|
||||
**发布时间**: V1.0 后 3 周(2026年4月下旬)
|
||||
|
||||
---
|
||||
|
||||
## V1.1 新增功能
|
||||
|
||||
### 1. 社区队长体系(2周)
|
||||
|
||||
**目标**: 激励活跃用户组织活动,降低运营成本
|
||||
|
||||
**功能点**:
|
||||
- [ ] 队长申请机制
|
||||
- 条件:组织过 3 次活动 + 好评率 > 90%
|
||||
- 申请流程:填写申请表 → 平台审核(1-3天) → 授予称号
|
||||
- [ ] 队长权益
|
||||
- 见习队长:专属标识、活动优先推荐
|
||||
- 银牌队长(20次):免费会员 1 年
|
||||
- 金牌队长(50次):月度补贴 500 元
|
||||
- [ ] 队长排行榜
|
||||
- 按本月组织活动次数排名
|
||||
- 展示前 10 名队长
|
||||
|
||||
### 2. 会员订阅系统(1周)
|
||||
|
||||
**会员权益**:
|
||||
- 活动报名优先(限额活动优先)
|
||||
- AI 管家无限对话(免费用户每天 20 次)
|
||||
- 专属客服(1v1 微信)
|
||||
- 生日礼物
|
||||
|
||||
**定价**:
|
||||
- 月卡:29 元/月
|
||||
- 年卡:299 元/年(省 49 元)
|
||||
|
||||
### 3. 新增 2 个服务板块(2周)
|
||||
|
||||
#### 家政服务
|
||||
- 保洁(钟点工)
|
||||
- 维修(水电、家电)
|
||||
- 陪护(陪同就医、陪聊)
|
||||
|
||||
#### 日常消费
|
||||
- 生鲜配送(对接 2-3 家本地商家)
|
||||
- 日化用品
|
||||
|
||||
### 4. 用户体验优化
|
||||
|
||||
- [ ] 新手引导(首次使用时的动画引导)
|
||||
- [ ] 消息推送(活动提醒、AI 关怀)
|
||||
- [ ] 分享功能(活动分享到微信)
|
||||
|
||||
---
|
||||
|
||||
## V1.1 验收标准
|
||||
- [ ] 用户数达到 2000 人
|
||||
- [ ] 社区队长 > 20 人
|
||||
- [ ] 会员付费率 > 5%
|
||||
- [ ] 7 日留存率 > 50%
|
||||
|
||||
---
|
||||
|
||||
# 版本 V1.2(功能丰富版)
|
||||
|
||||
**目标**: 丰富功能,满足更多需求,扩大规模
|
||||
|
||||
**发布时间**: V1.1 后 4 周(2026年5月下旬)
|
||||
|
||||
---
|
||||
|
||||
## V1.2 新增功能
|
||||
|
||||
### 1. 健康管理模块(2周)
|
||||
- [ ] 健康手环接入(小米、华为)
|
||||
- [ ] 健康数据记录(步数、心率、睡眠)
|
||||
- [ ] 健康报告(每周生成)
|
||||
- [ ] 异常提醒(心率过高自动通知)
|
||||
|
||||
### 2. 内容社区(1周)
|
||||
- [ ] 朋友圈(发图文、点赞、评论)
|
||||
- [ ] 话题广场(#话题 形式)
|
||||
|
||||
### 3. 子女端小程序(2周)
|
||||
- [ ] 查看父母活动记录
|
||||
- [ ] 查看健康数据
|
||||
- [ ] 远程代办服务(帮父母下单)
|
||||
- [ ] 一键续费会员
|
||||
|
||||
### 4. 新增 3 个服务板块(2周)
|
||||
- 候鸟养老(旅居短租)
|
||||
- 文化教育(老年大学课程)
|
||||
- 智能设备(健康手环、智能药盒)
|
||||
|
||||
---
|
||||
|
||||
## V1.2 验收标准
|
||||
- [ ] 用户数达到 5000 人
|
||||
- [ ] 子女端用户 > 1000 人
|
||||
- [ ] 月活用户 > 1500 人
|
||||
|
||||
---
|
||||
|
||||
# 版本 V2.0(完整产品)
|
||||
|
||||
**目标**: 完整功能,商业化运营,区域扩张
|
||||
|
||||
**发布时间**: V1.2 后 6 周(2026年7月)
|
||||
|
||||
---
|
||||
|
||||
## V2.0 新增功能
|
||||
|
||||
### 1. 商家后台(Web 端)(3周)
|
||||
- [ ] 商家注册、认证
|
||||
- [ ] 服务发布、管理
|
||||
- [ ] 订单管理、财务结算
|
||||
- [ ] 数据看板(订单量、收入、用户评价)
|
||||
|
||||
### 2. 补全剩余 4 个服务板块(3周)
|
||||
- 康养护理
|
||||
- 金融理财(合规展示)
|
||||
- 法律服务
|
||||
- 其他本地生活
|
||||
|
||||
### 3. 高级功能
|
||||
- [ ] 积分系统
|
||||
- [ ] 优惠券
|
||||
- [ ] 拼团活动
|
||||
- [ ] 老年大学线上课程
|
||||
|
||||
---
|
||||
|
||||
## V2.0 验收标准
|
||||
- [ ] 用户数达到 10000 人
|
||||
- [ ] 入驻商家 > 100 家
|
||||
- [ ] 月收入 > 10 万元
|
||||
- [ ] 覆盖成都 5 个区
|
||||
|
||||
---
|
||||
|
||||
# 附录
|
||||
|
||||
## 适老化设计规范
|
||||
|
||||
### 视觉规范
|
||||
| 项目 | 标准 | 说明 |
|
||||
|------|------|------|
|
||||
| 字体大小 | 最小 18sp | 可调至 24sp |
|
||||
| 对比度 | WCAG AAA 级 | 文字与背景对比度 > 7:1 |
|
||||
| 按钮大小 | 最小 48x48dp | 易于点击 |
|
||||
| 间距 | 最小 16dp | 避免误触 |
|
||||
| 颜色 | 避免红绿 | 防色盲 |
|
||||
|
||||
### 交互规范
|
||||
| 项目 | 标准 |
|
||||
|------|------|
|
||||
| 页面层级 | 最多 3 层 |
|
||||
| 每页输入项 | 最多 3 个 |
|
||||
| 操作反馈 | 0.5 秒内必须有反馈 |
|
||||
| 错误提示 | 简单明了,避免术语 |
|
||||
| 返回按钮 | 每页左上角必须有 |
|
||||
| 底部导航 | 最多 5 个 Tab |
|
||||
|
||||
### 语音交互规范
|
||||
| 项目 | 标准 |
|
||||
|------|------|
|
||||
| 识别准确率 | > 90%(普通话) |
|
||||
| 播报速度 | 可调速(慢/正常/快) |
|
||||
| 唤醒方式 | 点击按钮,不用语音唤醒 |
|
||||
| 打断支持 | 播报时可随时打断 |
|
||||
|
||||
---
|
||||
|
||||
## 关键指标定义
|
||||
|
||||
### 用户增长指标
|
||||
- **注册用户数**: 完成手机号注册的用户总数
|
||||
- **实名认证率**: 实名认证用户 / 注册用户
|
||||
- **日活用户(DAU)**: 每天至少打开 APP 1 次的用户数
|
||||
- **月活用户(MAU)**: 每月至少打开 APP 1 次的用户数
|
||||
|
||||
### 留存指标
|
||||
- **次日留存**: 注册后第 2 天再次打开的用户比例
|
||||
- **7 日留存**: 注册后第 7 天再次打开的用户比例
|
||||
- **30 日留存**: 注册后第 30 天再次打开的用户比例
|
||||
|
||||
### 活动指标
|
||||
- **活动创建数**: 每天/每月创建的活动数量
|
||||
- **活动报名率**: 报名人数 / 活动浏览人数
|
||||
- **活动完成率**: 签到人数 / 报名人数
|
||||
- **活动复购率**: 参加过 2 次及以上活动的用户比例
|
||||
|
||||
### 商业化指标
|
||||
- **会员付费率**: 付费会员 / 注册用户
|
||||
- **ARPU**: 平均每用户收入
|
||||
- **订单转化率**: 支付订单数 / 浏览服务的用户数
|
||||
|
||||
---
|
||||
|
||||
## 风险与对策
|
||||
|
||||
### 高风险项
|
||||
| 风险 | 影响 | 对策 |
|
||||
|------|------|------|
|
||||
| **老年人学习成本高** | 留存率低 | 极简 UI + 线下培训 + 子女辅助 |
|
||||
| **活动安全事故** | 法律风险 | 实名认证 + 公共场所限制 + 保险 |
|
||||
| **商家服务质量差** | 用户投诉 | 评价体系 + 保证金 + 黑名单 |
|
||||
| **医疗合规问题** | 被监管处罚 | 只做挂号/咨询,不诊断/开药 |
|
||||
| **支付安全** | 资金损失 | 使用官方 SDK + 二次确认 |
|
||||
|
||||
### 中风险项
|
||||
| 风险 | 影响 | 对策 |
|
||||
|------|------|------|
|
||||
| **竞品模仿** | 市场份额流失 | 快速迭代 + 社区运营 + 品牌建设 |
|
||||
| **用户增长慢** | 无法规模化 | 利用合伙人资源 + 线下推广 |
|
||||
| **技术故障** | 用户体验差 | 完善监控 + 快速响应 |
|
||||
|
||||
---
|
||||
|
||||
## 成本与收入预测
|
||||
|
||||
### V1.0 开发成本(6周)
|
||||
| 项目 | 金额(万元) |
|
||||
|------|-------------|
|
||||
| 开发人力 | 8-10 |
|
||||
| UI 设计 | 0.3-0.5 |
|
||||
| 服务器/云 | 1 |
|
||||
| AI API | 0.5 |
|
||||
| 支付/短信 | 0.3 |
|
||||
| 测试补贴 | 0.5 |
|
||||
| **合计** | **10.6-12.8** |
|
||||
|
||||
### V1.0 内测期收入预测(2周,500人)
|
||||
| 项目 | 单价 | 数量 | 收入(元) |
|
||||
|------|------|------|-----------|
|
||||
| 挂号服务(平台抽成 20%) | 50 × 20% = 10 | 50 单 | 500 |
|
||||
| 在线问诊(平台抽成 30%) | 19.9 × 30% = 6 | 30 单 | 180 |
|
||||
| 生鲜配送(平台抽成 15%) | 50 × 15% = 7.5 | 100 单 | 750 |
|
||||
| **合计** | | | **1430** |
|
||||
|
||||
*内测期主要目标是验证模式,不追求盈利*
|
||||
|
||||
### V1.1 公测期收入预测(1个月,2000人)
|
||||
| 项目 | 单价 | 数量 | 收入(元) |
|
||||
|------|------|------|-----------|
|
||||
| 会员订阅(付费率 5%) | 299 | 100 人 | 29900 |
|
||||
| 挂号服务 | 10 | 200 单 | 2000 |
|
||||
| 在线问诊 | 6 | 100 单 | 600 |
|
||||
| 生鲜配送 | 7.5 | 400 单 | 3000 |
|
||||
| 家政服务(抽成 20%) | 100 × 20% = 20 | 50 单 | 1000 |
|
||||
| **合计** | | | **36500** |
|
||||
|
||||
### V2.0 稳定期收入预测(1个月,10000人)
|
||||
| 项目 | 单价 | 数量 | 收入(元) |
|
||||
|------|------|------|-----------|
|
||||
| 会员订阅(付费率 8%) | 299 | 800 人 | 239200 |
|
||||
| 服务交易抽成 | 平均 15 | 3000 单 | 45000 |
|
||||
| 商家入驻费 | 5000 | 5 家 | 25000 |
|
||||
| 广告/品牌合作 | - | - | 20000 |
|
||||
| **合计** | | | **329200** |
|
||||
|
||||
**预计 12 个月后实现盈亏平衡**
|
||||
|
||||
---
|
||||
|
||||
## 下一步行动(本周)
|
||||
|
||||
### 立即执行
|
||||
1. **Codex**: 开始详细技术方案设计(数据库 ER 图、API 文档)
|
||||
2. **Claude Code**: 审阅本 PRD,提出补充建议
|
||||
3. **范总**: 对接合伙人朱源惠
|
||||
- 确认种子用户名单(500人)
|
||||
- 确认合作医院(2-3家)
|
||||
- 确认生鲜商家(2-3家)
|
||||
4. **UI 设计师**: 开始招募(预算 3-5千)
|
||||
|
||||
### 本周内完成
|
||||
- [ ] 技术方案文档 V1.0
|
||||
- [ ] API 接口文档 V1.0
|
||||
- [ ] 数据库设计文档 V1.0
|
||||
- [ ] 开发环境搭建(服务器、域名、OSS)
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
|
||||
---
|
||||
|
||||
**版本历史**:
|
||||
- V1.0 (2026-02-16): 初始版本,定义 V1.0-V2.0 迭代路径
|
||||
115
docs/STATUS.md
Normal file
115
docs/STATUS.md
Normal file
@ -0,0 +1,115 @@
|
||||
# 伴享项目状态文档
|
||||
|
||||
> 最后更新:2026-02-17 | 当前版本:v1.1.0+2
|
||||
|
||||
---
|
||||
|
||||
## 📦 版本信息
|
||||
|
||||
| 字段 | 内容 |
|
||||
|------|------|
|
||||
| 当前版本 | v1.1.2+4 |
|
||||
| 发布日期 | 2026-02-17 |
|
||||
| APK 文件 | `banxiang-v1.1.2+4.apk` |
|
||||
| 测试状态 | 🔄 范总测试中(发现点击 bug,v1.1.3 修复中) |
|
||||
|
||||
### 技术栈
|
||||
|
||||
| 层级 | 技术 |
|
||||
|------|------|
|
||||
| 客户端 | Flutter 3.x |
|
||||
| 后端 | Node.js |
|
||||
| 数据库 | PostgreSQL(计划中) |
|
||||
| 地图 | 高德地图 |
|
||||
| 支付 | 微信支付 |
|
||||
| 数据 | 全 mock,暂无真实后端 |
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已实现功能
|
||||
|
||||
### 用户注册与登录
|
||||
|
||||
| 功能 | 状态 | 备注 |
|
||||
|------|------|------|
|
||||
| 手机号注册 | ✅ 完成 | |
|
||||
| 手机号验证码登录 | ✅ 完成 | mock 实现 |
|
||||
| 填写用户基本信息 | ✅ 完成 | 昵称、头像等 |
|
||||
| **头像选择** | ✅ 完成(v1.1.1) | 已接入 image_picker |
|
||||
| 填写兴趣爱好 | ✅ 完成 | |
|
||||
| 新手设置完成进入主界面 | ✅ 完成 | |
|
||||
|
||||
### 主界面
|
||||
|
||||
| 功能 | 状态 | 备注 |
|
||||
|------|------|------|
|
||||
| 底部导航栏 | ✅ 完成 | 首页 / 好友 / 发布 / 消息 / 我的 |
|
||||
| 活动双列瀑布流 Feed | ✅ 完成 | 小红书风格 |
|
||||
| **Feed 卡片用户头像/昵称** | ✅ 完成(v1.1.1) | |
|
||||
| 活动详情页 | ✅ 完成 | 轮播图 + 点赞 + 评论 |
|
||||
| 发布功能 | ✅ 完成 | 图片/视频多选,最多 9 张 |
|
||||
| **我的页面** | ✅ 完成(v1.1.2) | 头像/昵称/兴趣标签/编辑入口,点击响应修复中 |
|
||||
| **消息页面** | ✅ 完成(v1.1.2) | mock 消息列表,点击响应修复中 |
|
||||
| **好友页面** | ✅ 完成(v1.1.2) | 关注/粉丝两个 Tab |
|
||||
|
||||
### UI / 主题
|
||||
|
||||
| 功能 | 状态 | 备注 |
|
||||
|------|------|------|
|
||||
| 橙色主题 | ✅ 完成 | `#FF6B35` |
|
||||
| 暖黄背景色 | ✅ 完成 | `#FFF8F0` |
|
||||
|
||||
---
|
||||
|
||||
## 🚧 已知问题 / 空壳功能
|
||||
|
||||
| 问题 | 类型 | 优先级 |
|
||||
|------|------|--------|
|
||||
| 首页 Feed 卡片无用户头像/用户名 | 未实现 | 高 |
|
||||
| 好友页面 | 空壳 | 高 |
|
||||
| 消息页面 | 空壳 | 高 |
|
||||
| 我的页面 | 空壳 | 高 |
|
||||
| 右上角搜索 | 未实现 | 中 |
|
||||
| 铃铛通知图标 | 未实现 | 中 |
|
||||
| 全部数据为 mock,无真实后端 | 架构 | 高 |
|
||||
|
||||
---
|
||||
|
||||
## 🗓️ 版本历史
|
||||
|
||||
| 版本 | 日期 | 变更内容 |
|
||||
|------|------|----------|
|
||||
| v1.0.0+1 | — | MVP 基础功能 |
|
||||
| v1.1.0+2 | 2026-02-17 | 小红书风格改造(橙色主题 + 瀑布流)+ 登录跳转修复 + 暖黄背景 |
|
||||
| v1.1.1+3 | 2026-02-17 | 头像选择 Bug 修复 + Feed 卡片补用户头像/昵称 |
|
||||
| v1.1.2+4 | 2026-02-17 | 我的页面 + 消息页面 + 好友页面 |
|
||||
| v1.1.3+5 | 进行中 | 点击交互修复 + 首页刷新 |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 下个版本计划(V1.1 待开发)
|
||||
|
||||
### P0 — 核心功能(必须完成)
|
||||
|
||||
| 功能模块 | 说明 |
|
||||
|----------|------|
|
||||
| 社区队长体系 | 核心社区运营机制 |
|
||||
| 会员订阅系统 | 商业化核心功能 |
|
||||
|
||||
### P1 — 重要功能
|
||||
|
||||
| 功能模块 | 说明 |
|
||||
|----------|------|
|
||||
| 新手引导 | 提升新用户留存 |
|
||||
| 微信分享 | 社交裂变传播 |
|
||||
| 家政服务 | 垂直服务场景 |
|
||||
| 日常消费 | 垂直服务场景 |
|
||||
| 消息推送 | 用户触达与留存 |
|
||||
|
||||
---
|
||||
|
||||
## 📌 备注
|
||||
|
||||
- 当前版本为演示/测试版本,所有数据均为 mock 数据
|
||||
- 后端真实接入(PostgreSQL + Node.js API)尚未开始
|
||||
- 高德地图和微信支付已列入技术栈,集成工作待规划
|
||||
316
docs/meet5-项目调研报告.md
Normal file
316
docs/meet5-项目调研报告.md
Normal file
@ -0,0 +1,316 @@
|
||||
---
|
||||
slug: meet5-project-research
|
||||
---
|
||||
|
||||
# Meet5 项目深度调研报告
|
||||
|
||||
> 调研日期:2026-02-15
|
||||
> 调研人:AI Research Assistant
|
||||
|
||||
---
|
||||
|
||||
## 1. 基本信息
|
||||
|
||||
### 公司概况
|
||||
|
||||
| 项目 | 详情 |
|
||||
|------|------|
|
||||
| **公司名称** | Meet5 GmbH |
|
||||
| **前身** | Go Crush(后更名为 Meet5) |
|
||||
| **创始人** | Lukas Reinhardt(CEO)、Kai Burghardt(联合创始人) |
|
||||
| **成立时间** | 2017 年 |
|
||||
| **总部位置** | 德国法兰克福(Hanauer Landstrasse 147-149, 60314 Frankfurt am Main) |
|
||||
| **团队规模** | 11-50 人(LinkedIn 显示约 65 名员工) |
|
||||
| **公司类型** | 有限责任公司(GmbH) |
|
||||
| **注册法院** | 法兰克福,注册号 108608 |
|
||||
|
||||
### 融资情况
|
||||
|
||||
| 轮次 | 金额 | 领投方 | 时间 | 备注 |
|
||||
|------|------|--------|------|------|
|
||||
| **Series A** | **€800万(约$870万)** | **Peak Capital**(荷兰 VC) | **~2025年9月** | 加上天使投资人参与 |
|
||||
| 早期轮次 | 未公开 | 天使投资人 | 2017-2024 | 细节未披露 |
|
||||
|
||||
> **融资用途**:团队扩张、国际化扩展(从 DACH 到 Benelux、法国、美国)、产品升级(Feed 智能推荐算法)
|
||||
|
||||
### 最新动态(截至 2026 年初)
|
||||
|
||||
- **2025年底**:获得 **WE Award | Together Against Loneliness 2025** 大奖(One Young World Summit,慕尼黑),由 Pernod Ricard 颁发
|
||||
- **2025年9月**:完成 €800万 Series A 融资
|
||||
- **2025年中**:用户突破 **200万**
|
||||
- **2026年初**:官网宣称注册用户超过 **300万+**,已进入美国市场
|
||||
- 口号更新为 **"Life happens offline"** 和 **"Europe's top app for building community is now available in the US"**
|
||||
|
||||
---
|
||||
|
||||
## 2. 产品详情
|
||||
|
||||
### 核心功能
|
||||
|
||||
Meet5 的核心理念是 **"让你放下手机"(get you off your phone)**——通过线下小组活动促进真实社交:
|
||||
|
||||
1. **活动发现与创建**
|
||||
- 用户可浏览附近的线下小组活动(餐饮聚会、徒步、文化体验、旅行等)
|
||||
- 也可自行创建活动,成为"组织者"
|
||||
|
||||
2. **兴趣匹配**
|
||||
- 注册时选择兴趣标签,系统基于兴趣和年龄匹配推荐活动和人
|
||||
- **Feed 智能推荐**:根据用户偏好推送合适的活动和同好
|
||||
|
||||
3. **小组社交(非 1 对 1)**
|
||||
- 名字"Meet5"意味"遇见5个新朋友"
|
||||
- 强调群体活动而非一对一约会,降低社交压力,提升安全感
|
||||
|
||||
4. **Community Captains 机制**
|
||||
- 活跃用户可成为"船长"(Captain),组织和管理本地社区活动
|
||||
- 类似 Meetup 的 organizer 角色,但更本地化
|
||||
|
||||
5. **安全机制**
|
||||
- 活动在公共场所进行
|
||||
- 可限制活动仅限女性参加
|
||||
- 用户互相验证真实身份
|
||||
- 可以和朋友一起报名同一活动
|
||||
|
||||
### 线上线下结合模式
|
||||
|
||||
```
|
||||
线上(App) 线下(Real Life)
|
||||
┌─────────────────┐ ┌─────────────────┐
|
||||
│ 注册 & 填写资料 │ │ 参加小组活动 │
|
||||
│ 浏览/创建活动 │ ──→ │ 餐饮、徒步、文化 │
|
||||
│ 匹配同龄兴趣者 │ │ 认识新朋友 │
|
||||
│ 活动前群组聊天 │ ←── │ 建立真实关系 │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
**关键差异**:Meet5 不鼓励长时间线上聊天,直接推动线下见面。
|
||||
|
||||
### 目标用户群体
|
||||
|
||||
| 维度 | 详情 |
|
||||
|------|------|
|
||||
| **核心年龄段** | **平均年龄 52 岁**,主要面向中老年人(40-65+岁) |
|
||||
| **用户画像** | "die Generation mittleren Alters"(中年一代),生活稳定、喜欢尝试新事物 |
|
||||
| **地域覆盖** | 德国(核心市场,每50人中有1人使用)→ 奥地利 → 瑞士 → Benelux → 法国 → **美国**(最新) |
|
||||
| **使用场景** | 搬到新城市、大学毕业后社交圈缩小、寻找志同道合的兴趣伙伴 |
|
||||
|
||||
> ⚠️ **重要澄清**:Meet5 严格来说不是"老年人专属"App,而是面向 **40岁以上中老年群体** 的社交平台,这个群体在其他社交/约会App上被严重忽略。
|
||||
|
||||
### 商业模式
|
||||
|
||||
基于收集到的信息,Meet5 的商业模式包括:
|
||||
|
||||
1. **免费基础功能**:所有群组活动功能免费使用(降低用户门槛)
|
||||
2. **付费增值服务(推测)**:
|
||||
- Premium 会员(更多匹配、优先参加热门活动等)
|
||||
- 品牌合作 / 赞助活动
|
||||
3. **Fan Shop**:官网有 Fan Shop 页面(周边商品)
|
||||
4. **B2B 合作潜力**:作为触达 Boomer 一代的渠道,有广告/品牌合作价值
|
||||
> CEO Lukas 提到:"Meet5 is now one of the most powerful ways to reach the Boomer generation"
|
||||
|
||||
### 技术架构
|
||||
|
||||
| 平台 | 状态 |
|
||||
|------|------|
|
||||
| **iOS App** | ✅ App Store 上线(评分 4.7) |
|
||||
| **Android App** | ✅ Google Play 上线(评分 4.7) |
|
||||
| **Web** | ✅ www.meet5.com(Wix 建站,主要是营销页面) |
|
||||
| **追踪/归因** | 使用 Adjust(adj_t 参数可见) |
|
||||
| **深度链接** | 使用 go.link 服务 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 市场分析
|
||||
|
||||
### 市场规模与趋势
|
||||
|
||||
**孤独经济(Loneliness Economy)** 正在成为全球性议题:
|
||||
|
||||
- **全球孤独感流行**:WHO 将孤独定义为"全球公共卫生威胁",尤其影响中老年群体
|
||||
- **银发经济**:全球 60 岁以上人口预计 2050 年达 21 亿,银发社交需求巨大
|
||||
- **线下社交回潮**:后疫情时代,线下真实社交需求强烈反弹
|
||||
- **中老年数字化**:50+ 人群智能手机渗透率持续提高,但缺乏为他们设计的社交产品
|
||||
|
||||
**市场空白**:主流社交/约会 App(Tinder、Bumble、Hinge)主要面向 18-35 岁,40+ 群体严重被忽视。
|
||||
|
||||
### 竞品对比
|
||||
|
||||
| 产品 | 定位 | 年龄段 | 模式 | 地域 | 差异 |
|
||||
|------|------|--------|------|------|------|
|
||||
| **Meet5** | 中老年线下小组社交 | 40-65+ | 小组活动 | 欧洲→美国 | **唯一专注 50+ 群体的线下小组社交** |
|
||||
| **Meetup** | 兴趣小组活动 | 全年龄 | 兴趣小组 | 全球 | 不做年龄匹配,更偏职业/技术 |
|
||||
| **Bumble BFF** | 交友(Bumble 扩展) | 18-35 | 1 对 1 | 全球 | 年轻人为主,非小组模式 |
|
||||
| **Stitch** | 50+ 社交/约会 | 50+ | 1 对 1 + 活动 | 澳/美 | 类似定位但规模小 |
|
||||
| **Silvernest** | 老年合租 | 50+ | 住房匹配 | 美国 | 聚焦住房非社交 |
|
||||
| **AARP Community** | 老年社区 | 50+ | 信息/论坛 | 美国 | 非活动导向 |
|
||||
| **Strangers In The City** | 反孤独社交 | 全年龄 | 线下活动 | 英国 | 小规模 |
|
||||
| **The Offline Club** | 线下社交 | 全年龄 | 线下活动 | 荷兰 | 概念类似但无 App |
|
||||
|
||||
**Meet5 的差异化优势**:
|
||||
1. **精准年龄匹配**:不是全年龄段,专注 40+ 群体
|
||||
2. **小组模式**:比 1 对 1 更安全、压力更小
|
||||
3. **线下优先**:不是聊天 App,是"让你出门的 App"
|
||||
4. **规模领先**:300万+ 用户,欧洲该细分市场的绝对领导者
|
||||
5. **Community Captain 体系**:社区驱动增长,降低运营成本
|
||||
|
||||
### 用户增长数据
|
||||
|
||||
| 时间节点 | 用户数 | 备注 |
|
||||
|----------|--------|------|
|
||||
| 2025年中 | 200万 | CEO LinkedIn 宣布 |
|
||||
| 2025年9月 | 250万+ | Series A 融资公告中提到 |
|
||||
| 2026年初 | **300万+** | 官网数据 |
|
||||
| 月活活动数 | **45,000+** | 官网数据(融资时为 40,000+) |
|
||||
| App 评分 | **4.7** | App Store & Google Play |
|
||||
| 社交改善率 | **80%+** | 超过 80% 用户表示社交生活因 Meet5 改善 |
|
||||
|
||||
**增长速度**:约 6 个月从 200万增长到 300万,增速明显加快(与进入美国市场和 Series A 融资相关)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 产品截图与链接
|
||||
|
||||
### 链接清单
|
||||
|
||||
| 资源 | 链接 |
|
||||
|------|------|
|
||||
| 官网 | https://www.meet5.com |
|
||||
| iOS App | https://apps.apple.com/app/meet5/id1040498515 |
|
||||
| Android App | https://play.google.com/store/apps/details?id=com.meet5.android |
|
||||
| LinkedIn | https://linkedin.com/company/meet5 |
|
||||
| Instagram(美国) | https://www.instagram.com/meet5us |
|
||||
| Facebook | https://www.facebook.com/share/19ArJBpGMp/ |
|
||||
| Peak Capital 介绍 | https://peak.capital/founders/meet5/ |
|
||||
| EU-Startups 条目 | https://www.eu-startups.com/directory/meet5/ |
|
||||
| FAQ | https://faq.meet5.com/help/questions |
|
||||
|
||||
### 截图说明
|
||||
|
||||
> ⚠️ 由于 App Store 页面和官网图片无法直接通过 web_fetch 下载保存,以下提供可手动获取截图的来源:
|
||||
> 1. **App Store 页面**:搜索 "Meet5" 可看到完整产品截图
|
||||
> 2. **Google Play 页面**:同上
|
||||
> 3. **官网 meet5.com**:首页展示产品概念图和用户 testimonials
|
||||
> 4. **LinkedIn 页面**:有 CEO 和团队的活动照片
|
||||
|
||||
---
|
||||
|
||||
## 5. 媒体报道
|
||||
|
||||
### 主流媒体
|
||||
|
||||
| 媒体 | 报道类型 | 时间 |
|
||||
|------|----------|------|
|
||||
| **Business Insider(美国版)** | Series A 融资报道 | 2025年9月 |
|
||||
| **Business Insider Deutschland / Gründerszene** | 融资/创业报道 | 多次 |
|
||||
| **EU-Startups** | 融资周报收录、欧洲约会创业榜单 | 2021/2022/2025 |
|
||||
| **One Young World** | WE Award 获奖报道 | 2025年底 |
|
||||
| **TechCrunch** | ❌ 未找到专门报道 | - |
|
||||
|
||||
### 获奖
|
||||
|
||||
- **WE Award | Together Against Loneliness 2025**(Pernod Ricard × One Young World Summit)
|
||||
- 与 Strangers In The City、The Offline Club、The Great Friendship Project、MS Together 共同获奖
|
||||
|
||||
### 用户评价
|
||||
|
||||
- **App Store / Google Play 评分**:4.7/5(非常高)
|
||||
- 官网用户证言:
|
||||
> *"I've been trying to make new friends for almost ten years. Within a month of joining Meet5, I already made three new best friends."* — Sonia, 58
|
||||
|
||||
> *"Now I met a few people on the app, and we go to live music together at least once a week."* — Tom, 41
|
||||
|
||||
---
|
||||
|
||||
## 6. 商业洞察
|
||||
|
||||
### 项目亮点(为什么能融资成功?)
|
||||
|
||||
1. **精准定位被忽视的巨大市场**
|
||||
- 40-65+ 群体是消费能力最强但被科技公司最忽视的人群
|
||||
- 主流社交 App 不服务这个群体 → 蓝海市场
|
||||
|
||||
2. **解决真实痛点:孤独感**
|
||||
- 孤独被 WHO 列为全球公共卫生问题
|
||||
- 80%+ 用户反馈社交生活改善 → 产品有效
|
||||
|
||||
3. **强劲的有机增长**
|
||||
- 300万+ 用户,月活 4.5万+ 活动
|
||||
- 在德国每50人中有1人使用 → 超强渗透率
|
||||
- 自然增长为主,验证了 PMF
|
||||
|
||||
4. **可扩展的社区模式**
|
||||
- Community Captain 体系实现了社区自治
|
||||
- 活动由用户创建和组织,平台提供基础设施
|
||||
- 边际成本低,可跨地域复制
|
||||
|
||||
5. **时机正确**
|
||||
- 后疫情时代线下社交强烈反弹
|
||||
- "反孤独"成为社会共识
|
||||
- 银发经济投资热潮
|
||||
|
||||
### 潜在风险与挑战
|
||||
|
||||
1. **国际化扩展不确定性**
|
||||
- 德语区成功不等于美国成功,文化差异大
|
||||
- 美国市场竞争更激烈(Meetup、Bumble BFF 等)
|
||||
- 需要重新建立本地社区网络
|
||||
|
||||
2. **变现模式待验证**
|
||||
- "所有群组活动功能免费" → 付费转化率可能有限
|
||||
- 中老年用户付费意愿和习惯与年轻人不同
|
||||
- B2B / 品牌合作需要规模
|
||||
|
||||
3. **社区质量控制**
|
||||
- 活动质量依赖 Captain 和用户自组织
|
||||
- 规模化后可能出现低质量活动或安全问题
|
||||
- 不同文化对"群组社交"的接受度不同
|
||||
|
||||
4. **竞争壁垒**
|
||||
- 技术壁垒不高,Meetup 等巨头可以快速模仿
|
||||
- 本地网络效应是壁垒,但需要持续投入建设
|
||||
|
||||
5. **用户留存**
|
||||
- 用户交到朋友后可能不再需要 App → 自然流失
|
||||
- 需要持续提供新活动/新人匹配来维持活跃度
|
||||
|
||||
### 可借鉴之处
|
||||
|
||||
1. **"被忽视群体 + 真实需求" = 蓝海机会**
|
||||
- 不要只看年轻人市场,中老年群体有巨大未满足需求
|
||||
- 在中国:广场舞 App、老年旅游、老年兴趣社交都是类似赛道
|
||||
|
||||
2. **线下优先的产品设计**
|
||||
- App 是工具不是目的,目的是让人走出家门
|
||||
- "让你放下手机" 反而是最好的 App 设计理念
|
||||
|
||||
3. **小组模式降低社交门槛**
|
||||
- 1 对 1 社交压力大,小组模式更轻松安全
|
||||
- 特别适合中老年用户
|
||||
|
||||
4. **Community Captain 社区运营模式**
|
||||
- 用户自组织 > 平台主导
|
||||
- 降低运营成本,提高本地化适配能力
|
||||
- 类似"城市合伙人"但更轻量
|
||||
|
||||
5. **用 Award 和社会影响力背书融资**
|
||||
- "反孤独" 是 ESG / 社会影响力投资的好故事
|
||||
- 获奖提升品牌公信力,吸引使命驱动型投资人
|
||||
|
||||
6. **数据驱动的 Feed 推荐**
|
||||
- 不只是信息流,是"人+活动"的智能匹配
|
||||
- 这是可持续的技术壁垒
|
||||
|
||||
---
|
||||
|
||||
## 附录:信息来源
|
||||
|
||||
1. Meet5 官网:https://www.meet5.com
|
||||
2. Meet5 LinkedIn 页面(3,309 followers)
|
||||
3. Peak Capital 投资组合页面
|
||||
4. EU-Startups 目录
|
||||
5. Meet5 法律声明页面(Impressum)
|
||||
6. CEO Lukas Reinhardt LinkedIn 动态
|
||||
|
||||
---
|
||||
|
||||
*报告完成。部分信息(如具体融资估值、详细财务数据)因 Crunchbase 被封锁和部分页面无法访问而未能获取,建议后续通过 Crunchbase Pro 账号或 PitchBook 补充。*
|
||||
856
docs/技术方案-V1.0-MVP架构.md
Normal file
856
docs/技术方案-V1.0-MVP架构.md
Normal file
@ -0,0 +1,856 @@
|
||||
---
|
||||
slug: tech-v1-0-mvp-architecture
|
||||
---
|
||||
|
||||
# 「伴享」技术方案 V1.0 — MVP架构
|
||||
|
||||
**版本**: V1.0
|
||||
**对应PRD**: PRD-V1.0-MVP核心功能
|
||||
**更新日期**: 2026-02-16
|
||||
|
||||
---
|
||||
|
||||
## 1. 技术架构总览
|
||||
|
||||
### 1.1 系统架构图
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────┐
|
||||
│ 客户端层 │
|
||||
│ ┌──────────────────┐ ┌───────────────────────┐ │
|
||||
│ │ Flutter APP │ │ 子女端(V1.2预留) │ │
|
||||
│ │ iOS + Android │ │ 微信小程序 │ │
|
||||
│ └────────┬─────────┘ └───────────────────────┘ │
|
||||
└───────────┼────────────────────────────────────────┘
|
||||
│ HTTPS + WebSocket
|
||||
┌───────────▼────────────────────────────────────────┐
|
||||
│ API网关层(Nginx) │
|
||||
│ SSL终止 │ 限流 │ 日志 │ 路由 │ CORS │ 压缩 │
|
||||
└───────────┬────────────────────────────────────────┘
|
||||
│
|
||||
┌───────────▼────────────────────────────────────────┐
|
||||
│ 业务服务层(Node.js + Express) │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ 用户服务 │ │ 活动服务 │ │ AI管家 │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ 医疗服务 │ │ 支付服务 │ │ 通知服务 │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||||
└───────────┬────────────────────────────────────────┘
|
||||
│
|
||||
┌───────────▼────────────────────────────────────────┐
|
||||
│ 数据层 │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │PostgreSQL│ │ Redis │ │ 阿里云OSS │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||||
└────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 1.2 技术选型
|
||||
|
||||
| 层级 | 技术 | 版本 | 选型理由 |
|
||||
|------|------|------|----------|
|
||||
| 前端 | Flutter | 3.x | 跨平台、性能好、适老化组件丰富 |
|
||||
| 后端 | Node.js + Express | 22 + 4.x | 生态成熟、AI集成方便 |
|
||||
| 数据库 | PostgreSQL | 15+ | JSON支持好、地理空间查询 |
|
||||
| 缓存 | Redis | 7.x | 会话管理、限流、缓存 |
|
||||
| 文件存储 | 阿里云OSS | - | 图片/语音文件 |
|
||||
| AI模型 | 通义千问 | qwen-max | 国产、函数调用支持好 |
|
||||
| 语音 | 讯飞ASR/TTS | - | 中文识别准确率高 |
|
||||
| 地图 | 高德地图 | - | 国内POI数据全 |
|
||||
| 支付 | 微信支付V3 | - | 银发群体使用率高 |
|
||||
| 推送 | JPush | - | 全平台推送 |
|
||||
| 部署 | Docker Compose | - | MVP阶段够用 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 数据库设计
|
||||
|
||||
### 2.1 ER关系概览
|
||||
|
||||
```
|
||||
users ──< activity_participants >── activities
|
||||
users ──< ai_conversations
|
||||
users ──< orders
|
||||
users ──< appointments >── doctors >── departments >── hospitals
|
||||
users ──< consultations >── doctors
|
||||
users ──< family_links
|
||||
users ──< notifications
|
||||
users ── ai_user_preferences
|
||||
```
|
||||
|
||||
### 2.2 完整DDL
|
||||
|
||||
```sql
|
||||
-- ===========================
|
||||
-- 伴享 V1.0 DDL
|
||||
-- PostgreSQL 15+
|
||||
-- ===========================
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS earthdistance CASCADE;
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
|
||||
-- 1. 用户表
|
||||
CREATE TABLE users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
phone VARCHAR(11) UNIQUE NOT NULL,
|
||||
nickname VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
birth_year INTEGER,
|
||||
birth_month INTEGER,
|
||||
gender VARCHAR(10) CHECK (gender IN ('male', 'female', 'other')),
|
||||
city VARCHAR(50) DEFAULT '成都',
|
||||
district VARCHAR(50),
|
||||
interests TEXT[] DEFAULT '{}',
|
||||
real_name VARCHAR(50),
|
||||
id_card_hash VARCHAR(64),
|
||||
id_card_encrypted TEXT,
|
||||
verified BOOLEAN DEFAULT FALSE,
|
||||
emergency_contact_name VARCHAR(50),
|
||||
emergency_contact_phone VARCHAR(11),
|
||||
font_size VARCHAR(10) DEFAULT 'medium',
|
||||
speech_speed VARCHAR(10) DEFAULT 'normal',
|
||||
auto_voice BOOLEAN DEFAULT TRUE,
|
||||
last_login_at TIMESTAMP,
|
||||
login_count INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_users_phone ON users(phone);
|
||||
CREATE INDEX idx_users_city ON users(city);
|
||||
CREATE INDEX idx_users_interests ON users USING GIN(interests);
|
||||
|
||||
-- 2. 短信验证码
|
||||
CREATE TABLE sms_codes (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
phone VARCHAR(11) NOT NULL,
|
||||
code VARCHAR(6) NOT NULL,
|
||||
purpose VARCHAR(20) DEFAULT 'login',
|
||||
used BOOLEAN DEFAULT FALSE,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 3. 家庭关联
|
||||
CREATE TABLE family_links (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
parent_user_id BIGINT REFERENCES users(id),
|
||||
child_user_id BIGINT,
|
||||
invite_code VARCHAR(6),
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
linked_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(parent_user_id, child_user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE invite_codes (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
code VARCHAR(6) UNIQUE NOT NULL,
|
||||
used BOOLEAN DEFAULT FALSE,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 4. 活动表
|
||||
CREATE TABLE activities (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
creator_id BIGINT REFERENCES users(id) NOT NULL,
|
||||
title VARCHAR(100) NOT NULL,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
description TEXT,
|
||||
cover_image_url TEXT,
|
||||
location_lat DECIMAL(10,7) NOT NULL,
|
||||
location_lng DECIMAL(10,7) NOT NULL,
|
||||
location_address TEXT NOT NULL,
|
||||
location_name VARCHAR(100),
|
||||
start_time TIMESTAMP NOT NULL,
|
||||
end_time TIMESTAMP,
|
||||
max_participants INTEGER DEFAULT 10 CHECK (max_participants BETWEEN 5 AND 15),
|
||||
current_participants INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'upcoming',
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_activities_status_time ON activities(status, start_time);
|
||||
CREATE INDEX idx_activities_category ON activities(category);
|
||||
|
||||
-- 5. 活动报名
|
||||
CREATE TABLE activity_participants (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
activity_id BIGINT REFERENCES activities(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
status VARCHAR(20) DEFAULT 'registered',
|
||||
signed_in_at TIMESTAMP,
|
||||
signed_in_lat DECIMAL(10,7),
|
||||
signed_in_lng DECIMAL(10,7),
|
||||
rating INTEGER CHECK (rating BETWEEN 1 AND 5),
|
||||
review TEXT,
|
||||
joined_at TIMESTAMP DEFAULT NOW(),
|
||||
cancelled_at TIMESTAMP,
|
||||
UNIQUE(activity_id, user_id)
|
||||
);
|
||||
|
||||
-- 6. AI对话
|
||||
CREATE TABLE ai_conversations (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
session_id VARCHAR(36) NOT NULL,
|
||||
role VARCHAR(20) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
content_type VARCHAR(20) DEFAULT 'text',
|
||||
voice_url TEXT,
|
||||
intent VARCHAR(50),
|
||||
metadata JSONB,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_ai_conv_user ON ai_conversations(user_id, session_id);
|
||||
|
||||
CREATE TABLE ai_user_preferences (
|
||||
user_id BIGINT PRIMARY KEY REFERENCES users(id),
|
||||
preferred_hospital VARCHAR(100),
|
||||
preferred_doctor VARCHAR(100),
|
||||
home_address TEXT,
|
||||
common_destinations JSONB,
|
||||
dietary_restrictions TEXT[],
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 7. 医院/科室/医生/排班
|
||||
CREATE TABLE hospitals (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
address TEXT,
|
||||
lat DECIMAL(10,7),
|
||||
lng DECIMAL(10,7),
|
||||
phone VARCHAR(20),
|
||||
logo_url TEXT,
|
||||
level VARCHAR(20),
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE departments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
hospital_id BIGINT REFERENCES hospitals(id),
|
||||
name VARCHAR(50) NOT NULL,
|
||||
description TEXT,
|
||||
sort_order INTEGER DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE doctors (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
hospital_id BIGINT REFERENCES hospitals(id),
|
||||
department_id BIGINT REFERENCES departments(id),
|
||||
name VARCHAR(50) NOT NULL,
|
||||
title VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
specialty TEXT,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
rating_count INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'active'
|
||||
);
|
||||
|
||||
CREATE TABLE doctor_schedules (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
doctor_id BIGINT REFERENCES doctors(id),
|
||||
schedule_date DATE NOT NULL,
|
||||
start_time TIME NOT NULL,
|
||||
end_time TIME NOT NULL,
|
||||
max_patients INTEGER DEFAULT 30,
|
||||
current_patients INTEGER DEFAULT 0,
|
||||
fee DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'available'
|
||||
);
|
||||
|
||||
-- 8. 预约/问诊
|
||||
CREATE TABLE appointments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
hospital_id BIGINT REFERENCES hospitals(id),
|
||||
department_id BIGINT REFERENCES departments(id),
|
||||
doctor_id BIGINT REFERENCES doctors(id),
|
||||
schedule_id BIGINT REFERENCES doctor_schedules(id),
|
||||
patient_name VARCHAR(50),
|
||||
patient_phone VARCHAR(11),
|
||||
appointment_date DATE,
|
||||
appointment_time TIME,
|
||||
fee DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
paid_at TIMESTAMP,
|
||||
cancelled_at TIMESTAMP,
|
||||
cancel_reason TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE consultations (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
doctor_id BIGINT REFERENCES doctors(id),
|
||||
symptom_description TEXT,
|
||||
images TEXT[],
|
||||
doctor_reply TEXT,
|
||||
fee DECIMAL(10,2) DEFAULT 19.90,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
replied_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 9. 订单
|
||||
CREATE TABLE orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
order_type VARCHAR(50) NOT NULL,
|
||||
amount DECIMAL(10,2) NOT NULL,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
detail JSONB,
|
||||
wx_transaction_id VARCHAR(50),
|
||||
paid_at TIMESTAMP,
|
||||
completed_at TIMESTAMP,
|
||||
cancelled_at TIMESTAMP,
|
||||
refund_amount DECIMAL(10,2),
|
||||
refund_at TIMESTAMP,
|
||||
refund_reason TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_orders_user ON orders(user_id, created_at DESC);
|
||||
|
||||
-- 10. 通知
|
||||
CREATE TABLE notifications (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
type VARCHAR(50) NOT NULL,
|
||||
title VARCHAR(100),
|
||||
content TEXT,
|
||||
data JSONB,
|
||||
is_read BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_notif_user ON notifications(user_id, is_read, created_at DESC);
|
||||
|
||||
-- 11. 审计日志
|
||||
CREATE TABLE audit_logs (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT,
|
||||
action VARCHAR(50),
|
||||
resource_type VARCHAR(50),
|
||||
resource_id BIGINT,
|
||||
detail JSONB,
|
||||
ip_address INET,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. API文档
|
||||
|
||||
### 3.1 规范
|
||||
|
||||
- **Base URL**: `https://api.banxiang.com/api/v1`
|
||||
- **认证**: `Authorization: Bearer <JWT>`
|
||||
- **响应格式**: `{ "success": true, "data": {...} }` / `{ "success": false, "error": {"code":"...", "message":"..."} }`
|
||||
|
||||
### 3.2 完整接口清单
|
||||
|
||||
| 模块 | 方法 | 路径 | 描述 |
|
||||
|------|------|------|------|
|
||||
| 认证 | POST | /auth/send-code | 发送验证码 |
|
||||
| 认证 | POST | /auth/login | 登录/注册 |
|
||||
| 认证 | POST | /auth/refresh | 刷新Token |
|
||||
| 用户 | GET | /users/me | 获取当前用户 |
|
||||
| 用户 | PUT | /users/profile | 更新资料 |
|
||||
| 用户 | POST | /users/verify | 实名认证 |
|
||||
| 用户 | PUT | /users/emergency-contact | 紧急联系人 |
|
||||
| 用户 | PUT | /users/settings | 更新设置 |
|
||||
| 家庭 | POST | /family/generate-code | 生成邀请码 |
|
||||
| 家庭 | POST | /family/link | 绑定子女 |
|
||||
| 家庭 | GET | /family/members | 家人列表 |
|
||||
| 活动 | GET | /activities | 活动列表 |
|
||||
| 活动 | GET | /activities/:id | 活动详情 |
|
||||
| 活动 | POST | /activities | 创建活动 |
|
||||
| 活动 | PUT | /activities/:id | 修改活动 |
|
||||
| 活动 | DELETE | /activities/:id | 取消活动 |
|
||||
| 活动 | POST | /activities/:id/join | 报名 |
|
||||
| 活动 | POST | /activities/:id/cancel | 取消报名 |
|
||||
| 活动 | POST | /activities/:id/sign-in | 签到 |
|
||||
| 活动 | POST | /activities/:id/review | 评价 |
|
||||
| 活动 | GET | /users/me/activities | 我的活动 |
|
||||
| AI | POST | /ai/chat | 文字对话(SSE) |
|
||||
| AI | POST | /ai/voice | 语音对话 |
|
||||
| AI | GET | /ai/history | 对话历史 |
|
||||
| 医疗 | GET | /medical/hospitals | 医院列表 |
|
||||
| 医疗 | GET | /medical/hospitals/:id/departments | 科室 |
|
||||
| 医疗 | GET | /medical/doctors | 医生列表 |
|
||||
| 医疗 | GET | /medical/doctors/:id/schedules | 排班 |
|
||||
| 医疗 | POST | /medical/appointments | 创建预约 |
|
||||
| 医疗 | POST | /medical/appointments/:id/cancel | 取消 |
|
||||
| 医疗 | POST | /medical/consultations | 创建问诊 |
|
||||
| 订单 | POST | /orders/create | 创建订单 |
|
||||
| 订单 | GET | /orders | 订单列表 |
|
||||
| 订单 | GET | /orders/:orderNo | 订单详情 |
|
||||
| 订单 | POST | /orders/:orderNo/refund | 退款 |
|
||||
| 通知 | GET | /notifications | 通知列表 |
|
||||
| 通知 | PUT | /notifications/:id/read | 标记已读 |
|
||||
| 上传 | POST | /upload/image | 上传图片 |
|
||||
| 上传 | POST | /upload/voice | 上传语音 |
|
||||
|
||||
---
|
||||
|
||||
## 4. Flutter组件架构
|
||||
|
||||
### 4.1 项目结构
|
||||
|
||||
```
|
||||
banxiang_app/
|
||||
├── lib/
|
||||
│ ├── main.dart
|
||||
│ ├── app.dart
|
||||
│ ├── config/
|
||||
│ │ ├── theme.dart # 适老化主题
|
||||
│ │ ├── routes.dart
|
||||
│ │ └── constants.dart
|
||||
│ ├── core/
|
||||
│ │ ├── api/
|
||||
│ │ │ ├── api_client.dart # Dio封装
|
||||
│ │ │ └── endpoints.dart
|
||||
│ │ ├── models/ # 数据模型
|
||||
│ │ ├── providers/ # Riverpod状态管理
|
||||
│ │ ├── services/ # 业务服务
|
||||
│ │ └── utils/
|
||||
│ ├── features/
|
||||
│ │ ├── auth/
|
||||
│ │ ├── home/
|
||||
│ │ ├── activity/
|
||||
│ │ ├── ai_butler/
|
||||
│ │ ├── medical/
|
||||
│ │ ├── profile/
|
||||
│ │ └── notification/
|
||||
│ └── shared/
|
||||
│ ├── widgets/ # BX适老化组件库
|
||||
│ └── layouts/
|
||||
├── assets/
|
||||
│ ├── images/
|
||||
│ ├── fonts/
|
||||
│ └── animations/
|
||||
├── test/
|
||||
└── pubspec.yaml
|
||||
```
|
||||
|
||||
### 4.2 适老化组件库(BX Design System)
|
||||
|
||||
```dart
|
||||
/// BX适老化按钮
|
||||
class BxButton extends StatelessWidget {
|
||||
final String text;
|
||||
final VoidCallback onPressed;
|
||||
final BxButtonStyle style; // primary / secondary / danger
|
||||
final bool loading;
|
||||
|
||||
// 最小高度48dp,字号18sp,圆角12dp
|
||||
// 点击区域≥48x48dp
|
||||
// loading状态显示转圈+文字
|
||||
}
|
||||
|
||||
/// BX适老化输入框
|
||||
class BxInput extends StatelessWidget {
|
||||
final String label;
|
||||
final String hint;
|
||||
final TextInputType keyboardType;
|
||||
final bool voiceEnabled; // 右侧语音输入按钮
|
||||
|
||||
// 高度56dp,字号18sp
|
||||
// label在输入框上方
|
||||
// 错误提示在下方,红色16sp
|
||||
}
|
||||
|
||||
/// BX确认弹窗(防误操作)
|
||||
class BxConfirmDialog extends StatelessWidget {
|
||||
final String title;
|
||||
final String message;
|
||||
final String confirmText;
|
||||
final String cancelText;
|
||||
|
||||
// 标题22sp,正文18sp
|
||||
// 按钮大且间隔远
|
||||
// 危险操作confirmText用红色
|
||||
}
|
||||
|
||||
/// BX活动卡片
|
||||
class BxActivityCard extends StatelessWidget {
|
||||
final Activity activity;
|
||||
final double distance;
|
||||
|
||||
// 大标题18sp,时间地点16sp
|
||||
// 报名按钮在右侧
|
||||
// 已满员显示灰色
|
||||
}
|
||||
```
|
||||
|
||||
### 4.3 核心代码示例
|
||||
|
||||
#### API客户端
|
||||
|
||||
```dart
|
||||
// core/api/api_client.dart
|
||||
class ApiClient {
|
||||
late final Dio _dio;
|
||||
|
||||
ApiClient() {
|
||||
_dio = Dio(BaseOptions(
|
||||
baseUrl: 'https://api.banxiang.com/api/v1',
|
||||
connectTimeout: const Duration(seconds: 10),
|
||||
receiveTimeout: const Duration(seconds: 30),
|
||||
));
|
||||
|
||||
_dio.interceptors.addAll([
|
||||
AuthInterceptor(), // 自动附加JWT
|
||||
LogInterceptor(),
|
||||
ErrorInterceptor(), // 统一错误处理
|
||||
]);
|
||||
}
|
||||
|
||||
Future<T> get<T>(String path, {Map<String, dynamic>? params}) async {
|
||||
final response = await _dio.get(path, queryParameters: params);
|
||||
return response.data['data'] as T;
|
||||
}
|
||||
|
||||
Future<T> post<T>(String path, {dynamic data}) async {
|
||||
final response = await _dio.post(path, data: data);
|
||||
return response.data['data'] as T;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### AI管家对话页面
|
||||
|
||||
```dart
|
||||
// features/ai_butler/chat_page.dart
|
||||
class AiChatPage extends ConsumerStatefulWidget {
|
||||
@override
|
||||
ConsumerState<AiChatPage> createState() => _AiChatPageState();
|
||||
}
|
||||
|
||||
class _AiChatPageState extends ConsumerState<AiChatPage> {
|
||||
final _controller = TextEditingController();
|
||||
bool _isRecording = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final messages = ref.watch(aiChatProvider);
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: Text('🤖 小伴 · AI管家')),
|
||||
body: Column(
|
||||
children: [
|
||||
// 消息列表
|
||||
Expanded(
|
||||
child: ListView.builder(
|
||||
reverse: true,
|
||||
itemCount: messages.length,
|
||||
itemBuilder: (ctx, i) => ChatBubble(
|
||||
message: messages[i],
|
||||
fontSize: ref.watch(fontSizeProvider),
|
||||
),
|
||||
),
|
||||
),
|
||||
// 快捷指令栏
|
||||
QuickActions(
|
||||
actions: ['附近活动', '挂号', '买菜', '天气'],
|
||||
onTap: (action) => _sendMessage(action),
|
||||
),
|
||||
// 输入栏
|
||||
ChatInputBar(
|
||||
controller: _controller,
|
||||
onSend: () => _sendMessage(_controller.text),
|
||||
onVoiceStart: _startRecording,
|
||||
onVoiceEnd: _stopRecording,
|
||||
isRecording: _isRecording,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _sendMessage(String text) {
|
||||
ref.read(aiChatProvider.notifier).sendMessage(text);
|
||||
_controller.clear();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 活动推荐算法
|
||||
|
||||
```dart
|
||||
// core/services/recommendation_service.dart
|
||||
double calculateRecommendScore(User user, Activity activity, double distanceKm) {
|
||||
// 兴趣匹配度 (0-1)
|
||||
final commonInterests = user.interests
|
||||
.where((i) => i == activity.category)
|
||||
.length;
|
||||
final interestScore = commonInterests > 0 ? 1.0 : 0.0;
|
||||
|
||||
// 距离分 (0-1), 10km内线性衰减
|
||||
final distanceScore = 1 - (distanceKm / 10).clamp(0, 1);
|
||||
|
||||
// 时间分 (0-1), 168小时(一周)内线性衰减
|
||||
final hoursDiff = activity.startTime.difference(DateTime.now()).inHours;
|
||||
final timeScore = 1 - (hoursDiff / 168).clamp(0, 1);
|
||||
|
||||
// 热度分 (0-1)
|
||||
final hotScore = activity.currentParticipants / activity.maxParticipants;
|
||||
|
||||
return interestScore * 0.4 + distanceScore * 0.3 + timeScore * 0.2 + hotScore * 0.1;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. AI管家技术方案
|
||||
|
||||
### 5.1 架构
|
||||
|
||||
```
|
||||
用户输入(文字/语音)
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 语音处理 │ ← 讯飞ASR(语音→文字)
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 意图识别 │ ← 通义千问 Function Calling
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────────────────────┐
|
||||
│ 任务路由 │
|
||||
│ ├── 活动查询 → 调用活动API │
|
||||
│ ├── 挂号预约 → 调用医疗API │
|
||||
│ ├── 生鲜购买 → 调用商品API │
|
||||
│ └── 闲聊/咨询 → 直接对话 │
|
||||
└──────┬──────────────────────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 响应生成 │ ← 通义千问生成回复
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 语音合成 │ ← 讯飞TTS(文字→语音)
|
||||
└──────┬──────┘
|
||||
↓
|
||||
返回用户(文字+语音+操作按钮)
|
||||
```
|
||||
|
||||
### 5.2 Function Calling定义
|
||||
|
||||
```javascript
|
||||
// AI工具定义
|
||||
const tools = [
|
||||
{
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'search_activities',
|
||||
description: '搜索附近的活动',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
category: { type: 'string', description: '活动类型' },
|
||||
timeRange: { type: 'string', enum: ['today', 'tomorrow', 'week'] },
|
||||
lat: { type: 'number' },
|
||||
lng: { type: 'number' }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'book_appointment',
|
||||
description: '预约挂号',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
hospitalName: { type: 'string' },
|
||||
departmentName: { type: 'string' },
|
||||
doctorName: { type: 'string' },
|
||||
date: { type: 'string' },
|
||||
time: { type: 'string' }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'order_grocery',
|
||||
description: '生鲜配送下单',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
items: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
name: { type: 'string' },
|
||||
quantity: { type: 'number' }
|
||||
}
|
||||
}
|
||||
},
|
||||
deliveryAddress: { type: 'string' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
```
|
||||
|
||||
### 5.3 System Prompt
|
||||
|
||||
```
|
||||
你是「小伴」,「伴享」APP的AI智能管家。你服务的是50-70岁的银发群体。
|
||||
|
||||
规则:
|
||||
1. 说话简洁、亲切、温暖,像家人一样
|
||||
2. 每次回复不超过100字
|
||||
3. 称呼用户为"X阿姨"或"X叔叔"(根据性别和姓氏)
|
||||
4. 不使用网络用语、不说英文
|
||||
5. 涉及医疗健康的建议必须加"仅供参考,建议咨询医生"
|
||||
6. 涉及支付前必须明确告知金额并确认
|
||||
7. 不确定的信息不要编造,说"我帮您查查"
|
||||
8. 提供操作选项时,用简短的按钮文字
|
||||
|
||||
用户信息:
|
||||
- 姓名:{userName}
|
||||
- 城市:{city}
|
||||
- 兴趣:{interests}
|
||||
- 常去医院:{preferredHospital}
|
||||
- 家庭住址:{homeAddress}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 部署方案
|
||||
|
||||
### 6.1 服务器配置(MVP阶段)
|
||||
|
||||
| 服务 | 配置 | 月费用 |
|
||||
|------|------|--------|
|
||||
| 应用服务器 | 阿里云ECS 2核4G | ¥200/月 |
|
||||
| 数据库 | 阿里云RDS PostgreSQL 2核4G | ¥300/月 |
|
||||
| Redis | 阿里云Redis 1G | ¥100/月 |
|
||||
| OSS | 按量计费 | ¥50/月 |
|
||||
| CDN | 按量计费 | ¥50/月 |
|
||||
| **合计** | | **¥700/月** |
|
||||
|
||||
### 6.2 Docker Compose
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- DATABASE_URL=postgres://banxiang:xxx@db:5432/banxiang
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- QWEN_API_KEY=${QWEN_API_KEY}
|
||||
- XUNFEI_APP_ID=${XUNFEI_APP_ID}
|
||||
- WX_PAY_MCH_ID=${WX_PAY_MCH_ID}
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
restart: always
|
||||
|
||||
db:
|
||||
image: postgres:15
|
||||
volumes:
|
||||
- pgdata:/var/lib/postgresql/data
|
||||
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||
environment:
|
||||
- POSTGRES_DB=banxiang
|
||||
- POSTGRES_USER=banxiang
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
volumes:
|
||||
- redisdata:/data
|
||||
restart: always
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./ssl:/etc/nginx/ssl
|
||||
depends_on:
|
||||
- app
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
pgdata:
|
||||
redisdata:
|
||||
```
|
||||
|
||||
### 6.3 CI/CD流程
|
||||
|
||||
```
|
||||
代码推送 → GitHub Actions
|
||||
├── 运行测试
|
||||
├── 构建Docker镜像
|
||||
├── 推送到阿里云容器镜像
|
||||
└── SSH到服务器执行 docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
### 6.4 监控方案
|
||||
|
||||
| 维度 | 工具 | 说明 |
|
||||
|------|------|------|
|
||||
| 应用监控 | PM2 + 阿里云ARMS | 错误率、响应时间 |
|
||||
| 服务器监控 | 阿里云云监控 | CPU/内存/磁盘 |
|
||||
| 日志 | Winston + 阿里云SLS | 结构化日志 |
|
||||
| 报警 | 钉钉/飞书Webhook | 异常自动通知 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 安全方案
|
||||
|
||||
### 7.1 数据安全
|
||||
|
||||
| 层面 | 措施 |
|
||||
|------|------|
|
||||
| 传输 | HTTPS + TLS 1.3 |
|
||||
| 存储 | 敏感字段AES-256加密 |
|
||||
| 身份证 | 哈希索引 + 加密存储,不存明文 |
|
||||
| JWT | HS256签名,7天有效期 |
|
||||
| 密钥管理 | 环境变量,不入代码库 |
|
||||
|
||||
### 7.2 接口安全
|
||||
|
||||
| 措施 | 配置 |
|
||||
|------|------|
|
||||
| 全局限流 | 100次/分钟/IP |
|
||||
| 登录限流 | 5次/分钟/手机号 |
|
||||
| 验证码限流 | 3次/5分钟/手机号 |
|
||||
| SQL注入防护 | 参数化查询 |
|
||||
| XSS防护 | 输出转义 + CSP头 |
|
||||
| CORS | 白名单域名 |
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
408
docs/技术方案-V1.1-扩展架构.md
Normal file
408
docs/技术方案-V1.1-扩展架构.md
Normal file
@ -0,0 +1,408 @@
|
||||
---
|
||||
slug: tech-v1-1-extension
|
||||
---
|
||||
|
||||
# 「伴享」技术方案 V1.1 — 扩展架构
|
||||
|
||||
**版本**: V1.1
|
||||
**对应PRD**: PRD-V1.1-体验优化版
|
||||
**更新日期**: 2026-02-16
|
||||
|
||||
---
|
||||
|
||||
## 1. 架构变更概述
|
||||
|
||||
V1.1在V1.0基础上新增:社区队长、会员订阅、家政服务、日常消费。无架构层面重大变更,主要是新增数据表和API端点。
|
||||
|
||||
### 1.1 变更影响矩阵
|
||||
|
||||
| 层级 | 变更 | 影响范围 |
|
||||
|------|------|----------|
|
||||
| 数据库 | 新增6张表 | 队长/会员/服务商/服务人员/商品/购物车 |
|
||||
| API | 新增4组端点 | /captains, /membership, /services, /products |
|
||||
| Flutter | 新增4个Feature模块 | captain/, membership/, housekeeping/, shopping/ |
|
||||
| 第三方 | 无新增 | - |
|
||||
| 部署 | 无变更 | 同V1.0 Docker Compose |
|
||||
|
||||
---
|
||||
|
||||
## 2. 新增数据库表
|
||||
|
||||
### 2.1 增量DDL
|
||||
|
||||
```sql
|
||||
-- ===========================
|
||||
-- V1.1 增量DDL
|
||||
-- ===========================
|
||||
|
||||
-- 1. 队长相关
|
||||
CREATE TABLE captain_applications (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
bio TEXT,
|
||||
specialties TEXT[],
|
||||
serving_area VARCHAR(50),
|
||||
contact_info JSONB,
|
||||
status VARCHAR(20) DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'approved', 'rejected')),
|
||||
reviewer_note TEXT,
|
||||
reviewed_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE captains (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT UNIQUE REFERENCES users(id),
|
||||
level VARCHAR(20) DEFAULT 'trainee'
|
||||
CHECK (level IN ('trainee', 'silver', 'gold', 'honor')),
|
||||
bio TEXT,
|
||||
specialties TEXT[],
|
||||
serving_area VARCHAR(50),
|
||||
total_activities INTEGER DEFAULT 0,
|
||||
total_participants INTEGER DEFAULT 0,
|
||||
total_new_users INTEGER DEFAULT 0,
|
||||
avg_rating DECIMAL(2,1) DEFAULT 0,
|
||||
monthly_subsidy DECIMAL(10,2) DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
approved_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 2. 会员
|
||||
CREATE TABLE memberships (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
plan VARCHAR(20) NOT NULL CHECK (plan IN ('monthly', 'yearly')),
|
||||
price DECIMAL(10,2) NOT NULL,
|
||||
paid_by_user_id BIGINT REFERENCES users(id),
|
||||
starts_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
auto_renew BOOLEAN DEFAULT FALSE,
|
||||
status VARCHAR(20) DEFAULT 'active'
|
||||
CHECK (status IN ('active', 'expired', 'cancelled')),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_membership_user ON memberships(user_id, status);
|
||||
|
||||
-- 用户表新增字段
|
||||
ALTER TABLE users ADD COLUMN is_member BOOLEAN DEFAULT FALSE;
|
||||
ALTER TABLE users ADD COLUMN member_expires_at TIMESTAMP;
|
||||
ALTER TABLE users ADD COLUMN is_captain BOOLEAN DEFAULT FALSE;
|
||||
ALTER TABLE users ADD COLUMN captain_level VARCHAR(20);
|
||||
|
||||
-- 3. 服务商
|
||||
CREATE TABLE service_providers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
company_name VARCHAR(100),
|
||||
category VARCHAR(50),
|
||||
contact_phone VARCHAR(20),
|
||||
license_no VARCHAR(50),
|
||||
address TEXT,
|
||||
lat DECIMAL(10,7),
|
||||
lng DECIMAL(10,7),
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 4. 服务人员
|
||||
CREATE TABLE service_workers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
name VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
skills TEXT[],
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
service_count INTEGER DEFAULT 0,
|
||||
hourly_rate DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 5. 服务订单
|
||||
CREATE TABLE service_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
worker_id BIGINT REFERENCES service_workers(id),
|
||||
service_type VARCHAR(50),
|
||||
scheduled_date DATE,
|
||||
scheduled_time TIME,
|
||||
duration_hours DECIMAL(3,1),
|
||||
address TEXT,
|
||||
requirements TEXT,
|
||||
amount DECIMAL(10,2),
|
||||
platform_fee DECIMAL(10,2),
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
rating INTEGER CHECK (rating BETWEEN 1 AND 5),
|
||||
review TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 6. 商品
|
||||
CREATE TABLE products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
name VARCHAR(100),
|
||||
category VARCHAR(50),
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
price DECIMAL(10,2),
|
||||
unit VARCHAR(20),
|
||||
stock INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 7. 购物车
|
||||
CREATE TABLE cart_items (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
product_id BIGINT REFERENCES products(id),
|
||||
quantity INTEGER DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(user_id, product_id)
|
||||
);
|
||||
|
||||
-- 8. 配送订单
|
||||
CREATE TABLE delivery_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
order_no VARCHAR(20) UNIQUE NOT NULL,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
items JSONB,
|
||||
total_amount DECIMAL(10,2),
|
||||
delivery_fee DECIMAL(10,2) DEFAULT 0,
|
||||
delivery_address TEXT,
|
||||
delivery_phone VARCHAR(11),
|
||||
estimated_delivery TIMESTAMP,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 9. 队长排行榜物化视图
|
||||
CREATE MATERIALIZED VIEW captain_monthly_ranking AS
|
||||
SELECT
|
||||
c.user_id,
|
||||
u.nickname,
|
||||
u.avatar_url,
|
||||
c.level,
|
||||
COUNT(a.id) AS monthly_activities,
|
||||
c.avg_rating
|
||||
FROM captains c
|
||||
JOIN users u ON c.user_id = u.id
|
||||
LEFT JOIN activities a ON a.creator_id = c.user_id
|
||||
AND a.start_time >= date_trunc('month', CURRENT_DATE)
|
||||
WHERE c.status = 'active'
|
||||
GROUP BY c.user_id, u.nickname, u.avatar_url, c.level, c.avg_rating
|
||||
ORDER BY monthly_activities DESC;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 新增API端点
|
||||
|
||||
### 3.1 队长模块 `/captains`
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| POST | /captains/apply | 申请成为队长 |
|
||||
| GET | /captains/application-status | 查看申请状态 |
|
||||
| GET | /captains/me/dashboard | 队长数据面板 |
|
||||
| GET | /captains/ranking | 队长排行榜 |
|
||||
| GET | /captains/:userId | 查看队长主页 |
|
||||
|
||||
**管理端(内部)**:
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| GET | /admin/captains/applications | 待审核列表 |
|
||||
| POST | /admin/captains/applications/:id/approve | 审核通过 |
|
||||
| POST | /admin/captains/applications/:id/reject | 审核拒绝 |
|
||||
|
||||
### 3.2 会员模块 `/membership`
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| GET | /membership/plans | 会员方案列表 |
|
||||
| GET | /membership/status | 当前会员状态 |
|
||||
| POST | /membership/subscribe | 开通会员 |
|
||||
| POST | /membership/generate-pay-link | 生成子女代付链接 |
|
||||
| GET | /membership/pay/:token | 子女代付页面数据 |
|
||||
| POST | /membership/pay/:token/confirm | 子女确认支付 |
|
||||
|
||||
### 3.3 家政服务 `/services/housekeeping`
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| GET | /services/housekeeping/workers | 服务人员列表 |
|
||||
| GET | /services/housekeeping/workers/:id | 人员详情 |
|
||||
| POST | /services/housekeeping/orders | 预约下单 |
|
||||
| GET | /services/housekeeping/orders | 我的服务订单 |
|
||||
| POST | /services/housekeeping/orders/:id/cancel | 取消 |
|
||||
| POST | /services/housekeeping/orders/:id/review | 评价 |
|
||||
|
||||
### 3.4 日常消费 `/shopping`
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| GET | /shopping/providers | 商家列表 |
|
||||
| GET | /shopping/products | 商品列表 |
|
||||
| GET | /shopping/cart | 购物车 |
|
||||
| POST | /shopping/cart/add | 加入购物车 |
|
||||
| PUT | /shopping/cart/:id | 修改数量 |
|
||||
| DELETE | /shopping/cart/:id | 删除 |
|
||||
| POST | /shopping/orders | 配送下单 |
|
||||
| GET | /shopping/orders | 配送订单列表 |
|
||||
|
||||
---
|
||||
|
||||
## 4. Flutter新增模块
|
||||
|
||||
### 4.1 新增Feature模块
|
||||
|
||||
```
|
||||
features/
|
||||
├── captain/ # 社区队长
|
||||
│ ├── captain_apply_page.dart
|
||||
│ ├── captain_dashboard_page.dart
|
||||
│ ├── captain_ranking_page.dart
|
||||
│ └── captain_profile_page.dart
|
||||
├── membership/ # 会员中心
|
||||
│ ├── membership_page.dart
|
||||
│ ├── pay_link_page.dart
|
||||
│ └── widgets/
|
||||
├── housekeeping/ # 家政服务
|
||||
│ ├── worker_list_page.dart
|
||||
│ ├── worker_detail_page.dart
|
||||
│ ├── booking_page.dart
|
||||
│ └── widgets/
|
||||
├── shopping/ # 日常消费
|
||||
│ ├── provider_list_page.dart
|
||||
│ ├── product_list_page.dart
|
||||
│ ├── cart_page.dart
|
||||
│ ├── checkout_page.dart
|
||||
│ └── widgets/
|
||||
└── onboarding/ # 新手引导
|
||||
├── onboarding_page.dart
|
||||
└── guide_overlay.dart
|
||||
```
|
||||
|
||||
### 4.2 微信分享集成
|
||||
|
||||
```dart
|
||||
// 使用 fluwx 插件
|
||||
dependencies:
|
||||
fluwx: ^4.x
|
||||
|
||||
// 活动分享
|
||||
Future<void> shareActivity(Activity activity) async {
|
||||
await fluwx.shareToWeChat(
|
||||
WeChatShareWebPageModel(
|
||||
webPage: 'https://h5.banxiang.com/activity/${activity.id}',
|
||||
title: activity.title,
|
||||
description: '来「伴享」一起参加吧!还剩${activity.remainingSlots}个名额',
|
||||
thumbnail: WeChatImage.network(activity.coverImage),
|
||||
scene: WeChatScene.session,
|
||||
),
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 队长等级自动计算
|
||||
|
||||
```javascript
|
||||
// 定时任务:每日凌晨更新队长等级
|
||||
async function updateCaptainLevels() {
|
||||
const captains = await db.query('SELECT * FROM captains WHERE status = $1', ['active']);
|
||||
|
||||
for (const captain of captains.rows) {
|
||||
let newLevel = 'trainee';
|
||||
|
||||
if (captain.total_activities >= 50 && captain.avg_rating >= 4.75 && captain.total_new_users >= 100) {
|
||||
newLevel = 'gold';
|
||||
} else if (captain.total_activities >= 20 && captain.avg_rating >= 4.5 && captain.total_new_users >= 20) {
|
||||
newLevel = 'silver';
|
||||
}
|
||||
|
||||
if (newLevel !== captain.level) {
|
||||
await db.query('UPDATE captains SET level = $1, updated_at = NOW() WHERE id = $2', [newLevel, captain.id]);
|
||||
// 发送升级通知
|
||||
await sendNotification(captain.user_id, 'CAPTAIN_LEVEL_UP', { newLevel });
|
||||
}
|
||||
}
|
||||
|
||||
// 刷新排行榜
|
||||
await db.query('REFRESH MATERIALIZED VIEW captain_monthly_ranking');
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 会员权限中间件
|
||||
|
||||
```javascript
|
||||
// middleware/membership.js
|
||||
function requireMembership(req, res, next) {
|
||||
if (!req.user.is_member || new Date(req.user.member_expires_at) < new Date()) {
|
||||
return res.status(403).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: 'MEMBERSHIP_REQUIRED',
|
||||
message: '此功能需要开通会员',
|
||||
upgrade_url: '/membership/plans'
|
||||
}
|
||||
});
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
// 免费用户限额检查
|
||||
function checkFreeLimit(type) {
|
||||
return async (req, res, next) => {
|
||||
if (req.user.is_member) return next();
|
||||
|
||||
const limits = {
|
||||
ai_chat: 20, // 每天20条
|
||||
activity_join: 3, // 每月3次
|
||||
};
|
||||
|
||||
const count = await getUsageCount(req.user.id, type);
|
||||
if (count >= limits[type]) {
|
||||
return res.status(403).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: 'FREE_LIMIT_EXCEEDED',
|
||||
message: type === 'ai_chat'
|
||||
? '今日AI对话次数已用完,开通会员享无限对话'
|
||||
: '本月活动次数已用完,开通会员享无限参与',
|
||||
upgrade_url: '/membership/plans'
|
||||
}
|
||||
});
|
||||
}
|
||||
next();
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 子女代付H5页面
|
||||
|
||||
```
|
||||
技术栈:Vue 3 + Vant(H5页面,微信内置浏览器打开)
|
||||
|
||||
流程:
|
||||
1. 父母端生成代付链接 → 分享到微信
|
||||
2. 子女点击链接 → 打开H5页面
|
||||
3. H5页面展示:父母信息 + 会员方案 + 价格
|
||||
4. 子女点击支付 → 调起微信支付JSAPI
|
||||
5. 支付成功 → 后端更新会员状态 → Push通知父母
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
536
docs/技术方案-V1.2-进阶架构.md
Normal file
536
docs/技术方案-V1.2-进阶架构.md
Normal file
@ -0,0 +1,536 @@
|
||||
---
|
||||
slug: tech-v1-2-advanced
|
||||
---
|
||||
|
||||
# 「伴享」技术方案 V1.2 — 进阶架构
|
||||
|
||||
**版本**: V1.2
|
||||
**对应PRD**: PRD-V1.2-功能丰富版
|
||||
**更新日期**: 2026-02-16
|
||||
|
||||
---
|
||||
|
||||
## 1. 架构变更概述
|
||||
|
||||
V1.2引入两个重大变更:**健康数据架构**(时序数据+预警引擎)和**子女端小程序**(微信小程序+独立API层)。
|
||||
|
||||
### 1.1 变更影响矩阵
|
||||
|
||||
| 层级 | 变更 | 说明 |
|
||||
|------|------|------|
|
||||
| 数据库 | 新增8张表 | 健康设备/记录/预警/报告+子女用户+关联+社区内容 |
|
||||
| API | 新增3组端点 | /health, /child, /posts |
|
||||
| 新增服务 | 健康数据同步Worker | 定时拉取手环数据 |
|
||||
| 新增服务 | 预警检测引擎 | 实时异常检测 |
|
||||
| 新增客户端 | 微信小程序(子女端) | Taro + React |
|
||||
| 新增服务产品 | 候鸟/文教/设备 | 复用service_products表 |
|
||||
|
||||
### 1.2 架构图更新
|
||||
|
||||
```
|
||||
┌───────────────────────────────────────────────────────┐
|
||||
│ 客户端层 │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
|
||||
│ │ Flutter APP │ │ 子女端小程序 │ │ 代付H5 │ │
|
||||
│ │ (父母端) │ │ (Taro+React) │ │ (Vue3) │ │
|
||||
│ └──────┬───────┘ └──────┬───────┘ └──────┬─────┘ │
|
||||
└─────────┼─────────────────┼─────────────────┼─────────┘
|
||||
│ │ │
|
||||
┌─────────▼─────────────────▼─────────────────▼─────────┐
|
||||
│ API网关 (Nginx) │
|
||||
│ /api/v1/* → 主APP API │
|
||||
│ /api/child/* → 子女端API │
|
||||
│ /api/h5/* → H5页面API │
|
||||
└─────────┬─────────────────────────────────────────────┘
|
||||
│
|
||||
┌─────────▼─────────────────────────────────────────────┐
|
||||
│ Node.js 业务服务层 │
|
||||
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||||
│ │用户 │ │活动 │ │AI │ │医疗 │ │支付 │ │
|
||||
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
|
||||
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||||
│ │队长 │ │会员 │ │健康⭐│ │子女⭐│ │社区⭐│ │
|
||||
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
|
||||
└─────────┬─────────────────────────────────────────────┘
|
||||
│
|
||||
┌─────────▼─────────────────────────────────────────────┐
|
||||
│ 后台Worker层(新增) │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 健康数据同步Worker│ │ 预警检测引擎 │ │
|
||||
│ │ (每30分钟/每小时) │ │ (实时处理) │ │
|
||||
│ └─────────────────┘ └─────────────────┘ │
|
||||
└───────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 健康数据架构
|
||||
|
||||
### 2.1 数据流
|
||||
|
||||
```
|
||||
华为健康API / 小米运动API
|
||||
↓ (OAuth2 + 定时拉取)
|
||||
┌─────────────────────┐
|
||||
│ 健康数据同步Worker │ ← Bull队列 + Redis
|
||||
│ 每30分钟执行一次 │
|
||||
└──────────┬──────────┘
|
||||
↓ 写入
|
||||
┌─────────────────────┐
|
||||
│ health_records表 │ ← 时序数据
|
||||
└──────────┬──────────┘
|
||||
↓ 触发
|
||||
┌─────────────────────┐
|
||||
│ 预警检测引擎 │
|
||||
│ 检查阈值 → │
|
||||
│ ├── 正常 → 跳过 │
|
||||
│ └── 异常 → │
|
||||
│ ├── 写入alerts │
|
||||
│ ├── Push用户 │
|
||||
│ └── Push子女端 │
|
||||
└─────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 增量DDL
|
||||
|
||||
```sql
|
||||
-- ===========================
|
||||
-- V1.2 增量DDL
|
||||
-- ===========================
|
||||
|
||||
-- 1. 健康设备绑定
|
||||
CREATE TABLE health_devices (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
brand VARCHAR(20) NOT NULL,
|
||||
device_model VARCHAR(50),
|
||||
device_id VARCHAR(100),
|
||||
auth_token_encrypted TEXT,
|
||||
refresh_token_encrypted TEXT,
|
||||
sync_interval INTEGER DEFAULT 60,
|
||||
last_sync_at TIMESTAMP,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 2. 健康记录(时序数据,按月分区)
|
||||
CREATE TABLE health_records (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL,
|
||||
record_type VARCHAR(20) NOT NULL,
|
||||
value JSONB NOT NULL,
|
||||
recorded_at TIMESTAMP NOT NULL,
|
||||
source VARCHAR(20) DEFAULT 'device',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
) PARTITION BY RANGE (recorded_at);
|
||||
|
||||
-- 按月创建分区(示例)
|
||||
CREATE TABLE health_records_2026_04 PARTITION OF health_records
|
||||
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
|
||||
CREATE TABLE health_records_2026_05 PARTITION OF health_records
|
||||
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01');
|
||||
|
||||
CREATE INDEX idx_health_user_type_time
|
||||
ON health_records(user_id, record_type, recorded_at DESC);
|
||||
|
||||
-- 3. 健康预警
|
||||
CREATE TABLE health_alerts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
alert_type VARCHAR(50),
|
||||
record_id BIGINT,
|
||||
value JSONB,
|
||||
threshold JSONB,
|
||||
severity VARCHAR(20) DEFAULT 'warning',
|
||||
notified_user BOOLEAN DEFAULT FALSE,
|
||||
notified_family BOOLEAN DEFAULT FALSE,
|
||||
acknowledged BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 4. 健康周报
|
||||
CREATE TABLE health_reports (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
report_type VARCHAR(20) DEFAULT 'weekly',
|
||||
period_start DATE,
|
||||
period_end DATE,
|
||||
content JSONB,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 5. 子女用户
|
||||
CREATE TABLE child_users (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
wx_openid VARCHAR(50) UNIQUE NOT NULL,
|
||||
wx_unionid VARCHAR(50),
|
||||
nickname VARCHAR(50),
|
||||
avatar_url TEXT,
|
||||
phone VARCHAR(11),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 6. 子女-父母关联
|
||||
CREATE TABLE child_parent_links (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
child_id BIGINT REFERENCES child_users(id),
|
||||
parent_user_id BIGINT REFERENCES users(id),
|
||||
relationship VARCHAR(20) DEFAULT 'child',
|
||||
notification_enabled BOOLEAN DEFAULT TRUE,
|
||||
alert_phone VARCHAR(11),
|
||||
linked_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(child_id, parent_user_id)
|
||||
);
|
||||
|
||||
-- 7. 社区动态
|
||||
CREATE TABLE posts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
content TEXT,
|
||||
images TEXT[],
|
||||
topic_id BIGINT,
|
||||
location VARCHAR(100),
|
||||
like_count INTEGER DEFAULT 0,
|
||||
comment_count INTEGER DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE post_likes (
|
||||
post_id BIGINT REFERENCES posts(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
PRIMARY KEY(post_id, user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE post_comments (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
post_id BIGINT REFERENCES posts(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
content TEXT,
|
||||
reply_to_id BIGINT,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE topics (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
name VARCHAR(50) UNIQUE,
|
||||
description TEXT,
|
||||
post_count INTEGER DEFAULT 0,
|
||||
is_official BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 8. 通用服务产品表(候鸟/文教/设备)
|
||||
CREATE TABLE service_products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
provider_id BIGINT REFERENCES service_providers(id),
|
||||
category VARCHAR(50),
|
||||
subcategory VARCHAR(50),
|
||||
title VARCHAR(200),
|
||||
description TEXT,
|
||||
images TEXT[],
|
||||
price DECIMAL(10,2),
|
||||
price_unit VARCHAR(20),
|
||||
commission_rate DECIMAL(4,2),
|
||||
location VARCHAR(100),
|
||||
available_from DATE,
|
||||
available_to DATE,
|
||||
stock INTEGER,
|
||||
sales_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 2.3 健康数据同步Worker
|
||||
|
||||
```javascript
|
||||
// workers/health-sync.js
|
||||
const Queue = require('bull');
|
||||
const healthSyncQueue = new Queue('health-sync', process.env.REDIS_URL);
|
||||
|
||||
// 每30分钟同步一次
|
||||
healthSyncQueue.process(async (job) => {
|
||||
const { userId, brand, authToken } = job.data;
|
||||
|
||||
let data;
|
||||
if (brand === 'huawei') {
|
||||
data = await fetchHuaweiHealthData(authToken);
|
||||
} else if (brand === 'xiaomi') {
|
||||
data = await fetchXiaomiHealthData(authToken);
|
||||
}
|
||||
|
||||
// 写入数据库
|
||||
for (const record of data.records) {
|
||||
await db.query(
|
||||
`INSERT INTO health_records (user_id, record_type, value, recorded_at, source)
|
||||
VALUES ($1, $2, $3, $4, 'device')
|
||||
ON CONFLICT DO NOTHING`,
|
||||
[userId, record.type, record.value, record.timestamp]
|
||||
);
|
||||
}
|
||||
|
||||
// 触发预警检测
|
||||
await alertEngine.check(userId, data.records);
|
||||
});
|
||||
|
||||
// 调度:为每个绑定设备的用户创建定时任务
|
||||
async function scheduleHealthSync() {
|
||||
const devices = await db.query(
|
||||
'SELECT * FROM health_devices WHERE status = $1', ['active']
|
||||
);
|
||||
for (const device of devices.rows) {
|
||||
healthSyncQueue.add(
|
||||
{ userId: device.user_id, brand: device.brand, authToken: device.auth_token_encrypted },
|
||||
{ repeat: { every: device.sync_interval * 60 * 1000 } }
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2.4 预警检测引擎
|
||||
|
||||
```javascript
|
||||
// services/alert-engine.js
|
||||
const THRESHOLDS = {
|
||||
blood_pressure: {
|
||||
systolic: { min: 85, max: 150 },
|
||||
diastolic: { min: 55, max: 100 }
|
||||
},
|
||||
heart_rate: { min: 50, max: 120 },
|
||||
blood_sugar: { min: 3.5, max: 7.0 }
|
||||
};
|
||||
|
||||
async function checkAlerts(userId, records) {
|
||||
for (const record of records) {
|
||||
const threshold = THRESHOLDS[record.type];
|
||||
if (!threshold) continue;
|
||||
|
||||
let isAlert = false;
|
||||
let alertValue = {};
|
||||
|
||||
if (record.type === 'blood_pressure') {
|
||||
const { systolic, diastolic } = record.value;
|
||||
if (systolic > threshold.systolic.max || systolic < threshold.systolic.min ||
|
||||
diastolic > threshold.diastolic.max || diastolic < threshold.diastolic.min) {
|
||||
isAlert = true;
|
||||
alertValue = { systolic, diastolic };
|
||||
}
|
||||
} else if (record.type === 'heart_rate') {
|
||||
const { bpm } = record.value;
|
||||
if (bpm > threshold.max || bpm < threshold.min) {
|
||||
isAlert = true;
|
||||
alertValue = { bpm };
|
||||
}
|
||||
}
|
||||
|
||||
if (isAlert) {
|
||||
// 写入预警记录
|
||||
const alert = await db.query(
|
||||
`INSERT INTO health_alerts (user_id, alert_type, value, threshold, severity)
|
||||
VALUES ($1, $2, $3, $4, $5) RETURNING id`,
|
||||
[userId, record.type, alertValue, threshold,
|
||||
determineSeverity(record.type, alertValue, threshold)]
|
||||
);
|
||||
|
||||
// 通知用户
|
||||
await pushNotification(userId, {
|
||||
type: 'HEALTH_ALERT',
|
||||
title: '健康提醒',
|
||||
message: formatAlertMessage(record.type, alertValue),
|
||||
data: { alertId: alert.rows[0].id }
|
||||
});
|
||||
|
||||
// 通知子女
|
||||
const childLinks = await db.query(
|
||||
'SELECT child_id FROM child_parent_links WHERE parent_user_id = $1 AND notification_enabled = true',
|
||||
[userId]
|
||||
);
|
||||
for (const link of childLinks.rows) {
|
||||
await pushChildNotification(link.child_id, {
|
||||
type: 'PARENT_HEALTH_ALERT',
|
||||
parentUserId: userId,
|
||||
alertType: record.type,
|
||||
value: alertValue
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 子女端小程序架构
|
||||
|
||||
### 3.1 技术选型
|
||||
|
||||
| 技术 | 选择 | 理由 |
|
||||
|------|------|------|
|
||||
| 框架 | Taro 3.x + React | 跨平台小程序框架,后续可扩支付宝 |
|
||||
| 状态管理 | Zustand | 轻量、简单 |
|
||||
| UI库 | Taro UI | 适配微信小程序 |
|
||||
| 请求 | Taro.request封装 | 小程序网络请求 |
|
||||
|
||||
### 3.2 项目结构
|
||||
|
||||
```
|
||||
banxiang-child-miniapp/
|
||||
├── src/
|
||||
│ ├── app.tsx
|
||||
│ ├── app.config.ts
|
||||
│ ├── pages/
|
||||
│ │ ├── index/ # 首页(父母状态概览)
|
||||
│ │ ├── health/ # 健康数据
|
||||
│ │ ├── activities/ # 活动记录
|
||||
│ │ ├── proxy/ # 代办服务
|
||||
│ │ └── profile/ # 我的
|
||||
│ ├── components/
|
||||
│ │ ├── HealthCard.tsx
|
||||
│ │ ├── ActivityCard.tsx
|
||||
│ │ └── AlertBanner.tsx
|
||||
│ ├── services/
|
||||
│ │ ├── api.ts
|
||||
│ │ └── auth.ts
|
||||
│ └── stores/
|
||||
│ ├── authStore.ts
|
||||
│ └── parentStore.ts
|
||||
├── config/
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### 3.3 子女端API端点
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| POST | /child/auth/wx-login | 微信登录 |
|
||||
| POST | /child/bind | 绑定父母 |
|
||||
| GET | /child/parents | 已绑定父母列表 |
|
||||
| GET | /child/parents/:id/overview | 父母状态概览 |
|
||||
| GET | /child/parents/:id/health | 健康数据 |
|
||||
| GET | /child/parents/:id/health/trends | 趋势数据 |
|
||||
| GET | /child/parents/:id/health/reports | 周报列表 |
|
||||
| GET | /child/parents/:id/activities | 活动记录 |
|
||||
| POST | /child/parents/:id/proxy-order | 代办下单 |
|
||||
| POST | /child/parents/:id/membership | 代付会员 |
|
||||
| GET | /child/alerts | 预警通知列表 |
|
||||
| PUT | /child/alerts/:id/ack | 确认预警 |
|
||||
|
||||
### 3.4 微信登录流程
|
||||
|
||||
```javascript
|
||||
// 子女端登录
|
||||
router.post('/child/auth/wx-login', async (req, res) => {
|
||||
const { code } = req.body;
|
||||
|
||||
// 换取openid
|
||||
const wxRes = await axios.get(
|
||||
`https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${code}&grant_type=authorization_code`
|
||||
);
|
||||
|
||||
const { openid, unionid } = wxRes.data;
|
||||
|
||||
// 查找或创建用户
|
||||
let user = await db.query('SELECT * FROM child_users WHERE wx_openid = $1', [openid]);
|
||||
if (!user.rows.length) {
|
||||
user = await db.query(
|
||||
'INSERT INTO child_users (wx_openid, wx_unionid) VALUES ($1, $2) RETURNING *',
|
||||
[openid, unionid]
|
||||
);
|
||||
}
|
||||
|
||||
const token = jwt.sign({ childId: user.rows[0].id, type: 'child' }, JWT_SECRET);
|
||||
res.json({ success: true, data: { token, user: user.rows[0] } });
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 内容审核方案
|
||||
|
||||
### 4.1 双重审核机制
|
||||
|
||||
```
|
||||
用户发布内容
|
||||
↓
|
||||
┌─────────────────┐
|
||||
│ 机器审核(实时)│
|
||||
│ ├── 文字:敏感词库 + 通义千问审核
|
||||
│ └── 图片:阿里云内容安全API
|
||||
└──────┬──────────┘
|
||||
↓
|
||||
├── 通过 → 直接发布
|
||||
├── 疑似 → 标记待人工审核,临时发布
|
||||
└── 违规 → 拦截,通知用户
|
||||
↓
|
||||
┌─────────────────┐
|
||||
│ 人工审核(异步)│ ← 疑似内容队列
|
||||
│ 管理后台审核 │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
### 4.2 敏感词库
|
||||
|
||||
- 基础库:政治/色情/暴力/赌博
|
||||
- 医疗库:虚假医疗广告、伪科学养生
|
||||
- 诈骗库:常见诈骗话术、钓鱼链接
|
||||
- 自定义库:平台运营过程中积累
|
||||
|
||||
---
|
||||
|
||||
## 5. 部署变更
|
||||
|
||||
### 5.1 新增服务
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml 新增
|
||||
services:
|
||||
# 健康数据同步Worker
|
||||
health-worker:
|
||||
build: .
|
||||
command: node workers/health-sync.js
|
||||
environment:
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- DATABASE_URL=postgres://...
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
restart: always
|
||||
|
||||
# 预警检测(与主服务共用,通过Bull队列触发)
|
||||
# 无需独立服务,health-worker内集成
|
||||
```
|
||||
|
||||
### 5.2 服务器升级
|
||||
|
||||
| 服务 | V1.0配置 | V1.2配置 | 原因 |
|
||||
|------|----------|----------|------|
|
||||
| ECS | 2核4G | 4核8G | Worker增加 |
|
||||
| RDS | 2核4G | 2核4G | 暂不变,健康数据用分区 |
|
||||
| Redis | 1G | 2G | Bull队列+更多缓存 |
|
||||
| **月费** | ¥700 | **¥1000** | |
|
||||
|
||||
---
|
||||
|
||||
## 6. 华为/小米健康API接入
|
||||
|
||||
### 6.1 华为健康
|
||||
|
||||
- **OAuth2授权**: 用户在APP内跳转华为健康授权页
|
||||
- **API文档**: https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/open-platform-oauth-0000001050123437
|
||||
- **数据类型**: 步数、心率、血压、血糖、睡眠
|
||||
- **频率限制**: 1000次/天/用户
|
||||
|
||||
### 6.2 小米运动
|
||||
|
||||
- **OAuth2授权**: 小米开放平台授权
|
||||
- **API文档**: https://dev.mi.com/docs
|
||||
- **数据类型**: 步数、心率、睡眠
|
||||
- **注意**: 小米手环不支持血压直接测量,需外接血压计
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
523
docs/技术方案-V2.0-完整架构.md
Normal file
523
docs/技术方案-V2.0-完整架构.md
Normal file
@ -0,0 +1,523 @@
|
||||
---
|
||||
slug: tech-v2-0-full-architecture
|
||||
---
|
||||
|
||||
# 「伴享」技术方案 V2.0 — 完整架构
|
||||
|
||||
**版本**: V2.0
|
||||
**对应PRD**: PRD-V2.0-完整产品
|
||||
**更新日期**: 2026-02-16
|
||||
|
||||
---
|
||||
|
||||
## 1. 架构演进
|
||||
|
||||
V2.0标志着产品从MVP走向完整商业化。核心变更:**商家后台Web端**、**完整9大服务板块**、**积分/优惠券/拼团**、**Elasticsearch搜索**。
|
||||
|
||||
### 1.1 完整架构图
|
||||
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ 客户端层 │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
|
||||
│ │Flutter │ │子女端 │ │商家后台 │ │管理后台 │ │
|
||||
│ │APP │ │小程序 │ │Web │ │Web(内部) │ │
|
||||
│ └────┬────┘ └────┬────┘ └────┬────┘ └──────┬──────┘ │
|
||||
└───────┼────────────┼────────────┼───────────────┼─────────┘
|
||||
│ │ │ │
|
||||
┌───────▼────────────▼────────────▼───────────────▼─────────┐
|
||||
│ Nginx API网关 │
|
||||
│ /api/v1/* → APP /api/merchant/* → 商家 │
|
||||
│ /api/child/* → 子女 /api/admin/* → 管理 │
|
||||
└────────────────────────┬──────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼──────────────────────────────────┐
|
||||
│ 业务服务层 (Node.js) │
|
||||
│ 用户│活动│AI管家│医疗│支付│通知│队长│会员│健康│子女│社区 │
|
||||
│ 商家│积分│优惠券│拼团│家政│配送│候鸟│文教│法律│设备│课程 │
|
||||
└────────────────────────┬──────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼──────────────────────────────────┐
|
||||
│ Worker层 │
|
||||
│ 健康同步│预警检测│队长等级│结算│积分过期│排行榜│会员到期 │
|
||||
└────────────────────────┬──────────────────────────────────┘
|
||||
│
|
||||
┌────────────────────────▼──────────────────────────────────┐
|
||||
│ 数据层 │
|
||||
│ PostgreSQL │ Redis │ OSS │ Elasticsearch │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 1.2 新增技术组件
|
||||
|
||||
| 组件 | 用途 | 版本 |
|
||||
|------|------|------|
|
||||
| Elasticsearch | 全文搜索+日志 | 8.x |
|
||||
| React + Ant Design Pro | 商家后台 | React 18 |
|
||||
| Bull | 任务队列 | 4.x |
|
||||
|
||||
---
|
||||
|
||||
## 2. 商家后台架构
|
||||
|
||||
### 2.1 技术选型
|
||||
|
||||
- **前端**: React 18 + Ant Design Pro + ECharts + Vite
|
||||
- **状态管理**: Zustand
|
||||
- **部署**: Nginx静态托管 + CDN
|
||||
|
||||
### 2.2 项目结构
|
||||
|
||||
```
|
||||
banxiang-merchant-web/
|
||||
├── src/
|
||||
│ ├── pages/
|
||||
│ │ ├── login/ # 登录
|
||||
│ │ ├── register/ # 注册+资质
|
||||
│ │ ├── dashboard/ # 数据看板
|
||||
│ │ ├── services/ # 服务管理
|
||||
│ │ ├── orders/ # 订单管理
|
||||
│ │ ├── finance/ # 财务结算
|
||||
│ │ ├── reviews/ # 评价管理
|
||||
│ │ └── settings/ # 店铺设置
|
||||
│ ├── components/
|
||||
│ ├── services/api.ts
|
||||
│ └── stores/
|
||||
└── package.json
|
||||
```
|
||||
|
||||
### 2.3 增量DDL
|
||||
|
||||
```sql
|
||||
-- ===========================
|
||||
-- V2.0 增量DDL
|
||||
-- ===========================
|
||||
|
||||
-- 1. 商家
|
||||
CREATE TABLE merchants (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
company_name VARCHAR(200) NOT NULL,
|
||||
credit_code VARCHAR(18) UNIQUE,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
store_name VARCHAR(100),
|
||||
store_description TEXT,
|
||||
store_logo_url TEXT,
|
||||
contact_name VARCHAR(50),
|
||||
contact_phone VARCHAR(11),
|
||||
contact_email VARCHAR(100),
|
||||
business_license_url TEXT,
|
||||
industry_license_url TEXT,
|
||||
other_licenses TEXT[],
|
||||
address TEXT,
|
||||
lat DECIMAL(10,7),
|
||||
lng DECIMAL(10,7),
|
||||
service_area TEXT[],
|
||||
business_hours JSONB,
|
||||
annual_fee DECIMAL(10,2) DEFAULT 0,
|
||||
commission_rate DECIMAL(4,2),
|
||||
level VARCHAR(20) DEFAULT 'normal'
|
||||
CHECK (level IN ('normal', 'certified', 'strategic')),
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
total_orders INTEGER DEFAULT 0,
|
||||
total_revenue DECIMAL(12,2) DEFAULT 0,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
approved_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE merchant_accounts (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
phone VARCHAR(11) UNIQUE NOT NULL,
|
||||
password_hash VARCHAR(100),
|
||||
role VARCHAR(20) DEFAULT 'owner',
|
||||
last_login_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE merchant_services (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
title VARCHAR(200) NOT NULL,
|
||||
category VARCHAR(50),
|
||||
subcategory VARCHAR(50),
|
||||
description TEXT,
|
||||
images TEXT[],
|
||||
price DECIMAL(10,2),
|
||||
original_price DECIMAL(10,2),
|
||||
price_unit VARCHAR(20),
|
||||
stock INTEGER,
|
||||
service_duration VARCHAR(50),
|
||||
is_online BOOLEAN DEFAULT TRUE,
|
||||
sales_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE merchant_settlements (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
period_start DATE,
|
||||
period_end DATE,
|
||||
total_orders INTEGER,
|
||||
gross_amount DECIMAL(12,2),
|
||||
commission_amount DECIMAL(12,2),
|
||||
net_amount DECIMAL(12,2),
|
||||
bank_account_encrypted JSONB,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
paid_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE merchant_daily_stats (
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
stat_date DATE,
|
||||
page_views INTEGER DEFAULT 0,
|
||||
order_count INTEGER DEFAULT 0,
|
||||
revenue DECIMAL(10,2) DEFAULT 0,
|
||||
avg_rating DECIMAL(2,1),
|
||||
PRIMARY KEY(merchant_id, stat_date)
|
||||
);
|
||||
|
||||
-- 2. 积分
|
||||
CREATE TABLE point_accounts (
|
||||
user_id BIGINT PRIMARY KEY REFERENCES users(id),
|
||||
total_points INTEGER DEFAULT 0,
|
||||
available_points INTEGER DEFAULT 0,
|
||||
used_points INTEGER DEFAULT 0,
|
||||
expired_points INTEGER DEFAULT 0,
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE point_transactions (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
type VARCHAR(20),
|
||||
action VARCHAR(50),
|
||||
points INTEGER,
|
||||
balance INTEGER,
|
||||
reference_id VARCHAR(50),
|
||||
description TEXT,
|
||||
expires_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE point_products (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(100),
|
||||
description TEXT,
|
||||
image_url TEXT,
|
||||
points_required INTEGER,
|
||||
stock INTEGER,
|
||||
category VARCHAR(20),
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 3. 优惠券
|
||||
CREATE TABLE coupon_templates (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(100),
|
||||
type VARCHAR(20),
|
||||
value DECIMAL(10,2),
|
||||
min_amount DECIMAL(10,2),
|
||||
applicable_categories TEXT[],
|
||||
merchant_id BIGINT REFERENCES merchants(id),
|
||||
total_count INTEGER,
|
||||
issued_count INTEGER DEFAULT 0,
|
||||
valid_days INTEGER,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE user_coupons (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
template_id BIGINT REFERENCES coupon_templates(id),
|
||||
status VARCHAR(20) DEFAULT 'available',
|
||||
used_order_no VARCHAR(20),
|
||||
expires_at TIMESTAMP,
|
||||
used_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 4. 拼团
|
||||
CREATE TABLE group_buy_campaigns (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
service_id BIGINT REFERENCES merchant_services(id),
|
||||
original_price DECIMAL(10,2),
|
||||
group_price DECIMAL(10,2),
|
||||
min_members INTEGER DEFAULT 3,
|
||||
valid_hours INTEGER DEFAULT 24,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE group_buy_orders (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
campaign_id BIGINT REFERENCES group_buy_campaigns(id),
|
||||
initiator_id BIGINT REFERENCES users(id),
|
||||
current_members INTEGER DEFAULT 1,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
expires_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE group_buy_members (
|
||||
group_order_id BIGINT REFERENCES group_buy_orders(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
order_no VARCHAR(20),
|
||||
joined_at TIMESTAMP DEFAULT NOW(),
|
||||
PRIMARY KEY(group_order_id, user_id)
|
||||
);
|
||||
|
||||
-- 5. 课程
|
||||
CREATE TABLE courses (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
title VARCHAR(200),
|
||||
category VARCHAR(50),
|
||||
instructor_name VARCHAR(50),
|
||||
description TEXT,
|
||||
cover_image TEXT,
|
||||
type VARCHAR(20),
|
||||
video_url TEXT,
|
||||
live_room_id VARCHAR(50),
|
||||
scheduled_at TIMESTAMP,
|
||||
duration_minutes INTEGER,
|
||||
price DECIMAL(10,2) DEFAULT 0,
|
||||
enrollment_count INTEGER DEFAULT 0,
|
||||
rating DECIMAL(2,1) DEFAULT 5.0,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE course_enrollments (
|
||||
course_id BIGINT REFERENCES courses(id),
|
||||
user_id BIGINT REFERENCES users(id),
|
||||
progress DECIMAL(5,2) DEFAULT 0,
|
||||
completed BOOLEAN DEFAULT FALSE,
|
||||
enrolled_at TIMESTAMP DEFAULT NOW(),
|
||||
PRIMARY KEY(course_id, user_id)
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 商家API端点
|
||||
|
||||
| 方法 | 路径 | 描述 |
|
||||
|------|------|------|
|
||||
| POST | /merchant/register | 商家注册 |
|
||||
| POST | /merchant/auth/login | 登录 |
|
||||
| GET | /merchant/dashboard | 看板 |
|
||||
| GET/POST/PUT/DELETE | /merchant/services/* | 服务CRUD |
|
||||
| GET/POST | /merchant/orders/* | 订单管理 |
|
||||
| GET/POST | /merchant/settlements/* | 结算管理 |
|
||||
| GET | /merchant/stats/* | 数据统计 |
|
||||
| GET/POST | /merchant/reviews/* | 评价管理 |
|
||||
| PUT | /merchant/settings | 店铺设置 |
|
||||
| POST | /merchant/coupons | 创建优惠券 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 结算系统
|
||||
|
||||
```javascript
|
||||
// workers/settlement.js - 每月1日凌晨生成结算单
|
||||
cron.schedule('0 2 1 * *', async () => {
|
||||
const merchants = await db.query('SELECT * FROM merchants WHERE status = $1', ['active']);
|
||||
const lastMonth = moment().subtract(1, 'month');
|
||||
|
||||
for (const m of merchants.rows) {
|
||||
const stats = await db.query(`
|
||||
SELECT COUNT(*) as cnt, COALESCE(SUM(amount), 0) as gross
|
||||
FROM orders o
|
||||
JOIN merchant_services ms ON o.detail->>'serviceId' = ms.id::text
|
||||
WHERE ms.merchant_id = $1 AND o.status = 'completed'
|
||||
AND o.completed_at BETWEEN $2 AND $3
|
||||
`, [m.id, lastMonth.startOf('month').toDate(), lastMonth.endOf('month').toDate()]);
|
||||
|
||||
const gross = parseFloat(stats.rows[0].gross);
|
||||
const commission = gross * m.commission_rate / 100;
|
||||
|
||||
await db.query(`
|
||||
INSERT INTO merchant_settlements
|
||||
(merchant_id, period_start, period_end, total_orders, gross_amount, commission_amount, net_amount)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
`, [m.id, lastMonth.startOf('month').format('YYYY-MM-DD'),
|
||||
lastMonth.endOf('month').format('YYYY-MM-DD'),
|
||||
stats.rows[0].cnt, gross, commission, gross - commission]);
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Elasticsearch搜索
|
||||
|
||||
```json
|
||||
// 商家/服务索引,使用ik_max_word分词器
|
||||
// 支持:全文搜索 + 地理位置排序 + 分类筛选 + 评分排序
|
||||
```
|
||||
|
||||
```javascript
|
||||
// GET /api/v1/search?q=保洁&category=housekeeping&lat=30.57&lng=104.07
|
||||
router.get('/search', async (req, res) => {
|
||||
const { q, category, lat, lng, page = 1, size = 20 } = req.query;
|
||||
const result = await esClient.search({
|
||||
index: 'banxiang_services',
|
||||
body: {
|
||||
query: {
|
||||
bool: {
|
||||
must: [{ multi_match: { query: q, fields: ['title^2', 'description'] } }],
|
||||
filter: category ? [{ term: { category } }] : []
|
||||
}
|
||||
},
|
||||
sort: lat ? [{ _geo_distance: { location: { lat, lon: lng }, order: 'asc' } }] : [{ salesCount: 'desc' }],
|
||||
from: (page - 1) * size, size
|
||||
}
|
||||
});
|
||||
res.json({ success: true, data: result.hits });
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 完整部署方案
|
||||
|
||||
### 6.1 服务器配置
|
||||
|
||||
| 服务 | 配置 | 月费 |
|
||||
|------|------|------|
|
||||
| 应用服务器 | ECS 4核8G × 2 | ¥800 |
|
||||
| 数据库 | RDS PG 4核8G(主从) | ¥600 |
|
||||
| Redis | 2G | ¥150 |
|
||||
| Elasticsearch | 2核4G | ¥300 |
|
||||
| OSS + CDN | 按量 | ¥200 |
|
||||
| **月合计** | | **¥2050** |
|
||||
|
||||
### 6.2 Docker Compose
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports: ["3000:3000"]
|
||||
deploy: { replicas: 2 }
|
||||
depends_on: [db, redis, es]
|
||||
restart: always
|
||||
worker:
|
||||
build: .
|
||||
command: node workers/index.js
|
||||
depends_on: [db, redis]
|
||||
restart: always
|
||||
db:
|
||||
image: postgres:15
|
||||
volumes: [pgdata:/var/lib/postgresql/data]
|
||||
restart: always
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
volumes: [redisdata:/data]
|
||||
restart: always
|
||||
es:
|
||||
image: elasticsearch:8.12.0
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
volumes: [esdata:/usr/share/elasticsearch/data]
|
||||
restart: always
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
ports: ["80:80", "443:443"]
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./merchant-web/dist:/var/www/merchant
|
||||
depends_on: [app]
|
||||
restart: always
|
||||
volumes:
|
||||
pgdata:
|
||||
redisdata:
|
||||
esdata:
|
||||
```
|
||||
|
||||
### 6.3 Nginx关键配置
|
||||
|
||||
```nginx
|
||||
# APP API + SSE支持
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name api.banxiang.com;
|
||||
location /api/ { proxy_pass http://app:3000; }
|
||||
location /api/v1/ai/chat {
|
||||
proxy_pass http://app:3000;
|
||||
proxy_buffering off;
|
||||
proxy_http_version 1.1;
|
||||
}
|
||||
}
|
||||
# 商家后台SPA
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name merchant.banxiang.com;
|
||||
root /var/www/merchant;
|
||||
location / { try_files $uri /index.html; }
|
||||
location /api/merchant/ { proxy_pass http://app:3000; }
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 数据库表总览(全版本49张表)
|
||||
|
||||
| 版本 | 表数 | 核心表 |
|
||||
|------|------|--------|
|
||||
| V1.0 | 17张 | users, activities, ai_conversations, orders, hospitals等 |
|
||||
| V1.1 | 9张 | captains, memberships, service_providers, products等 |
|
||||
| V1.2 | 11张 | health_records, child_users, posts, service_products等 |
|
||||
| V2.0 | 12张 | merchants, point_accounts, coupon_templates, courses等 |
|
||||
| **合计** | **49张** | |
|
||||
|
||||
---
|
||||
|
||||
## 8. 向微服务演进路线
|
||||
|
||||
```
|
||||
V2.0 (当前): 模块化单体
|
||||
→ 代码按服务边界分离,共享数据库
|
||||
|
||||
V3.0 (计划): 拆分核心服务
|
||||
→ 用户服务(独立DB)
|
||||
→ 活动服务(独立DB)
|
||||
→ AI管家服务(独立,GPU资源)
|
||||
→ 其余保持单体
|
||||
|
||||
V4.0 (远期): 完整微服务
|
||||
→ 所有服务独立
|
||||
→ API Gateway统一入口
|
||||
→ 服务间gRPC通信
|
||||
→ K8s编排
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. 安全合规清单
|
||||
|
||||
| 项目 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 《个人信息保护法》合规 | ✅ | 最小收集、明确告知、分项授权 |
|
||||
| 数据加密 | ✅ | TLS 1.3 + AES-256 |
|
||||
| 健康数据隔离 | ✅ | 单独加密存储 |
|
||||
| 医疗免责声明 | ✅ | 所有页面标注 |
|
||||
| 金融合规 | ✅ | 仅信息展示,不销售 |
|
||||
| 老年人权益 | ✅ | 无自动续费、大额二次确认 |
|
||||
| RBAC权限 | ✅ | 用户/商家/管理员角色分离 |
|
||||
| 审计日志 | ✅ | 全操作记录 |
|
||||
| 数据备份 | ✅ | 每日自动+跨区域 |
|
||||
| 安全渗透测试 | 📋 | V2.0上线前完成 |
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
801
docs/银发社交平台商业方案.md
Normal file
801
docs/银发社交平台商业方案.md
Normal file
@ -0,0 +1,801 @@
|
||||
---
|
||||
slug: silver-social-business-plan
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
# 「伴享」— 银发智慧生活社交平台
|
||||
|
||||
## 商业计划书
|
||||
|
||||
**版本:V1.0 | 日期:2026年2月16日**
|
||||
|
||||
---
|
||||
|
||||
*本文件包含商业机密信息,仅供指定阅读人内部评估使用。*
|
||||
*未经授权,严禁复制、转发或以任何形式对外披露。*
|
||||
*© 2026 保留所有权利*
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
# 第一部分:执行摘要
|
||||
|
||||
## 1.1 项目概述
|
||||
|
||||
「伴享」是一个面向中国50岁以上银发群体的智慧生活社交平台,融合**线下社交活动**、**本地生活服务**和**AI智能管家**三大核心能力,打造"社交带动服务、AI提升体验"的银发经济新范式。项目依托合伙人在成都深耕多年积累的数万高净值银发用户和数百家线下商户资源,结合技术团队的AI与产品开发能力,以成都为起点,构建覆盖医疗、康养、家政、候鸟养老等九大板块的一站式银发生活服务平台。
|
||||
|
||||
## 1.2 核心价值主张
|
||||
|
||||
| 维度 | 价值 |
|
||||
|------|------|
|
||||
| 对用户 | 不孤独、不麻烦、不掉队——一个APP解决社交、生活、健康三大需求 |
|
||||
| 对商家 | 精准触达高净值银发用户,降低获客成本,提升复购率 |
|
||||
| 对子女 | 远程了解父母健康与社交状态,安心省心 |
|
||||
| 对社会 | 缓解老龄化带来的孤独危机,激活银发消费潜力 |
|
||||
|
||||
## 1.3 市场机会
|
||||
|
||||
中国60岁以上人口已突破**3亿**,银发经济市场规模2024年达**7万亿元**,预计2035年将达**30万亿元**。然而现有银发类APP普遍停留在工具层面(广场舞视频、相册制作),缺乏**社交粘性**和**服务闭环**,存在巨大的市场空白。
|
||||
|
||||
## 1.4 团队优势
|
||||
|
||||
- **合伙人(朱源惠)**:成都大健康/银发经济行业深耕多年,拥有数万高净值银发用户数据、数百家线下商户合作关系、丰富的行业资源与运营经验
|
||||
- **技术团队**:具备AI技术能力、APP全栈开发能力、产品设计经验,能快速将AI智能管家从概念落地为产品
|
||||
|
||||
## 1.5 合作需求
|
||||
|
||||
双方以联合创始人身份深度合作,初期投入约**30-50万元**,主要用于服务器/云服务、基础运营和少量人工。由于合伙人已拥有数万C端用户和数百家商户关系,用户获取和商家拓展成本几乎为零;技术开发采用AI辅助,无需组建大型团队。目标6个月内完成MVP并实现成都市场验证,12个月内覆盖西南主要城市。
|
||||
|
||||
---
|
||||
|
||||
# 第二部分:市场分析
|
||||
|
||||
## 2.1 中国银发经济市场规模与趋势
|
||||
|
||||
### 宏观数据
|
||||
|
||||
| 指标 | 数据 | 来源 |
|
||||
|------|------|------|
|
||||
| 60岁以上人口 | 2.97亿(2023年末),占总人口21.1% | 国家统计局 |
|
||||
| 预计2035年60+人口 | 超4亿,占比超30% | 中国发展基金会 |
|
||||
| 2024年银发经济市场规模 | 约7万亿元 | 国务院办公厅 |
|
||||
| 2035年预计规模 | 约30万亿元 | 中国老龄科学研究中心 |
|
||||
| 老年人互联网普及率 | 50岁以上网民约3亿人 | CNNIC |
|
||||
| 银发群体月均线上消费 | 超1,200元 | QuestMobile |
|
||||
|
||||
### 关键趋势
|
||||
|
||||
1. **政策红利**:2024年国务院发布首个银发经济专项政策文件,明确纳入国家战略
|
||||
2. **数字化加速**:疫情后银发群体智能手机使用率大幅提升,50+网民超3亿
|
||||
3. **消费升级**:从"生存型"向"享受型"转变,旅游、社交、健康管理需求爆发
|
||||
4. **孤独危机**:中国空巢老人超1.2亿,孤独感成为最大心理健康挑战
|
||||
5. **代际支付**:子女为父母付费意愿显著提升,"孝心经济"成为新增长点
|
||||
|
||||
### 成都市场特殊优势
|
||||
|
||||
- 60岁以上常住人口约**400万**,占比超20%
|
||||
- 茶馆文化、社区文化浓厚,天然适合社交活动类产品
|
||||
- 大健康产业集聚,医疗、康养资源丰富
|
||||
- 候鸟养老交通枢纽(攀枝花、海南、云南)
|
||||
- 银发群体消费意愿和活跃度高于全国平均
|
||||
|
||||
## 2.2 目标用户画像
|
||||
|
||||
### 核心用户:活力银发族(55-70岁)
|
||||
|
||||
| 细分群体 | 特征 | 核心需求 | 占比 |
|
||||
|----------|------|----------|------|
|
||||
| **社交活跃型** | 退休不久,精力充沛 | 结交新朋友、丰富退休生活 | 35% |
|
||||
| **健康关注型** | 有慢病管理需求 | 健康监测、医疗服务、养生知识 | 25% |
|
||||
| **生活品质型** | 经济实力较好 | 优质服务、旅居养老、文化活动 | 20% |
|
||||
| **家庭陪伴型** | 子女不在身边 | 生活代办、子女远程关怀 | 15% |
|
||||
| **数字学习型** | 想跟上时代 | 简单易用的数字工具 | 5% |
|
||||
|
||||
### 延伸用户:关爱子女(30-50岁)
|
||||
|
||||
为父母购买会员、远程了解父母状态、预约服务的中青年子女群体,是重要的付费驱动力。
|
||||
|
||||
## 2.3 竞品分析
|
||||
|
||||
| 产品 | 定位 | 用户规模 | 变现模式 | 优势 | 不足 |
|
||||
|------|------|----------|----------|------|------|
|
||||
| **美篇** | 图文创作 | 2亿+ | 广告、会员 | 用户基数大 | 纯工具,无服务闭环 |
|
||||
| **糖豆** | 广场舞 | 2亿+ | 广告、电商 | 垂直领先 | 场景单一 |
|
||||
| **小年糕** | 影集制作 | 1亿+ | 广告 | 操作简单 | 工具属性强,社交弱 |
|
||||
| **老来网** | 社保认证 | 数千万 | 政务合作 | 刚需入口 | 低频,体验差 |
|
||||
|
||||
### 市场定位矩阵
|
||||
|
||||
```
|
||||
社交属性强
|
||||
↑
|
||||
【空白区】 | 美篇
|
||||
★伴享★ |
|
||||
|
|
||||
服务闭环 ←----+----→ 纯工具
|
||||
|
|
||||
老来网 | 糖豆 / 小年糕
|
||||
↓
|
||||
社交属性弱
|
||||
```
|
||||
|
||||
## 2.4 市场空白与机会
|
||||
|
||||
1. **社交+服务融合空白**:现有产品要么做社交要么做服务,无"以社交带动服务"的闭环
|
||||
2. **AI赋能空白**:无产品将AI智能管家应用于银发场景
|
||||
3. **线上线下结合空白**:缺乏Meet5式以线下真实社交为核心的模式
|
||||
|
||||
**「伴享」正是要填补这三个空白。**
|
||||
|
||||
---
|
||||
|
||||
# 第三部分:产品方案
|
||||
|
||||
## 3.1 产品定位与核心理念
|
||||
|
||||
> **「伴享」——让每一天都有伴,让每一刻都享受**
|
||||
|
||||
- **社交理念**(借鉴Meet5):线下小组活动促进真实社交,对抗孤独
|
||||
- **服务理念**:一站式生活服务平台,便捷触达本地优质服务
|
||||
- **技术理念**:AI智能管家,用最自然的语音交互让科技服务于人
|
||||
|
||||
## 3.2 功能架构
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 「伴享」APP │
|
||||
├────────┬────────┬────────┬────────┬──────────┤
|
||||
│社交活动 │生活服务 │ AI管家 │健康管理 │ 内容社区 │
|
||||
├────────┴────────┴────────┴────────┴──────────┤
|
||||
│ AI引擎 / 推荐系统 / 数据中台 │
|
||||
├──────────────────────────────────────────────┤
|
||||
│ 用户体系 / 支付系统 / 消息系统 │
|
||||
└──────────────────────────────────────────────┘
|
||||
↕ ↕
|
||||
┌─────────┐ ┌──────────┐
|
||||
│ 子女端 │ │ 商家后台 │
|
||||
│(小程序) │ │(Web端) │
|
||||
└─────────┘ └──────────┘
|
||||
```
|
||||
|
||||
### 模块一:社交活动(借鉴Meet5模式)
|
||||
|
||||
核心差异化模块,借鉴Meet5全球验证成功的模式并本土化。
|
||||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| **活动发现** | 基于地理+兴趣智能推荐(晨练、太极、茶话会、书法、摄影等) |
|
||||
| **活动创建** | 任何用户可发起,设置时间/地点/人数/类型 |
|
||||
| **小组社交** | 5-15人小组(非1对1),降低社交压力 |
|
||||
| **兴趣匹配** | 基于兴趣标签、活动历史的智能匹配 |
|
||||
| **社区队长** | 活跃用户申请成为队长,获组织权限和荣誉 |
|
||||
| **安全机制** | 限公共场所、实名认证、紧急联系人、签到 |
|
||||
|
||||
**社区队长(Captain)本土化机制:**
|
||||
|
||||
Meet5的Community Captains在中国有天然土壤——广场舞队长、社区积极分子、退休干部、太极教练、老年大学班长。「伴享」为他们提供工具和激励:
|
||||
|
||||
| 等级 | 条件 | 权益 |
|
||||
|------|------|------|
|
||||
| 见习队长 | 组织3次活动 | 专属标识、优先推荐 |
|
||||
| 银牌队长 | 累计20次、好评>90% | 免费会员、活动补贴 |
|
||||
| 金牌队长 | 累计50次、带新用户>100 | 月度奖金、平台分成 |
|
||||
| 荣誉队长 | 年度评选 | 品牌大使、媒体曝光 |
|
||||
|
||||
### 模块二:生活服务(九大板块)
|
||||
|
||||
| 板块 | 服务内容 | 商家类型 |
|
||||
|------|----------|----------|
|
||||
| **医疗健康** | 挂号、在线问诊、体检、慢病管理 | 医院、诊所、体检中心 |
|
||||
| **康养护理** | 居家护理、康复、心理咨询 | 康养机构、护理站 |
|
||||
| **家政服务** | 保洁、维修、陪护、代办 | 家政公司 |
|
||||
| **候鸟养老** | 旅居养老、短期度假、养老社区 | 养老机构、旅游公司 |
|
||||
| **日常消费** | 生鲜配送、日化、营养品 | 商超、品牌商 |
|
||||
| **文化教育** | 老年大学、兴趣班、讲座 | 教育机构 |
|
||||
| **金融理财** | 适老理财信息、保险咨询 | 银行、保险(合规展示) |
|
||||
| **法律服务** | 遗嘱咨询、权益保护 | 律所 |
|
||||
| **智能设备** | 健康手环、智能药盒、呼叫器 | 设备厂商 |
|
||||
|
||||
### 模块三:AI智能管家
|
||||
|
||||
最具技术壁垒的差异化能力。
|
||||
|
||||
**① 语音交互**
|
||||
|
||||
```
|
||||
用户:「小伴,帮我挂个华西医院心内科的号」
|
||||
AI:「好的张阿姨,下周二上午有王教授的号,您上次看的就是
|
||||
王教授,要继续挂他的号吗?」
|
||||
用户:「就挂他的」
|
||||
AI:「已预约下周二9:30。提前一天提醒您,需要帮您叫车吗?」
|
||||
```
|
||||
|
||||
**② 自动化生活服务**
|
||||
|
||||
| 场景 | 能力 |
|
||||
|------|------|
|
||||
| 买菜 | 「今晚想吃鱼」→ 匹配生鲜店、下单、配送 |
|
||||
| 外卖 | 根据健康档案推荐适合餐食(低盐低糖) |
|
||||
| 挂号 | 理解症状→推荐科室医生→自动预约 |
|
||||
| 买票 | 语音指令完成火车票/机票/门票购买 |
|
||||
| 缴费 | 水电煤/话费/物业,语音提醒并代缴 |
|
||||
| 叫车 | 一句话叫车,自动填常用地址 |
|
||||
|
||||
**③ 健康提醒**:用药提醒、运动建议、体检报告解读、异常预警通知子女
|
||||
|
||||
**④ 子女端同步**:活动动态、健康报警、远程预约、充值会员、语音关怀
|
||||
|
||||
### 模块四:健康管理
|
||||
|
||||
设备接入(华为/小米手环手表)、电子健康档案、数据可视化(血压/血糖/心率趋势)、异常报警通知、AI个性化养生建议(非诊断)。
|
||||
|
||||
### 模块五:内容社区
|
||||
|
||||
养生知识(专业医生入驻)、活动分享、生活记录(类朋友圈)、短视频创作工具、知识课堂(防诈骗、手机使用教程)。
|
||||
|
||||
## 3.3 用户旅程图
|
||||
|
||||
```
|
||||
Day 1 ─ 注册 ──── 子女帮下载 → 语音引导注册 → 兴趣标签 → AI推荐活动
|
||||
Day 3 ─ 首次活动 ─ 报名太极晨练小组 → 认识新朋友 → APP交流
|
||||
Day 7 ─ AI管家 ── 语音挂号华西医院 → 子女端收到通知
|
||||
Day 14 ─ 开通会员 ─ 子女代付99元/年 → 解锁完整功能
|
||||
Day 30 ─ 活跃用户 ─ 参加8次活动 → 日常AI管家 → 推荐3位好友
|
||||
Day 90 ─ 社区队长 ─ 组织3次活动 → 成为见习队长 → 带动更多用户
|
||||
```
|
||||
|
||||
## 3.4 产品原型描述
|
||||
|
||||
- **首页**:搜索栏 + AI语音入口 + 活动Feed流(卡片式) + 底部Tab
|
||||
- **AI管家页**:对话界面 + 快捷指令(挂号/买菜/叫车/天气/提醒)+ 语音为主
|
||||
- **服务页**:九宫格入口 + 推荐商家 + 附近地图
|
||||
- **我的页**:个人信息/健康档案/会员/活动/订单/家人关联/无障碍设置
|
||||
|
||||
**适老化设计**:默认18px字号可调至24px、高对比度、核心操作≤3步、全局语音支持、误操作可撤销、子女可远程调设置。
|
||||
|
||||
## 3.5 线上线下结合
|
||||
|
||||
**"线下活动建立信任 → 线上沉淀关系 → 服务自然转化"** 的良性循环。商家赞助线下活动获精准曝光,社区队长线下组织线上管理。
|
||||
|
||||
---
|
||||
|
||||
# 第四部分:商业模式
|
||||
|
||||
## 4.1 收入来源
|
||||
|
||||
| 来源 | 模式 | 成熟期占比 |
|
||||
|------|------|-----------|
|
||||
| 用户会员费 | 99/299元/年 | 25% |
|
||||
| 商家入驻费 | 年费制 | 20% |
|
||||
| 精准匹配佣金 | 交易抽佣5-15% | 30% |
|
||||
| 广告收入 | 信息流/开屏 | 10% |
|
||||
| 增值服务 | 置顶/推广/报告 | 5% |
|
||||
| 设备分销 | 硬件佣金 | 5% |
|
||||
| 数据服务 | B端趋势报告 | 3% |
|
||||
| 子女端 | 关怀套餐 | 2% |
|
||||
|
||||
## 4.2 定价策略
|
||||
|
||||
**会员体系:**
|
||||
|
||||
| 功能 | 免费 | 基础(99元/年) | 尊享(299元/年) |
|
||||
|------|------|----------------|-----------------|
|
||||
| 活动参与 | 月3次 | 无限 | 无限+优先 |
|
||||
| AI管家 | 基础问答 | 完整语音 | 专属+家庭共享 |
|
||||
| 服务预约 | 基础 | 优先+优惠 | VIP+专属折扣 |
|
||||
| 健康管理 | 基本 | 完整+提醒 | 专家解读+报警 |
|
||||
| 子女端 | × | 基础 | 完整 |
|
||||
|
||||
**商家入驻:**
|
||||
|
||||
| 类目 | 年费 | 佣金 |
|
||||
|------|------|------|
|
||||
| 医疗健康 | 5,000-20,000 | 5-8% |
|
||||
| 康养护理 | 3,000-10,000 | 8-12% |
|
||||
| 家政服务 | 2,000-5,000 | 10-15% |
|
||||
| 候鸟养老 | 5,000-15,000 | 8-10% |
|
||||
| 日常消费 | 1,000-3,000 | 5-10% |
|
||||
| 文化教育 | 1,000-5,000 | 10-15% |
|
||||
|
||||
## 4.3 单位经济模型
|
||||
|
||||
| 指标 | 估算值 | 说明 |
|
||||
|------|--------|------|
|
||||
| CAC | 15-30元 | 利用现有用户资源,极低获客成本 |
|
||||
| LTV | 500-800元 | 3年留存、会员+佣金 |
|
||||
| LTV/CAC | 17-53x | 远超健康值3x |
|
||||
| 会员转化率 | 15-25% | 子女代付提升转化 |
|
||||
| 月活留存率 | 40-50% | 社交活动提升粘性 |
|
||||
| 毛利率 | 60-70% | 平台模式,轻资产 |
|
||||
|
||||
## 4.4 盈利时间线
|
||||
|
||||
| 阶段 | 时间 | 状态 |
|
||||
|------|------|------|
|
||||
| MVP验证期 | 0-6月 | 低成本运营,小幅亏损 |
|
||||
| 增长期 | 6-12月 | 收入增长,实现盈亏平衡 |
|
||||
| 规模盈利 | 12月+ | 持续盈利,利润率快速提升 |
|
||||
|
||||
---
|
||||
|
||||
# 第五部分:技术方案
|
||||
|
||||
## 5.1 技术架构概览
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────┐
|
||||
│ 客户端:iOS/Android APP + 子女端小程序 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ API网关:鉴权 / 限流 / 日志 / 路由 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ 业务微服务层 │
|
||||
│ 用户服务 | 活动服务 | 商家服务 | 订单服务 │
|
||||
│ AI管家 | 健康服务 | 内容服务 | 消息服务 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ AI引擎层 │
|
||||
│ NLP/语音识别 | 推荐引擎 | 健康分析 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ 数据层 │
|
||||
│ MySQL | Redis | ES | 对象存储 | 消息队列 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ 基础设施:阿里云/腾讯云 + CDN + 监控 │
|
||||
└──────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**技术选型要点:**
|
||||
- 客户端:Flutter跨平台开发,一套代码iOS/Android双端
|
||||
- 后端:Go/Java微服务 + gRPC通信
|
||||
- AI:接入大模型API(通义千问/文心等)+ 自研Prompt工程 + RAG知识库
|
||||
- 数据库:MySQL主库 + Redis缓存 + Elasticsearch搜索
|
||||
- 部署:Kubernetes容器化,支持弹性伸缩
|
||||
|
||||
## 5.2 AI能力详细说明
|
||||
|
||||
| AI能力 | 技术实现 | 应用场景 |
|
||||
|--------|----------|----------|
|
||||
| **语音交互** | ASR(语音识别)+ LLM(语义理解)+ TTS(语音合成) | AI管家全场景语音对话 |
|
||||
| **智能推荐** | 协同过滤 + 内容标签 + 用户画像 | 活动推荐、商家匹配、内容分发 |
|
||||
| **健康监测** | 时序数据分析 + 异常检测算法 | 血压/血糖异常预警 |
|
||||
| **自动化服务** | LLM Agent + API编排 + 工具调用 | 挂号、买菜、叫车等自动执行 |
|
||||
| **内容审核** | 多模态审核模型 | 社区内容安全过滤 |
|
||||
| **防诈骗** | 风控模型 + 规则引擎 | 识别诈骗信息、保护用户 |
|
||||
|
||||
**AI管家的技术架构:**
|
||||
|
||||
```
|
||||
语音输入 → ASR转文字 → 意图识别 → 任务分发
|
||||
↓
|
||||
┌─────────────────┐
|
||||
│ 挂号Agent │
|
||||
│ 买菜Agent │
|
||||
│ 叫车Agent │
|
||||
│ 缴费Agent │
|
||||
│ 闲聊/咨询Agent │
|
||||
└────────┬────────┘
|
||||
↓
|
||||
执行结果 → TTS语音播报
|
||||
→ 推送通知
|
||||
→ 子女端同步
|
||||
```
|
||||
|
||||
## 5.3 数据安全与隐私保护
|
||||
|
||||
| 层面 | 措施 |
|
||||
|------|------|
|
||||
| **法规合规** | 严格遵循《个人信息保护法》《数据安全法》《健康医疗大数据管理办法》 |
|
||||
| **数据加密** | 传输层TLS 1.3,存储层AES-256加密,敏感字段脱敏 |
|
||||
| **访问控制** | RBAC权限模型,最小权限原则,操作审计日志 |
|
||||
| **用户授权** | 明确告知数据用途,分项授权,支持数据导出和删除 |
|
||||
| **健康数据** | 单独加密存储,严格访问限制,不用于商业推送 |
|
||||
| **第三方合规** | 商家仅获得服务必要的脱敏信息 |
|
||||
|
||||
## 5.4 开发路线图
|
||||
|
||||
| 里程碑 | 时间 | 交付物 |
|
||||
|--------|------|--------|
|
||||
| M1:技术选型 | 第1月 | 技术架构文档、开发环境 |
|
||||
| M2:核心框架 | 第2月 | 用户系统、基础UI框架 |
|
||||
| M3:MVP功能 | 第3月 | 活动模块、基础AI管家、商家入驻 |
|
||||
| M4:内测优化 | 第4月 | 用户反馈迭代、性能优化 |
|
||||
| M5:公测上线 | 第5月 | 应用商店上架、运营工具 |
|
||||
| M6:完整功能 | 第6月 | 健康管理、子女端、内容社区 |
|
||||
|
||||
---
|
||||
|
||||
# 第六部分:运营策略
|
||||
|
||||
## 6.1 冷启动方案
|
||||
|
||||
**核心优势:合伙人已有用户和商家资源,冷启动成本极低。**
|
||||
|
||||
| 步骤 | 动作 | 目标 |
|
||||
|------|------|------|
|
||||
| **Step 1** | 从合伙人现有用户中筛选500-1000名活跃用户作为种子用户 | 验证产品、收集反馈 |
|
||||
| **Step 2** | 邀请10-20名社区活动组织者成为首批"社区队长" | 建立活动供给 |
|
||||
| **Step 3** | 首批100家合作商家入驻(利用现有合作关系) | 建立服务供给 |
|
||||
| **Step 4** | 在成都3-5个社区举办线下体验活动 | 口碑传播 |
|
||||
| **Step 5** | 种子用户"邀请有礼"裂变 | 快速扩大用户基数 |
|
||||
|
||||
## 6.2 用户增长策略
|
||||
|
||||
| 渠道 | 方式 | 预估效果 |
|
||||
|------|------|----------|
|
||||
| **老带新** | 邀请好友获会员天数/活动次数 | 主力渠道,占50%+ |
|
||||
| **社区队长** | 每位队长带动50-200人 | 高质量增长 |
|
||||
| **子女传播** | "给爸妈一份礼物"营销 | 节假日爆发 |
|
||||
| **线下活动** | 社区/公园/广场推广 | 精准获客 |
|
||||
| **商家引流** | 商家推荐用户下载获优惠 | 互利共赢 |
|
||||
| **内容营销** | 抖音/快手银发KOL合作 | 品牌曝光 |
|
||||
| **政府合作** | 社区养老服务、老龄委项目 | 公信力背书 |
|
||||
|
||||
## 6.3 社区运营(社区队长机制)
|
||||
|
||||
**队长招募**:从现有广场舞队长、社区积极分子、老年大学班长中招募
|
||||
|
||||
**队长培训**:APP使用培训 + 活动组织技巧 + 安全规范
|
||||
|
||||
**队长激励**:
|
||||
- 物质激励:活动补贴(每次20-50元)、月度奖金、商家优惠券
|
||||
- 精神激励:等级荣誉、社区排名、年度评选、媒体报道
|
||||
- 成长激励:参加平台组织的交流会、外出参观学习
|
||||
|
||||
**活动质量控制**:评价体系 + 巡查机制 + 低分预警
|
||||
|
||||
## 6.4 商家拓展策略
|
||||
|
||||
| 阶段 | 时间 | 策略 | 目标商家数 |
|
||||
|------|------|------|-----------|
|
||||
| **初期(种子)** | 0-3月 | 转化合伙人现有合作商家,免年费入驻,仅收佣金 | 100家 |
|
||||
| **成长期** | 3-6月 | 定向邀请医疗/康养/家政头部品牌,提供数据报告+流量扶持 | 300家 |
|
||||
| **扩张期** | 6-12月 | 开放自助入驻,区域代理拓展,商家间口碑裂变 | 1,000家 |
|
||||
| **成熟期** | 12-24月 | 品类精细化运营,优胜劣汰,品质商家认证体系 | 3,000家 |
|
||||
|
||||
**商家赋能体系:**
|
||||
|
||||
| 赋能维度 | 具体措施 |
|
||||
|----------|----------|
|
||||
| **精准获客** | 基于用户画像的智能匹配,商家广告精准投放 |
|
||||
| **数据洞察** | 提供区域银发消费趋势报告、用户偏好分析 |
|
||||
| **活动合作** | 商家赞助线下活动,获品牌曝光+体验转化 |
|
||||
| **会员联动** | 平台会员享商家专属折扣,提升商家复购率 |
|
||||
| **口碑管理** | 用户评价体系,优质商家获流量加权 |
|
||||
| **培训支持** | 适老化服务标准培训,提升银发客群服务能力 |
|
||||
|
||||
**商家分级管理:**
|
||||
|
||||
- **普通商家**:基础入驻,标准佣金
|
||||
- **认证商家**:通过资质审核+服务评分,获认证标识、搜索加权
|
||||
- **战略合作**:头部品牌深度合作,定制化运营方案、数据共享
|
||||
|
||||
## 6.5 城市扩张计划
|
||||
|
||||
采用 **"根据地→区域→全国"** 的渐进式扩张策略:
|
||||
|
||||
| 阶段 | 时间 | 覆盖城市 | 策略重点 |
|
||||
|------|------|----------|----------|
|
||||
| **第一阶段:成都深耕** | 0-12月 | 成都 | 跑通单城市模型,验证PMF,打磨运营SOP |
|
||||
| **第二阶段:西南扩张** | 12-18月 | 重庆、昆明、贵阳 | 复制成都经验,利用候鸟养老线路联动 |
|
||||
| **第三阶段:重点城市** | 18-24月 | 西安、武汉、长沙 | 以省会城市为中心,区域代理模式 |
|
||||
| **第四阶段:全国覆盖** | 24-36月 | 一线/新一线城市 | 品牌化运营,标准化输出 |
|
||||
|
||||
**城市进入标准(满足3项以上方可进入):**
|
||||
|
||||
1. 60岁以上人口占比≥18%
|
||||
2. 当地有合作伙伴或代理商资源
|
||||
3. 银发群体智能手机渗透率≥60%
|
||||
4. 医疗/康养产业基础成熟
|
||||
5. 茶馆/社区/广场等公共社交场景丰富
|
||||
|
||||
**扩张模式:**
|
||||
|
||||
- **自营模式**(成都):核心团队直接运营,建立标准体系
|
||||
- **合伙人模式**(西南城市):寻找当地银发行业合伙人,平台提供技术+品牌+运营SOP
|
||||
- **代理模式**(全国扩张):城市代理商负责本地运营,平台提供全套支持
|
||||
|
||||
---
|
||||
|
||||
# 第七部分:团队与分工
|
||||
|
||||
## 7.1 核心团队
|
||||
|
||||
| 角色 | 负责人 | 核心职责 |
|
||||
|------|--------|----------|
|
||||
| **联合创始人 / COO** | 朱源惠 | 用户运营、商家拓展、线下活动、政府关系、行业资源 |
|
||||
| **技术团队 / CTO** | 待确定 | 技术研发、AI引擎、产品设计、数据安全、技术团队管理 |
|
||||
|
||||
## 7.2 职责分工详细
|
||||
|
||||
### 朱源惠职责
|
||||
|
||||
| 板块 | 具体工作 |
|
||||
|------|----------|
|
||||
| **用户运营** | 种子用户导入、社区队长体系搭建、用户增长策略执行、用户反馈收集 |
|
||||
| **商家拓展** | 商家招募谈判、合作方案制定、商家培训、服务质量监控 |
|
||||
| **线下运营** | 线下活动策划执行、社区推广、品牌活动组织 |
|
||||
| **行业资源** | 政府关系维护(老龄委、民政局)、行业协会对接、媒体合作 |
|
||||
| **BD合作** | 医院/康养机构/保险公司等战略合作伙伴拓展 |
|
||||
|
||||
### 技术团队职责
|
||||
|
||||
| 板块 | 具体工作 |
|
||||
|------|----------|
|
||||
| **产品设计** | 产品规划与原型设计、用户体验优化、适老化交互设计 |
|
||||
| **技术研发** | 系统架构设计、核心模块开发、技术选型与质量把控 |
|
||||
| **AI引擎** | AI管家对话系统、推荐算法、语音交互、健康分析模型 |
|
||||
| **数据安全** | 隐私保护方案、数据合规体系、安全审计 |
|
||||
| **技术团队** | 研发团队招聘与管理(后期扩充3-5名工程师) |
|
||||
|
||||
## 7.3 团队扩充计划
|
||||
|
||||
| 阶段 | 新增岗位 | 人数 | 月薪预算 |
|
||||
|------|----------|------|----------|
|
||||
| MVP期(0-3月) | UI设计(兼职/外包) | 1 | 0.5-1万 |
|
||||
| 增长期(3-12月) | 运营专员、客服(兼职) | 1-2 | 1-2万 |
|
||||
| 规模化(12-24月) | 运营、城市经理 | 3-5 | 5-10万 |
|
||||
|
||||
---
|
||||
|
||||
# 第八部分:风险分析与应对
|
||||
|
||||
## 8.1 风险全景
|
||||
|
||||
| 风险类别 | 风险等级 | 影响程度 | 发生概率 |
|
||||
|----------|----------|----------|----------|
|
||||
| 市场风险 | 中 | 高 | 中 |
|
||||
| 技术风险 | 中低 | 中 | 低 |
|
||||
| 运营风险 | 中 | 高 | 中 |
|
||||
| 合规风险 | 高 | 极高 | 中 |
|
||||
| 竞争风险 | 中 | 中 | 中高 |
|
||||
|
||||
## 8.2 详细风险与应对策略
|
||||
|
||||
### 市场风险
|
||||
|
||||
| 风险点 | 描述 | 应对策略 |
|
||||
|--------|------|----------|
|
||||
| 银发群体APP接受度 | 部分老年人对新APP抵触 | 线下体验先行,子女辅助安装;极简交互+语音为主降低门槛 |
|
||||
| 付费意愿不足 | 银发群体节俭习惯 | 免费功能足够好用,付费价值明确;子女代付模式降低心理门槛 |
|
||||
| 用户流失 | 新鲜感消退后活跃度下降 | 社交活动维持粘性(Meet5验证),AI管家形成日常依赖 |
|
||||
|
||||
### 技术风险
|
||||
|
||||
| 风险点 | 描述 | 应对策略 |
|
||||
|--------|------|----------|
|
||||
| AI管家准确性 | 语音识别方言、意图理解偏差 | 分阶段上线,先覆盖高频场景;持续优化模型,建立反馈闭环 |
|
||||
| 系统稳定性 | 用户增长后系统承载 | 云原生架构弹性伸缩;压力测试常态化 |
|
||||
| 第三方依赖 | 大模型API、支付接口等 | 多供应商备选,核心能力逐步自研 |
|
||||
|
||||
### 运营风险
|
||||
|
||||
| 风险点 | 描述 | 应对策略 |
|
||||
|--------|------|----------|
|
||||
| 线下活动安全 | 老年人活动中的健康意外 | 强制购买活动险;培训急救知识;限制高强度活动;紧急联系人机制 |
|
||||
| 社区队长管理 | 队长素质参差不齐 | 严格审核准入;分级培训考核;投诉机制+淘汰制度 |
|
||||
| 商家服务质量 | 入驻商家服务差损害口碑 | 评价公示+低分预警;保证金制度;严重违规清退 |
|
||||
| 内容安全 | 虚假养生信息、诈骗内容 | AI+人工双重审核;医疗内容仅允许认证医生发布;防诈骗专区 |
|
||||
|
||||
### 合规风险(重点)
|
||||
|
||||
| 风险点 | 描述 | 应对策略 |
|
||||
|--------|------|----------|
|
||||
| **老年人数据隐私** | 银发群体隐私保护意识弱,数据泄露影响极大 | ① 严格遵循《个人信息保护法》,数据收集最小化原则;② 健康数据单独加密存储,不与商家共享原始数据;③ 设置子女监护授权机制;④ 定期第三方安全审计;⑤ 数据泄露应急预案与72小时通报机制 |
|
||||
| **医疗资质合规** | 在线问诊、健康建议涉及医疗行为监管 | ① 平台定位"信息服务"而非"医疗机构",不直接提供诊疗;② 在线问诊功能与持证互联网医院合作,确保《互联网诊疗管理办法》合规;③ AI健康建议明确标注"仅供参考,不构成医疗建议";④ 入驻医疗机构验证《医疗机构执业许可证》 |
|
||||
| **金融合规** | 理财信息展示涉及金融监管 | 仅提供信息展示,不提供金融产品销售;合作机构须持牌经营;明确风险提示 |
|
||||
| **广告合规** | 医疗/保健品广告受严格监管 | 医疗广告审核前置,符合《医疗广告管理办法》;禁止虚假宣传和夸大效果 |
|
||||
| **老年人权益保护** | 过度消费引导、会员自动续费等 | 不设自动续费;大额消费二次确认+子女通知;退款政策透明 |
|
||||
|
||||
### 竞争风险
|
||||
|
||||
| 风险点 | 描述 | 应对策略 |
|
||||
|--------|------|----------|
|
||||
| 互联网巨头入局 | 微信/支付宝推银发功能 | 差异化竞争:深度线下运营、AI管家、垂直服务是壁垒 |
|
||||
| 现有银发APP升级 | 美篇/糖豆拓展服务 | 先发优势+资源壁垒;合伙人的商户和用户资源是核心护城河 |
|
||||
| 本地生活平台渗透 | 美团/饿了么做适老化 | 专注银发垂直需求,社交属性+社区温度是大平台做不到的 |
|
||||
|
||||
---
|
||||
|
||||
# 第九部分:财务预测
|
||||
|
||||
## 9.1 三年财务预测
|
||||
|
||||
| 指标 | 第1年 | 第2年 | 第3年 |
|
||||
|------|-------|-------|-------|
|
||||
| **注册用户数** | 50,000 | 300,000 | 1,000,000 |
|
||||
| **月活用户(MAU)** | 15,000 | 120,000 | 450,000 |
|
||||
| **付费会员数** | 3,000 | 36,000 | 150,000 |
|
||||
| **入驻商家数** | 300 | 1,500 | 5,000 |
|
||||
| | | | |
|
||||
| **收入明细** | | | |
|
||||
| 会员收入(万元) | 30 | 430 | 2,100 |
|
||||
| 商家入驻费(万元) | 60 | 450 | 2,000 |
|
||||
| 交易佣金(万元) | 20 | 360 | 2,400 |
|
||||
| 广告及其他(万元) | 10 | 160 | 900 |
|
||||
| **总收入(万元)** | **120** | **1,400** | **7,400** |
|
||||
| | | | |
|
||||
| **成本明细** | | | |
|
||||
| 人力成本(万元) | 15 | 60 | 180 |
|
||||
| 服务器/云服务(万元) | 8 | 30 | 80 |
|
||||
| AI API调用费(万元) | 5 | 20 | 50 |
|
||||
| 基础运营(万元) | 12 | 60 | 150 |
|
||||
| **总成本(万元)** | **40** | **170** | **460** |
|
||||
| | | | |
|
||||
| **净利润(万元)** | **80** | **1,230** | **6,940** |
|
||||
| **净利率** | 67% | 88% | 94% |
|
||||
|
||||
> **成本说明**:用户资源和商户资源均来自合伙人已有积累,无需额外获客和BD费用;技术开发采用AI辅助(Cursor/Copilot等),1-2人即可完成核心开发,无需组建大型技术团队。因此成本结构以服务器、AI API调用和基础运营为主,整体极为轻量。
|
||||
|
||||
## 9.2 关键假设
|
||||
|
||||
| 假设项 | 数值 | 依据 |
|
||||
|--------|------|------|
|
||||
| 会员转化率 | 6%→12%→15% | 参考美篇5-8%,社交+服务转化更高 |
|
||||
| 会员ARPU | 年均120元 | 基础99+尊享299加权平均 |
|
||||
| 商家平均年费 | 3,000元 | 中小商家为主体 |
|
||||
| 平均交易佣金率 | 8% | 各品类加权 |
|
||||
| 月活/注册比 | 30%-45% | 社交活动拉动留存 |
|
||||
| 用户增长 | 自然裂变为主,CAC<30元 | 合伙人资源+社交裂变 |
|
||||
|
||||
## 9.3 资金需求
|
||||
|
||||
| 用途 | 金额(万元) | 占比 |
|
||||
|------|-------------|------|
|
||||
| 服务器/云服务(首年) | 8-10 | 20% |
|
||||
| AI API调用费 | 5-8 | 15% |
|
||||
| 基础运营费用 | 10-15 | 28% |
|
||||
| 少量兼职人员 | 8-12 | 22% |
|
||||
| 杂项与缓冲 | 5-10 | 15% |
|
||||
| **合计** | **30-50** | **100%** |
|
||||
|
||||
> 初始投入约 **30-50万元**。由于用户资源和商户资源均为合伙人已有积累(零获客成本),技术开发采用AI辅助(1-2人即可),实际所需资金仅覆盖服务器、API调用和基础运营。双方按协商比例出资。第1年即可实现盈利,第2年进入规模化盈利阶段。
|
||||
|
||||
---
|
||||
|
||||
# 第十部分:实施计划
|
||||
|
||||
## 10.1 三阶段路线图
|
||||
|
||||
### 第一阶段:MVP验证(第1-3个月)
|
||||
|
||||
| 月份 | 里程碑 | 关键交付 |
|
||||
|------|--------|----------|
|
||||
| 第1月 | 产品设计 & 技术搭建 | 产品原型确认、技术架构部署、UI设计完成 |
|
||||
| 第2月 | 核心功能开发 | 活动模块、用户系统、基础AI管家、商家后台 |
|
||||
| 第3月 | 内测上线 | 500种子用户内测、首批50家商家入驻、10名社区队长 |
|
||||
|
||||
**阶段目标**:验证"社交活动+AI管家"核心体验,收集用户反馈。
|
||||
|
||||
### 第二阶段:增长验证(第4-12个月)
|
||||
|
||||
| 月份 | 里程碑 | 关键交付 |
|
||||
|------|--------|----------|
|
||||
| 第4-5月 | 公测 & 迭代 | 应用商店上架、成都3-5个社区推广、功能迭代 |
|
||||
| 第6月 | 完整版上线 | 九大服务板块、健康管理、子女端、内容社区 |
|
||||
| 第7-9月 | 规模化获客 | 用户突破2万、商家200+、社区队长50+ |
|
||||
| 第10-12月 | 商业验证 | 会员转化率>10%、月收入>10万、用户满意度>85% |
|
||||
|
||||
**阶段目标**:成都单城模型跑通,证明商业可行性。
|
||||
|
||||
### 第三阶段:规模化扩张(第13-24个月)
|
||||
|
||||
| 月份 | 里程碑 | 关键交付 |
|
||||
|------|--------|----------|
|
||||
| 第13-15月 | 西南扩张 | 进入重庆、昆明,建立当地团队 |
|
||||
| 第16-18月 | 盈亏平衡 | 成都实现盈利,新城市完成冷启动 |
|
||||
| 第19-21月 | 产品升级 | AI管家2.0(更多Agent能力)、商家SaaS工具 |
|
||||
| 第22-24月 | 全国布局 | 覆盖8-10个城市,用户50万+,启动A轮融资 |
|
||||
|
||||
**阶段目标**:验证多城市复制能力,建立行业领先地位。
|
||||
|
||||
## 10.2 关键里程碑时间表
|
||||
|
||||
```
|
||||
2026.03 ──── 产品原型完成
|
||||
2026.04 ──── MVP内测上线(500用户)
|
||||
2026.06 ──── 公测上线 & 应用商店发布
|
||||
2026.08 ──── 用户突破10,000
|
||||
2026.10 ──── 完整版上线 & 商家200+
|
||||
2026.12 ──── 成都用户50,000 & 月收入10万+
|
||||
2027.03 ──── 进入重庆、昆明
|
||||
2027.06 ──── 成都盈亏平衡
|
||||
2027.09 ──── 覆盖5个城市 & 用户30万
|
||||
2027.12 ──── 覆盖10个城市 & 用户50万 & 启动A轮
|
||||
2028.06 ──── 用户100万 & 年收入7,000万+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 附录A:Meet5调研报告摘要
|
||||
|
||||
## A.1 Meet5概况
|
||||
|
||||
Meet5是德国领先的50+社交平台,核心模式为**线下小组活动驱动社交**,目前覆盖德国、奥地利全境,用户规模达数百万。
|
||||
|
||||
## A.2 核心模式
|
||||
|
||||
| 要素 | Meet5做法 | 「伴享」本土化 |
|
||||
|------|-----------|---------------|
|
||||
| 活动形式 | 6-12人小组线下聚会 | 5-15人,增加太极、茶艺等中国特色 |
|
||||
| 组织者 | Community Captains志愿者 | 社区队长,更强激励体系 |
|
||||
| 社交机制 | 先线下后线上 | 相同,强调"见面才是真社交" |
|
||||
| 变现模式 | 会员订阅 | 会员+服务佣金+商家入驻(更丰富) |
|
||||
| 安全机制 | 公共场所、实名 | 更强:紧急联系人+子女端+活动保险 |
|
||||
|
||||
## A.3 关键启示
|
||||
|
||||
1. **50+社交是真实且大规模的需求**——Meet5用户增长持续强劲
|
||||
2. **线下活动是最有效的社交破冰方式**——高留存、高满意度
|
||||
3. **志愿者组织者模式可规模化**——低成本高覆盖
|
||||
4. **安全和信任是银发社交的基石**——需要比年轻人社交更高的安全标准
|
||||
|
||||
> 📖 **完整调研报告**:[Meet5项目调研报告](https://darkerilclaw.com/docs/view/meet5-project-research)
|
||||
|
||||
---
|
||||
|
||||
# 附录B:AI分析与建议
|
||||
|
||||
## B.1 项目可行性评估
|
||||
|
||||
**综合可行性:🟢 高**
|
||||
|
||||
| 评估维度 | 评级 | 理由 |
|
||||
|----------|------|------|
|
||||
| 市场需求 | ⭐⭐⭐⭐⭐ | 3亿银发网民,社交+服务需求未被满足 |
|
||||
| 团队匹配 | ⭐⭐⭐⭐⭐ | 资源方+技术方完美互补 |
|
||||
| 竞争壁垒 | ⭐⭐⭐⭐ | 用户资源+商家关系+AI能力构成多重壁垒 |
|
||||
| 商业模式 | ⭐⭐⭐⭐ | 多元变现,单位经济模型健康 |
|
||||
| 技术可行性 | ⭐⭐⭐⭐⭐ | 现有AI能力完全支撑,无技术瓶颈 |
|
||||
| 政策环境 | ⭐⭐⭐⭐ | 银发经济是国家战略,政策利好 |
|
||||
| 执行风险 | ⭐⭐⭐ | 线下运营管理、多城市复制有挑战 |
|
||||
|
||||
**可行性高的核心原因:**
|
||||
|
||||
1. ✅ **需求真实**:孤独感是3亿银发群体的核心痛点,Meet5已在全球验证
|
||||
2. ✅ **资源现成**:合伙人已有数万用户+数百商家,冷启动几乎零成本
|
||||
3. ✅ **时机成熟**:银发经济国家战略+智能手机普及+AI技术成熟,三重红利叠加
|
||||
4. ✅ **团队互补**:行业资源+技术能力的组合在银发赛道极为稀缺
|
||||
5. ✅ **壁垒可建**:线下资源+社区关系+AI能力形成复合壁垒,不易被复制
|
||||
|
||||
## B.2 核心建议
|
||||
|
||||
| 序号 | 建议 | 优先级 |
|
||||
|------|------|--------|
|
||||
| 1 | **MVP聚焦社交活动+AI管家两大核心**,不要贪多,先做深再做广 | 🔴 最高 |
|
||||
| 2 | **第一个月就让500个真实用户用起来**,速度>完美 | 🔴 最高 |
|
||||
| 3 | **社区队长是增长引擎**,首批10名队长的质量决定成败 | 🔴 最高 |
|
||||
| 4 | 合规前置:数据隐私和医疗资质问题**在产品设计阶段就解决** | 🟡 高 |
|
||||
| 5 | 子女代付模式是付费转化关键,**子女端要和主APP同步上线** | 🟡 高 |
|
||||
| 6 | 建立用户反馈闭环,每周与种子用户面对面交流 | 🟡 高 |
|
||||
| 7 | 轻量化运营,控制固定成本,保持现金流健康 | 🟡 高 |
|
||||
| 8 | 盈利后再考虑融资扩张,保持股权完整性 | 🟢 中 |
|
||||
|
||||
## B.3 与Meet5对比优势
|
||||
|
||||
| 对比维度 | Meet5 | 「伴享」 | 优势方 |
|
||||
|----------|-------|---------|--------|
|
||||
| 市场规模 | 德国50+约2,500万 | 中国50+约5亿 | 🇨🇳 伴享(200x) |
|
||||
| 变现模式 | 纯会员订阅 | 会员+佣金+商家+广告 | 🇨🇳 伴享 |
|
||||
| AI能力 | 基础推荐 | AI智能管家全场景 | 🇨🇳 伴享 |
|
||||
| 服务闭环 | 仅社交活动 | 社交+九大生活服务 | 🇨🇳 伴享 |
|
||||
| 冷启动资源 | 从零开始 | 数万用户+数百商家 | 🇨🇳 伴享 |
|
||||
| 线下运营 | 纯志愿者 | 志愿者+商业激励 | 🇨🇳 伴享 |
|
||||
| 子女连接 | 无 | 子女端+关怀套餐 | 🇨🇳 伴享 |
|
||||
| 产品成熟度 | 已运营多年 | 从零开始 | 🇩🇪 Meet5 |
|
||||
| 品牌认知 | 德国领先 | 待建立 | 🇩🇪 Meet5 |
|
||||
|
||||
**结论**:「伴享」在市场规模、商业模式丰富度、AI能力和冷启动资源上远超Meet5,具备后发优势。借鉴Meet5已验证的社交模式,结合中国市场特点和现有资源,成功概率高。
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
**— 商业计划书完 —**
|
||||
|
||||
*「伴享」—— 让每一天都有伴,让每一刻都享受*
|
||||
|
||||
*联系方式:[待补充]*
|
||||
|
||||
</div>| 导入合伙人现有商家资源(医疗机构/康养中心/家政服务),提供**免费入驻**政策,快速建立初始商家池。目标:首批50家优质商家签约入驻 |
|
||||
| 中期 | 收取年度入驻费(基础版免费/高级版2000元/年)+ 交易佣金(3-8%按品类浮动),推出**商家广告位**(首页推荐位、活动赞助位、搜索优先展示),预计商家ARPU值达500元/月 |
|
||||
| 后期 | 提供**数据精准营销服务**(用户画像分析、消费趋势报告),开展品牌定制活动合作(如"XX医院健康月""XX旅行社银发专线"),打造商家生态联盟,实现平台-商家-用户三方共赢 |
|
||||
Loading…
Reference in New Issue
Block a user