# 智价云(药店版) - 产品文档 > **⚠️ MVP阶段说明** > 本项目为**全新项目,尚未上线**,当前处于 **MVP(最小可行产品)阶段**。 > **核心业务**:面向终端药店的B2B采购**聚合比价工具**,用户绑定自有B2B平台账号,智价云(药店版)并行查询同款报价。 > **产品形态**:**多端交付策略** - MVP首选Windows独立桌面应用(.exe),后续扩展微信小程序、APP、公众号等多渠道。 > **目标用户**:药店采购人员、药师,目标日活20万+。 > > 📅 版本:v1.1-MVP | 📆 更新日期:2026-07-01 | ✅ 状态:开发中 --- ## 📋 目录 - [1. 产品概述](#1-产品概述) - [2. 功能模块](#2-功能模块) - [3. 核心业务流程](#3-核心业务流程) - [4. 多端交付策略](#4-多端交付策略) - [5. 灵活配置策略](#5-灵活配置策略) - [6. 非功能性需求](#6-非功能性需求) - [7. MVP范围与规划](#7-mvp范围与规划) - [8. 业务指标](#8-业务指标) --- ## 1. 产品概述 ### 1.1 产品定位 智价云(药店版)是一款面向**终端药店**的**B2B采购聚合比价工具**,核心价值: | 价值点 | 说明 | 收益 | |--------|------|------| | 💰 降低采购成本 | 聚合查询已绑平台报价 | 平均节省10%-30% | | 🔒 安全可控 | Windows独立桌面应用,自建安全策略 | 不依赖系统浏览器 | | ⚡ 高效便捷 | 一键启动,并行查询多平台 | 提升采购效率50%+ | | 🎯 精准比价 | 基于用户自有账号查询 | 价格真实可靠 | | 👥 裂变增长 | 邀请其他药店注册获得会员时长奖励 | 快速扩大用户规模 | | 💳 会员变现 | 支持微信/支付宝购买会员套餐 | 商业闭环 | **🎯 MVP目标**:验证核心业务流程(注册→绑定账号→聚合查询→跳转购买→购买会员),快速上线获取种子药店用户,收集真实使用反馈。 ### 1.2 目标用户与角色 | 角色 | 系统角色 | 说明 | 核心需求 | |------|----------|------|----------| | 药店采购员 | USER | 负责药店日常药品采购 | 快速找到最低价格,生成采购链接 | | 执业药师 | USER | 审核药品质量和供应商资质 | 查看药品详细信息、供应商信誉 | | 药店老板 | USER | 控制采购成本,优化供应链 | 采购数据分析、成本控制报表 | | 运营人员 | ADMIN | 管理邀请配置、发放优惠券、审核执照 | 提高用户注册率和活跃度 | | 超级管理员 | SUPER_ADMIN | 系统全局管理、角色赋权 | 用户管理、数据统计、风控监控 | **三级RBAC权限模型**: - **USER**:仅可访问用户侧接口(比价、关注、搜索历史等) - **ADMIN**:可访问运营后台接口(用户管理、配置管理、审核等) - **SUPER_ADMIN**:拥有全部权限,可管理用户角色赋权 ### 1.3 关键特点 - **多端覆盖**:Windows桌面应用起步,逐步扩展移动端和社交渠道 - **自建安全策略**:Windows客户端内置WebView2,Cookie管理、Session隔离、加密存储均由应用自行管理 - **用户绑定账号**:用户输入自己在药师帮/药帮忙/1药城的账号密码(AES-256加密存储) - **聚合查询**:并行查询已绑平台,展示比价结果 - **跳转原平台**:点击"去购买"跳转到原平台完成交易,智价云(药店版)不提供交易服务 - **会员体系**:PLUS/PRO/ULTRA三档会员,权益驱动爬虫配额 - **支付闭环**:支持微信/支付宝扫码支付购买会员套餐 - **裂变增长**:邀请奖励为会员时长,邀请人获赠1个月高级会员(PRO) - **用户粘性**:通过多渠道触达,提高用户使用频次和留存率 --- ## 2. 功能模块 ### 2.1 用户认证模块 | 功能 | 说明 | |------|------| | 短信验证码登录 | 手机号 + 6位验证码,新用户自动注册 | | 密码登录 | 手机号/昵称 + 密码(BCrypt加密),支持设置/修改密码 | | 微信扫码登录 | 微信开放平台扫码,首次登录需绑定手机号 | | 修改手机号 | 已登录用户通过验证码验证后修改绑定手机号 | | Token 管理 | Access Token(24h)+ Refresh Token(7d) | | 用户信息 | 昵称、头像、手机号、会员等级、药店名称、地区信息 | | 登录来源追踪 | 记录登录设备、登录IP、登录来源(WINDOWS/MINIAPP/ANDROID/IOS/WECHAT) | ### 2.2 会员体系 系统采用**三级会员体系**,会员等级驱动爬虫配额权益: | 会员等级 | 编码 | 权重 | 每日配额 | 每月配额 | 每年配额 | 最大并发 | 过期时间 | 适用场景 | |----------|------|------|----------|----------|----------|----------|----------|----------| | 普通会员 | PLUS | 1 | 10次 | 300次 | 3650次 | 1 | 无(永久) | 注册即得,限时免费 | | 高级会员 | PRO | 2 | 999次 | 29970次 | 364635次 | 5 | 有(购买/赠送) | 付费会员,核心变现 | | 超级会员 | ULTRA | 3 | 999次 | 29970次 | 364635次 | 10 | 有(运营发放) | 连锁专用,待开放购买 | **获取方式**: | 等级 | 获取方式 | |------|---------| | PLUS | 用户注册即自动获得,不限时长,永久免费 | | PRO | ① 付费购买(月卡30天/年卡365天)② 邀请奖励(1个月)③ 营业执照审核通过(1个月)④ 运营手动发放 | | ULTRA | 运营手动发放(购买入口待开放) | **互斥与叠加规则**: - 普通会员、高级会员、超级会员**不可同时生效**,同一时间只有一个活跃等级 - 高等级权限优先级更高:`ULTRA > PRO > PLUS` - **同等级续期**:在原到期时间基础上叠加天数(购买月卡+邀请奖励 → 60天) - **升级**:低等级→高等级时停用旧会员,创建新记录(PLUS→PRO 或 PRO→ULTRA) - **不降级保护**:已是高等级时,赠送的低等级奖励自动转为续期高等级(ULTRA用户获得邀请奖励 → 续期ULTRA 30天,不降为PRO) **到期与降级**: - 高级会员到期后,账号自动降级为普通会员(PLUS),不再享有不限量配额 - 定时任务每5分钟扫描过期会员记录,自动执行降级 - `t_user` 表与 `t_user_membership` 表通过 `membership_expire_at` 字段实时同步 **会员数据存储**: | 表 | 关键字段 | 说明 | |----|---------|------| | `t_user` | `membership_level`, `membership_expire_at` | 用户当前等级与过期时间(冗余,实时同步) | | `t_user_membership` | `level`, `effective_from`, `effective_to`, `status`, `source` | 会员记录权威来源 | **会员来源(source)**: | 来源 | 说明 | |------|------| | `RECHARGE` | 用户付费购买 | | `INVITE` | 邀请奖励赠送 | | `LICENSE` | 营业执照审核通过赠送 | | `ADMIN_GRANT` | 运营手动发放 | | `SYSTEM` | 系统默认(普通会员PLUS) | **付费套餐(当前开放)**: | 方案编码 | 方案名称 | 会员等级 | 价格 | 原价 | 有效天数 | |----------|----------|----------|------|------|----------| | MONTHLY_PRO | 高级会员·月卡 | PRO | ¥29.90 | ¥59.90 | 30天 | | YEARLY_PRO | 高级会员·年卡 | PRO | ¥299.90 | ¥599.90 | 365天 | | ULTRA | 超级会员·连锁专享 | ULTRA | - | - | 敬请期待 | > **说明**:普通会员(PLUS)免费开放,无付费套餐。高级会员(PRO)提供月卡和年卡两种套餐。超级会员(ULTRA)暂未开放购买。 **用户侧接口**: | 接口 | 说明 | |------|------| | GET /api/membership/my | 查询我的会员信息(等级、到期时间、来源等) | | GET /api/membership/benefits?level=PLUS | 查询指定等级的权益配置详情 | | GET /api/level/list | 获取所有会员等级列表(公开,含定价方案) | | GET /api/level/{id} | 获取等级详情(公开) | | GET /api/level/my | 获取当前用户等级信息(含配额、到期时间、套餐) | ### 2.3 爬虫配额体系 用户总配额 = **会员权益配额** + **额外配额** 额外配额来源: | 来源 | 类型标识 | 过期策略 | 说明 | |------|----------|----------|------| | 邀请奖励 | INVITE | 永不过期 | 运营配置的额外爬虫次数(当前默认0,仅送会员不送配额) | | 购买会员 | PURCHASE | 可配置 | 购买/升级会员时发放 | | 运营发放 | ADMIN | 可配置 | 运营手动为指定用户发放 | **配额周期**:日配额(每日重置)+ 月配额(每月重置)+ 年配额(每年重置) **消耗优先级**:优惠券 > 额外配额(快过期优先)> 会员权益配额 **过期控制**:每笔发放独立设置 `expire_time`,定时任务每小时扫描标记过期记录。 **用户侧接口**: | 接口 | 说明 | |------|------| | GET /api/crawler/status | 获取爬虫配额状态(今日/本月/本年 已用、剩余、来源明细) | | POST /api/crawler/consume | 消耗爬虫次数(前端启动爬虫前调用) | | GET /api/crawler/logs?days=7 | 获取爬虫使用记录(最近N天) | | GET /api/invite/extra-quota | 查询我的可用额外配额总数(邀请奖励 + 运营发放) | ### 2.4 药品比价核心功能 #### 业务流程 ``` 输入药品名称 → 选择比价平台(药师帮/药帮忙/1药城) → 并行查询已绑平台账号 → 展示比价结果(按价格从低到高排序) → 点击"去XX平台购买"跳转到原平台完成交易 ``` #### 药品搜索接口 | 接口 | 说明 | |------|------| | POST /api/search/query | 药品搜索比价,消耗1次爬虫配额,返回各平台报价 | | GET /api/search/suggestions | 获取热门药品搜索建议(公开,无需登录) | #### 支持的医药平台(MVP首期3个核心平台) **B2B批发平台(3个 - MVP启用):** - ✅ 药师帮 - 国内领先医药B2B平台 - ✅ 药帮忙 - 医药B2B采购平台 - ✅ 1药城 - B2B医药批发平台 **后续扩展平台(通过运营配置动态启用):** - Phase 2:药京采、健之佳、1药网等7个B2B平台 - Phase 3:珍诚医药、药易通等6个区域B2B平台 - Phase 4-6:B2C零售、电商医药频道、垂直医疗平台等24个 **说明**:代码支持34个平台,但MVP首期仅启用3个核心平台,后续通过运营配置逐步开放。 #### 平台账号绑定 | 接口 | 说明 | |------|------| | POST /api/platform-account/bind | 绑定B2B平台账号(AES-256加密存储) | | DELETE /api/platform-account/unbind/{platformCode} | 解绑平台账号 | | GET /api/platform-account/list | 查询已绑定的平台账号列表 | | POST /api/platform-account/verify/{platformCode} | 验证平台账号有效性 | #### 平台配置查询 | 接口 | 说明 | |------|------| | GET /api/platform-config/enabled | 查询所有启用的平台列表(公开) | | GET /api/platform-config/{platformCode} | 查询指定平台配置(公开) | #### 比价结果展示 | 字段 | 说明 | |------|------| | 平台名称 | 药师帮、药帮忙、1药城(带彩色Badge) | | 供应商 | 药品批发公司名称 | | 规格 | 药品规格(如:0.25g×24片) | | 价格 | 单价(元),最低价红色标注 | | 最小起订量 | 最少购买数量 | | 库存状态 | 有货/缺货 | | 效期 | 药品有效期,近效期橙色标注 | | 操作 | 「去XX平台购买」按钮 → WebView跳转原平台 | ### 2.5 邀请裂变系统 #### 用户侧流程 ``` 药店A获取邀请链接 → 分享给其他药店B → B打开落地页(显示A的药店名称和奖励说明) → B下载客户端并注册(自动填入邀请码) → A获得奖励:1个月高级会员(PRO) + 可选额外爬虫配额 → B注册即得普通会员(PLUS),永久免费 ``` #### 奖励机制 | 角色 | 奖励内容 | 说明 | |------|----------|------| | 邀请人 | 1个月高级会员(PRO) + 可选额外爬虫配额 | 每成功邀请1家药店注册即发放,奖励立即到账 | | 被邀请人 | 普通会员(PLUS) | 注册即获得,不限时长,永久免费 | **邀请奖励规则**: - 老用户邀请新用户,完成注册后邀请人立即获得1个月高级会员时长 - 奖励会员等级固定为PRO(高级会员),与邀请人当前等级无关 - **不降级保护**:若邀请人已是ULTRA,自动续期ULTRA 30天,不降为PRO - 额外爬虫配额由运营后台配置(`rewardCrawlerCount`),默认0=不额外发放 - 单个账号获得会员时长奖励上限30人(超限可继续邀请但不再发放奖励) - **被邀请人限制**:注册30天内可输入邀请码,每人仅能填写一次,二次无效 - **补填邀请码**:注册时未填,30天内可在个人中心补填,邀请人同样获得奖励 #### 支持渠道 | 渠道 | channel | 打开方式 | 说明 | |------|---------|----------|------| | Windows App | windows | download | 直接下载客户端(默认渠道) | | 微信公众号 | wechat | redirect | 跳转公众号/H5 | | 小程序 | miniapp | miniapp | 打开小程序 | | 钉钉 | dingtalk | deeplink | 应用内深度链接 | | 飞书 | feishu | deeplink | 应用内深度链接 | #### 邀请码安全生成与智能解析 - 邀请码采用安全随机生成算法,支持链接和码双模式呈现 - 落地页支持URL Scheme(`zhijiayun://invite?code=XXX`)和DeepLink自动填入邀请码 - 支持链接/邀请码双模式智能解析与注册自动绑定 - 落地页标题支持 `{inviter}` 和 `{pharmacy}` 动态占位符替换 #### 分享文案示例 ``` 我是用户6917,在这里发现了一个药店采购神器——智价云(药店版)!它聚合比价功能特别方便,能快速查到最低价,帮你节省采购成本。下载链接https://priceapi.kailin.com.cn/api/invite/2XKADABS填我的邀请码 2XKADABS 完成注册,你也会获得会员权益! ``` #### 邀请统计 - 摘要文本:`已邀请5家药店,3家注册,累计获得3个月会员` - 每条记录显示:被邀请药店名称、注册状态(已注册/待注册)、奖励次数 - 统计数据:总邀请数、已注册数、累计奖励、链接点击次数、今日邀请数/剩余次数 #### 用户侧接口 | 接口 | 说明 | |------|------| | GET /api/invite/code | 获取我的邀请码和邀请链接(含分享文案) | | GET /api/invite/stats | 获取邀请统计(邀请人数、注册人数、累计奖励) | | GET /api/invite/rewards | 获取邀请记录列表(含注册状态) | | GET /api/invite/extra-quota | 获取可用额外爬虫次数 | | GET /api/invite/my-inviter | 查询我的邀请人 | | POST /api/invite/bind | 补填邀请码 | | GET /api/invite/page/{code}?channel=windows | 邀请落地页数据(公开,无需登录) | | GET /invite/{code}?channel=wechat | 邀请链接直接访问入口(公开,自动计入点击数) | | POST /api/invite/click/{code} | 追踪邀请链接被打开(公开) | | GET /api/invite/resolve-link?link=xxx | 智能解析邀请链接或邀请码(公开,适用于粘贴文本场景) | ### 2.6 营业执照上传(可选) **设计原则**: - ✅ 用户可以自愿上传营业执照 - ✅ 不上传不影响基本使用(注册、查询、购买) - ✅ 上传后运营审核,通过后显示"已认证"标识 - ✅ 认证标识增强用户信任度 **审核流程**: ``` 用户上传营业执照 → 提交审核申请 → 运营后台查看待审队列 → 运营审核(通过/驳回)→ 通过后显示"已认证"标识 ``` **营业执照信息**:药店名称、统一社会信用代码、法人姓名、注册地址、经营范围、有效期等。 **审核通过奖励**:首次营业执照审核通过,自动赠送30天高级会员(PRO),来源标记为 `LICENSE`。 **用户侧接口**: | 接口 | 说明 | |------|------| | POST /api/business-license/upload | 上传营业执照(JSON方式,传图片URL) | | POST /api/business-license/upload-file | 上传营业执照(文件方式,multipart) | | GET /api/business-license/info | 查询我的营业执照信息及审核状态 | ### 2.7 优惠券系统 | 功能 | 说明 | |------|------| | 发放 | 运营指定已有优惠券,批量发放给指定用户 | | 使用 | 爬虫消耗时优先使用优惠券 | | 类型 | CRAWLER(爬虫次数券) | **用户侧接口**: | 接口 | 说明 | |------|------| | GET /api/coupon/my?status=0 | 获取我的优惠券列表(可按状态筛选) | | GET /api/coupon/my/available?type=CRAWLER | 获取我当前可用的优惠券列表 | ### 2.8 文件上传 | 接口 | 说明 | |------|------| | POST /api/upload | 上传单个文件(multipart/form-data),返回文件访问路径 | **说明**:支持营业执照图片、用户头像等文件上传,文件存储在服务器 `/opt/uploads` 目录。 ### 2.9 支付与会员购买系统 | 功能 | 接口 | 说明 | |------|------|------| | 支付方案列表 | GET /api/payment/plans | 获取可用会员套餐(公开) | | 创建支付订单 | POST /api/payment/order/create | 选择套餐+支付渠道创建订单 | | 查询订单 | GET /api/payment/order/{orderNo} | 查询单个订单状态 | | 我的订单 | GET /api/payment/orders | 查询用户所有订单 | | 模拟支付 | POST /api/payment/order/{orderNo}/pay | 开发测试用模拟支付(当前仅支持此模式) | | 切换渠道 | POST /api/payment/order/{orderNo}/switch-channel | 切换支付渠道并重新生成二维码 | | 微信回调 | POST /api/payment/callback/wechat | 微信支付异步通知(公开,当前仅模拟模式) | | 支付宝回调 | POST /api/payment/callback/alipay | 支付宝异步通知(公开,当前仅模拟模式) | **支付渠道**:微信支付(Native扫码)、支付宝(当面付/扫码) **重复支付自动退款**:用户切换支付渠道后,多个渠道都可能支付成功。系统以第一次支付成功为准激活会员,后续重复支付自动记录到 `t_payment_order_extra_payment` 表,并原路退款(微信退款API v3 / 支付宝退款接口)。退款状态记录为 PENDING → SUCCESS/FAILED,支持退款失败原因追踪。 > **⚠️ 当前状态**:生产环境微信/支付宝回调接口为占位实现(含TODO),当前仅模拟支付模式可用。上线前需接入微信支付SDK和支付宝SDK完成验签与解密。 **支付方案(当前开放)**: | 方案编码 | 方案名称 | 会员等级 | 价格 | 原价 | 有效天数 | |----------|----------|----------|------|------|----------| | MONTHLY_PRO | 高级会员·月卡 | PRO | ¥29.90 | ¥59.90 | 30天 | | YEARLY_PRO | 高级会员·年卡 | PRO | ¥299.90 | ¥599.90 | 365天 | | ULTRA | 超级会员·连锁专享 | ULTRA | - | - | 敬请期待 | > **说明**:普通会员(PLUS)免费开放,注册即得,不提供付费套餐。月卡自付款日起算30天,年卡自付款日起算365天。 **运营管理**: | 接口 | 说明 | |------|------| | POST /api/admin/payment/plans | 创建支付方案 | | PUT /api/admin/payment/plans/{id} | 更新支付方案 | | PUT /api/admin/payment/plans/{id}/status | 上架/下架方案 | ### 2.10 平台会话管理 | 接口 | 说明 | |------|------| | PUT /api/platform-session/{platformCode} | 更新平台会话 | | GET /api/platform-session/list | 查询平台会话列表 | | DELETE /api/platform-session/{platformCode} | 删除平台会话 | ### 2.11 搜索历史与关注列表 #### 搜索历史 | 接口 | 说明 | |------|------| | GET /api/search-record/history | 获取用户搜索历史 | | DELETE /api/search-record/history/{id} | 删除指定搜索记录 | | DELETE /api/search-record/history | 清空搜索历史 | #### 关注/收藏列表 | 接口 | 说明 | |------|------| | GET /api/watchlist | 获取关注列表 | | POST /api/watchlist | 添加关注药品 | | DELETE /api/watchlist/{id} | 取消关注 | | GET /api/watchlist/stats | 获取关注统计 | **关注信息**:药品名称、规格、厂家、关注时最低价、最低价平台、上次查询价格、价格变动、最后检查时间。 ### 2.12 运营管理后台 | 功能 | 接口 | |------|------| | 邀请配置管理 | GET/PUT /api/admin/invite/config | | 邀请配置列表 | GET /api/admin/invite/configs | | 手动发放爬虫次数 | POST /api/admin/crawler/grant | | 查看发放记录 | GET /api/admin/crawler/grants | | 查看邀请记录 | GET /api/admin/invite/rewards | | 用户等级调整 | PUT /api/level/user/{userId} | | 会员发放/调整 | POST /api/admin/membership/grant | | 会员记录查询 | GET /api/admin/memberships | | 优惠券发放 | POST /api/coupon/issue | | 支付方案管理 | POST/PUT /api/admin/payment/plans | | 平台分布统计 | GET /api/admin/crawler/user-detail | | 营业执照审核 | GET/POST /api/admin/license/review | | 用户列表管理 | GET /api/admin/users | | 用户角色修改 | PUT /api/admin/users/{userId}/role(仅SUPER_ADMIN) | | 体验配额配置 | GET/POST/PUT/DELETE /api/admin/trial-quota/*(详见下方) | | 操作审计日志 | GET /api/admin/audit-log/*(详见下方) | | 邀请转化统计 | GET /api/admin/invite/conversion-stats?userId=1 | ### 2.13 操作审计日志系统 系统对所有关键操作进行审计记录,支持追溯: - **记录维度**:操作人、操作时间、IP地址、设备信息、操作模块、操作类型、目标对象、操作前后数据快照、耗时 - **敏感操作标记**:禁用用户、审核操作、配置变更等标记为敏感操作 - **操作模块覆盖**:用户管理、平台配置、账号绑定、营业执照、邀请系统、优惠券、体验配额、爬虫配额、系统管理 **运营侧接口**: | 接口 | 说明 | |------|------| | GET /api/admin/audit-log | 分页查询审计日志(支持按模块、操作类型、操作人、时间范围、是否敏感筛选) | | GET /api/admin/audit-log/sensitive | 查询敏感操作日志 | | GET /api/admin/audit-log/user/{userId} | 查询指定用户的操作历史 | | GET /api/admin/audit-log/target/{type}/{id} | 查询指定目标对象的操作历史 | | GET /api/admin/audit-log/stats | 按模块统计操作次数 | **体验配额配置接口**: | 接口 | 说明 | |------|------| | GET /api/admin/trial-quota/configs | 查询所有体验配额配置 | | POST /api/admin/trial-quota/config | 创建体验配额配置 | | PUT /api/admin/trial-quota/config/{id} | 更新体验配额配置 | | DELETE /api/admin/trial-quota/config/{id} | 删除体验配额配置 | | GET /api/trial-quota/active | 用户端查询当前生效的体验配额配置 | --- ## 3. 核心业务流程 ### 3.1 用户注册登录流程 ``` 药店采购员打开App → 选择登录方式 ├── 短信登录:输入手机号 → 获取验证码 → 输入验证码 → 登录/注册 │ └── 如有邀请码,自动建立邀请关系并发放会员奖励 ├── 密码登录:输入手机号/昵称 + 密码 → 验证通过 → 登录 └── 微信登录:扫码 → 授权 → 绑定手机号 → 登录 ``` ### 3.2 药品比价流程 ``` 输入药品名称(如:阿莫西林) → 选择比价平台(可多选:药师帮、药帮忙、1药城) → 点击"开始比价" → 系统逐个平台爬取价格(消耗配额) → 展示比价结果表格(按价格从低到高排序) → 点击"去采购"跳转到对应平台购买页面 → 可关注药品,持续追踪价格变动 ``` ### 3.3 爬虫消耗流程 ``` 用户发起比价请求 → 校验日/月/年配额(会员权益 + 额外配额) → 配额充足 → 扣减额外配额(快过期优先)→ 记录日志(含平台信息) → 配额不足 → 尝试使用优惠券补充 → 仍不足则拒绝 ``` ### 3.4 邀请裂变流程 ``` 药店A获取邀请链接 → 复制链接分享到微信群/朋友圈 → 药店B浏览器打开 → 展示落地页(A的药店名称 + 奖励说明 + 下载链接) → B下载注册 → 携带邀请码 → 建立邀请关系 → 发放奖励 ├── 邀请人A:获赠1个月高级会员(PRO) + 可选额外爬虫配额(立即到账) └── 被邀请人B:注册即得普通会员(PLUS),永久免费 → A查看统计:"已邀请X家药店,Y家注册,累计获得Y个月高级会员" → A同时可在邀请页查看邀请贡献的爬虫配额明细 ``` ### 3.5 会员购买流程 ``` 用户查看会员套餐 → 选择方案(月卡/年卡) → 选择支付渠道(微信/支付宝)→ 创建订单 → 生成二维码 → 用户扫码支付 → 第三方回调通知 → 订单状态更新为已支付 → 自动激活高级会员(PRO) → t_user 会员等级与过期时间实时同步 → 配额立即生效 → 同等级续期叠加天数,低等级升级切换 ``` ### 3.6 重复支付与自动退款流程 ``` 用户创建订单(渠道A)→ 切换渠道为B → 生成渠道B二维码 → 渠道A先支付成功 → 订单标记为PAID,激活会员 → 渠道B也支付成功 → 回调到达,发现订单已PAID → 记录重复支付到 t_payment_order_extra_payment(幂等:同交易号不重复记录) → 自动发起原路退款(渠道B原路退回) → 退款状态更新:PENDING → SUCCESS/FAILED ``` **退款渠道**: - 微信:调用 WxPayService.refundV3()(API v3 退款接口) - 支付宝:调用 AlipayClient.execute(AlipayTradeRefundRequest)(统一收单交易退款) - 模拟模式:直接返回模拟退款单号,不调用真实SDK --- ## 4. 多端交付策略 ### 4.1 核心策略:"Windows优先,多渠道扩展" 智价云(药店版)采用**渐进式多端交付策略**: 1. **MVP阶段**:聚焦Windows桌面应用,验证核心业务流程 2. **Phase 2**:扩展移动端(小程序 + Android APP),提高用户便利性 3. **Phase 3**:完善社交渠道(公众号 + iOS APP),增强用户粘性 4. **Phase 4+**:企业集成(钉钉/飞书)+ 生态建设,构建行业壁垒 **目标**:通过多渠道触达,实现日活20万+的目标。 ### 4.2 各端详细规划 #### Windows桌面应用(MVP核心 - P0) - **角色**:专业采购工具,功能最完整 - **场景**:药店办公室日常采购、深度比价、批量查询 - **用户占比目标**:60% - **技术特点**:WebView2浏览器引擎、自建安全策略、离线缓存 #### 微信小程序(Phase 2 - P1) - **角色**:轻量级查询工具,快速比价 - **场景**:外出采购、临时查询、分享比价结果 - **用户占比目标**:25% - **核心功能**:快速查询、关注列表、分享结果、扫码查询 #### Android APP(Phase 2 - P1) - **角色**:移动端完整功能 - **场景**:移动办公、仓库盘点、现场比价 - **用户占比目标**:8% - **核心功能**:完整比价、扫码查询、拍照识别、Push通知 #### 微信公众号(Phase 3 - P2) - **角色**:消息推送和服务入口 - **场景**:降价提醒、审核结果通知、活动推送 - **用户占比目标**:5% - **核心功能**:模板消息推送、菜单入口、H5页面嵌入 #### iOS APP(Phase 3 - P2) - **角色**:覆盖iOS用户群体 - **用户占比目标**:2% #### 钉钉/飞书集成(Phase 4 - P3) - **角色**:企业内部协同工具 - **场景**:连锁药店内部采购协同、审批流程 - **用户占比目标**:< 1% ### 4.3 数据同步机制 所有端共享同一套账号体系,云端同步数据: | 数据类型 | 同步方式 | 更新频率 | |---------|---------|---------| | 用户基本信息 | REST API | 实时 | | 会员权益 | REST API | 实时 | | 查询历史 | REST API + 本地缓存 | 实时上传,按需下载 | | 关注列表 | REST API | 实时 | | 平台账号绑定 | REST API(加密传输) | 实时 | | 邀请关系 | REST API | 实时 | --- ## 5. 灵活配置策略 ### 5.1 核心设计理念 智价云(药店版)采用**"代码预留扩展 + 运营动态配置"**的设计策略: 1. **平台扩展性**:代码支持34个平台,MVP首期启用3个,后续通过运营配置逐步开放 2. **营业执照可选**:用户可以自愿上传,非强制要求,审核后显示认证标识 3. **体验配额可配**:运营可以动态调整体验天数、查询次数等参数 4. **会员体系灵活**:会员权益配置表支持运营动态调整各等级配额加成 5. **支付方案可配**:运营可创建/上架/下架会员套餐方案 ### 5.2 平台配置策略 #### MVP首期(Phase 0)- 3个核心平台 | 平台 | 代码 | Badge颜色 | 状态 | |------|------|----------|------| | 药师帮 | yaoshibang | #FF6B00 | ✅ 已启用 | | 药帮忙 | yaobangmang | #1890FF | ✅ 已启用 | | 1药城 | yiyaocheng | #52C41A | ✅ 已启用 | #### 后续扩展计划 - **Phase 2**:7个扩展B2B平台(药京采、健之佳、1药网等) - **Phase 3**:6个区域B2B平台(珍诚医药、药易通等) - **Phase 4**:8个B2C零售平台(叮当快药、老百姓大药房等) - **Phase 5**:7个综合电商医药频道(京东健康、天猫医药等) - **Phase 6**:4个垂直医药平台(微医、平安好医生等) ### 5.3 体验配额配置策略 运营可以动态调整以下参数: | 参数 | 默认值 | 说明 | |------|--------|------| | 体验天数 | 15天 | 新用户免费体验时长 | | 每日查询次数 | 20次 | 体验期每日可查询次数 | | 每月关注品种数 | 199种 | 体验期每月可关注品种数 | **配置类型**: - **默认配置**:适用于所有新注册用户(通过运营后台 CRUD 管理) ### 5.4 会员权益配置 **会员权益配置表**支持运营动态调整各等级权益加成: | 权益类型 | 说明 | |----------|------| | DAILY_QUOTA | 每日爬虫配额加成 | | MONTHLY_QUOTA | 每月爬虫配额加成 | | YEARLY_QUOTA | 每年爬虫配额加成 | | MAX_CONCURRENT | 最大并发数加成 | 运营可通过数据库管理界面调整各会员等级的权益数值,修改后立即生效。 --- ## 6. 非功能性需求 | 维度 | MVP要求 | 生产环境目标 | |------|---------|-------------| | 性能 | 接口响应 < 500ms(P95),单次比价 < 3s | 接口响应 < 200ms(P95),单次比价 < 1s | | 安全 | JWT 认证、三级RBAC、参数校验、AES-256加密 | 增加接口限流、SQL注入防护、慢请求告警 | | 可用性 | 单体部署,HikariCP 连接池,Redis缓存 | 集群部署、负载均衡 | | 扩展性 | Maven 多模块架构 | 微服务拆分、事件驱动架构 | | 兼容性 | JDK 17+,MySQL 8.0+,Windows 10/11 | 容器化部署、云原生支持 | | 数据准确性 | 价格误差 < 5% | 价格误差 < 1%,实时同步 | | 目标日活 | 1万+ | 20万+ | --- ## 7. MVP范围与规划 ### 7.1 MVP 已实现功能 ✅ **核心功能**: - [x] **Windows独立桌面应用**(.exe格式,内置WebView2浏览器引擎) - [x] 用户认证(短信验证码登录、密码登录、微信扫码登录) - [x] 密码管理(设置/修改密码、修改手机号) - [x] 营业执照上传(可选,审核后显示认证标识) - [x] B2B平台账号绑定(药师帮/药帮忙/1药城,密码AES-256加密存储) - [x] 药品搜索比价功能(消耗配额查询,返回各平台报价) - [x] 跳转原平台购买(WebView内嵌跳转,不依赖系统浏览器) - [x] 搜索历史记录管理 - [x] 药品关注/收藏列表(价格变动追踪) - [x] 会员体系(PLUS/PRO/ULTRA三档,权益驱动配额) - [x] 爬虫配额管理(日/月/年三周期 + 额外配额 + 优惠券) - [x] 邀请裂变系统(多渠道落地页、URL Scheme自动填入邀请码、会员时长奖励) - [x] 支付系统(模拟支付、支付方案管理、渠道切换、重复支付自动退款、签约协议、安心付;微信/支付宝回调为占位实现,待接入SDK) - [x] 体验配额管理(运营可配置天数、查询次数、关注品种数) - [x] 优惠券系统(批量发放、配额消耗优先使用) - [x] 运营管理后台(配置管理、执照审核、数据统计、会员管理、支付方案管理) - [x] 用户管理(三级RBAC角色模型、用户列表、角色赋权) - [x] 平台配置管理(34个平台预留,MVP启用3个,运营动态配置) - [x] 操作审计日志系统(记录所有关键操作,支持追溯) - [x] 网关层请求日志与限流(基于Redis的IP+路径限流) **多端扩展准备**: - [x] 统一账号体系设计(支持多端登录) - [x] API接口标准化(RESTful,便于多端调用) - [x] 数据同步机制设计(查询历史、关注列表云端同步) - [ ] 微信小程序开发(Phase 2) - [ ] Android APP开发(Phase 2) - [ ] 微信公众号接入(Phase 3) - [ ] iOS APP开发(Phase 3) ### 7.2 后续迭代规划 🚀 #### Phase 2:性能优化与多端扩展(上线后1-3个月) **技术优化**: - [ ] 数据库读写分离 - [ ] SQL慢查询优化与索引调优 - [ ] 接口限流细化(按用户维度限流) - [ ] 慢请求监控与告警 **多端扩展**: - [ ] **微信小程序开发**(轻量级查询工具) - [ ] **Android APP开发**(移动端完整功能) - [ ] 数据同步服务(查询历史、关注列表云端同步) - [ ] 统一消息推送服务 #### Phase 3:功能增强与渠道完善(上线后3-6个月) **功能增强**: - [ ] 国家集采数据爬取(增强权威性) - [ ] 价格趋势图表(近30天价格走势) - [ ] 供应商评分系统 - [ ] 邀请排行榜与阶梯奖励 - [ ] 海报生成与分享 **渠道完善**: - [ ] **微信公众号接入**(服务号消息推送) - [ ] **iOS APP开发**(覆盖iOS用户) - [ ] 小程序/APP扫码查询功能 - [ ] 拍照识别药品功能 #### Phase 4:智能推荐与企业集成(上线后6-9个月) **智能功能**: - [ ] AI价格预测(基于历史数据预测价格波动) - [ ] 智能供应商推荐(综合价格、信誉、配送速度) - [ ] 采购清单优化(批量采购最优组合) - [ ] 个性化推荐(根据药店历史采购习惯) **企业集成**: - [ ] **钉钉工作台集成**(企业内部协同) - [ ] **飞书工作台集成**(企业内部协同) - [ ] 企业账号管理(多员工统一管理) - [ ] 采购审批流程 #### Phase 5:架构升级与生态建设(上线后9-12个月) **架构升级**: - [ ] 微服务拆分(用户服务、配额服务、邀请服务、爬虫服务独立部署) - [ ] 消息队列(异步处理爬虫任务和邀请奖励发放) - [ ] 容器化部署(Docker + K8s) - [ ] CI/CD自动化流水线 - [ ] 多地域部署(降低延迟) **生态建设**: - [ ] 开放API平台(第三方开发者接入) - [ ] 插件市场(自定义功能扩展) - [ ] 数据 marketplace(脱敏数据交易) - [ ] 行业解决方案(连锁药店、单体药店差异化方案) --- ## 8. 业务指标 ### 8.1 MVP阶段目标(上线后3个月) | 指标 | 目标值 | 说明 | |------|--------|------| | 注册用户数 | 1万+ | 药店采购人员 | | 日活跃用户(DAU) | 1000+ | 日均使用比价的药店数 | | 日均比价次数 | 5000+ | 所有用户的比价操作总和 | | 邀请转化率 | 15%+ | 被邀请人注册比例 | | 用户留存率(7日) | 40%+ | 注册后7天内再次使用 | | 付费转化率 | 5%+ | 购买会员套餐的比例 | ### 8.2 长期目标(1年内) | 指标 | 目标值 | 说明 | |------|--------|------| | 注册用户数 | 50万+ | 覆盖全国主要药店 | | 日活跃用户(DAU) | 20万+ | **核心目标** | | 日均比价次数 | 100万+ | 高频使用场景 | | 付费转化率 | 10%+ | 升级为PRO/ULTRA的比例 | | 平均采购成本降低 | 15%+ | 相比单平台采购 | --- **📝 说明**:本文档会随着项目迭代持续更新,请以最新版本为准。