docs(spec): switch payment integration from Stripe to Alipay/WeChat Pay direct

Target market is domestic China users only — integrate Alipay Face-to-Face
Payment and WeChat Native Pay directly instead of Stripe as intermediary.
Updated billing module structure, risk table, and verification criteria.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
iven
2026-04-01 23:21:22 +08:00
parent a851a2854f
commit 62df7feac1

View File

@@ -0,0 +1,486 @@
# ZCLAW 下一阶段战略设计:双轨增长计划
> **日期**: 2026-04-01
> **状态**: Review (Addressing feedback)
> **范围**: 90 天双轨推进(产品力 + 商业化)
---
## 先决条件
本 90 天计划的 Day 1 以下列 pre-launch 门槛为前提:
- [ ] `docker compose up` 完整启动成功
- [ ] Admin V2 > 10 个测试通过
- [ ] Desktop > 5 个 store 测试通过
- [ ] Scheduler 是真实实现(非 stub
- [ ] 零个 TypeScript/Rust 编译错误
- [ ] 反向代理 + 限流修复到位
**当前状态**:大部分已完成(参见 pre-launch dual-track design 2026-03-31。若有个别未完成项纳入 Day 1 的首批修复工作。
---
## 资源假设
- **开发模式**AI 辅助开发Claude Code + Claude Agent SDK人力非瓶颈
- **并行能力**Track A 和 Track B 可完全并行推进
- **工程量估算**:见每阶段后附的预估时间
- **依赖关系**Track B 的 B3上线验证条件性依赖 Track A 的 A1Hand 验证)完成
---
## Context
ZCLAW 技术基础设施已建成 ~90%11 个 Rust crate + Tauri 桌面端 + SaaS 后端),但商业变现路径从 0→1 尚未打通。当前系统拥有 9 个已启用 Hands另有 2 个已禁用、75 个 SKILL.md 技能定义、Pipeline DSL、完整的安全体系和 SaaS 后端——但这些能力尚未串联成一个让用户愿意付费的产品体验。
**核心问题**:技术基建完善,但用户无法在首次使用中体验到 ZCLAW 的核心价值AI 真正干活),且缺乏从免费到付费的转化路径。
---
## 1. 战略定位
### 1.1 产品定义
**ZCLAW = 面向中文知识工作者的 AI Agent OS**
不是"又一个 ChatGPT 套壳",而是"AI 真正帮你干活的操作系统"。
### 1.2 目标用户
**三大目标群体**(按优先级排序):
**群体一:教育行业**(老师、教培机构)
- 场景Quiz 生成、课件制作Slideshow、学生答疑、教案研究
- 痛点:重复性备课工作量大,个性化教学内容制作耗时
- 付费驱动力:提效降本,提升教学质量差异化
- 适配功能Quiz Hand + Slideshow Hand + Researcher Hand + Pipeline 模板(教研→课件→测验)
**群体二:医疗行业**(行政管理工作为主)
- 场景:政策文件解读、会议纪要整理、数据报告生成、制度合规检查
- 痛点:行政文书工作繁重,政策更新频繁需快速跟进
- 付费驱动力:合规效率、减少人工错误、提升行政响应速度
- 适配功能Collector Hand + Researcher Hand + 记忆系统 + Pipeline 模板(政策→摘要→报告)
**群体三:设计行业**(汕头特色产业:制衣、玩具的设计相关工作)
- 场景:竞品调研、趋势分析、设计素材收集、客户沟通辅助
- 痛点:信息分散,趋势追踪耗时,设计素材管理混乱
- 付费驱动力:加快设计决策,集中管理灵感来源,提升客户沟通效率
- 适配功能Browser Hand + Collector Hand + Researcher Hand + Pipeline 模板(趋势→素材→方案)
**共同特征**
- 对价格敏感但愿意为效率工具付费
- 发现工具的路径:同行推荐 > 社群分享 > 搜索
- 需要"开箱即用"的体验,不愿折腾技术配置
### 1.3 核心差异化
| 差异点 | ZCLAW | 竞品 |
|--------|-------|------|
| 性能 | Rust 原生 ~40MB RAM | Electron 400MB+ |
| 自主能力 | 9 个已启用 Hands 真正执行任务 | 纯对话 |
| 工作流 | Pipeline DSL 12 种 Action | 无 |
| 中文生态 | 27+ LLM Provider 含国产模型 | 主要支持海外模型 |
| 安全 | 16 层防御,渗透测试通过 | 基础安全 |
### 1.4 混合战略路径
```
阶段 1 (0-3月): 产品力验证 + 计费闭环
→ 证明 Hands 真实可用 + 用户愿意付费
阶段 2 (3-6月): 规模化获客 + Token 加价
→ SaaS 网关做增量收入 + 知识工作者社区渗透
阶段 3 (6-12月): 生态构建
→ 技能市场 + Pipeline 模板社区 + 开发者平台
```
---
## 2. 6 个月目标
### 2.1 产品目标
- 用户首次 Hand 执行成功率 > 80%
- 7 天留存率 > 40%
- NPS > 30
- 5 个 Hands 通过 20+ 真实场景验证
- 20 个面向知识工作者的 Pipeline 模板
### 2.2 商业目标
- 免费→付费转化率 > 5%
- 10 个付费客户
- 首月 MRR 覆盖服务器成本
- 3 层订阅上线Free / Pro / Team
---
## 3. 90 天双轨工作计划
### Track A产品力让用户"啊"的一刻可靠发生)
#### 阶段 A1Day 1-30首 60 秒体验
**目标**:新用户下载后 60 秒内看到 Hand 执行真实任务。
**预估工程量**~40-50 小时
| # | 工作项 | 具体内容 | 关键文件 | 预估 |
|---|--------|---------|---------|------|
| A1.1 | Hand 真实场景验证 | 验证 Researcher/Collector/Browser 在 20+ 真实场景下的执行成功率,记录失败模式 | `crates/zclaw-hands/src/hands/researcher.rs`, `collector.rs`, `browser.rs` | 15h |
| A1.2 | 引导式 Onboarding 串联 | 串联 AgentOnboardingWizard → SaaS 注册 → 首次 Hand 执行 | `desktop/src/components/AgentOnboardingWizard.tsx`, `desktop/src/components/FirstConversationPrompt.tsx` | 10h |
| A1.3 | 首次对话优化 | FirstConversationPrompt 从闲聊提示改为可执行的 Hand 任务触发(如"帮我研究这个话题" | `desktop/src/components/FirstConversationPrompt.tsx` | 5h |
| A1.4 | 关键路径排错 | 消灭从安装到首次 Hand 执行链路上的所有崩溃和错误 | 全栈 | 10-20h |
> **"成功率"定义**Hand 执行无错误完成,且生成符合预期 schema 的非空输出。
#### 阶段 A2Day 31-60让魔法可重复
**目标**:用户能独立完成端到端任务,记忆系统开始产生价值。
**预估工程量**~35-45 小时
| # | 工作项 | 具体内容 | 关键文件 | 预估 |
|---|--------|---------|---------|------|
| A2.1 | Hand 场景扩展 | 验证 Twitter/Slideshow/Clip 三个 Hand 的真实场景覆盖 | `crates/zclaw-hands/src/hands/twitter.rs`, `slideshow.rs`, `clip.rs` | 10h |
| A2.2 | Pipeline 模板库 | 构建 10 个面向目标群体的模板教育教研→课件→测验、学情分析→报告×3、医疗政策→摘要→合规报告、会议→纪要→待办×3、设计汕头趋势→素材→方案、竞品→分析→推荐×4 | `pipelines/` 目录扩展 | 8h |
| A2.3 | 记忆检索质量 | Fact 提取 → 检索相关性的端到端优化,增加基准测试 | `crates/zclaw-growth/src/retrieval/`, `crates/zclaw-memory/src/fact.rs` | 10h |
| A2.4 | Pipeline 结果预览 | 输出格式化打磨(图表/文档/幻灯片渲染) | `desktop/src/components/pipeline/`(待创建完善组件) | 8-12h |
> **注意**`crates/zclaw-kernel/src/export/` 当前仅支持 Classroom幻灯片导出。Pipeline 输出导出需要扩展该模块。
#### 阶段 A3Day 61-90增长飞轮
**目标**:外部用户验证,收集真实反馈,启动增长循环。
**预估工程量**~25-30 小时(不含 Beta 运营时间)
| # | 工作项 | 具体内容 | 关键文件 | 预估 |
|---|--------|---------|---------|------|
| A3.1 | 20 人外部 Beta | 真实用户全流程验证(见 Beta 计划附录) | — | 运营工作 |
| A3.2 | 结果导出/分享 | Pipeline 输出生成可分享页面或 PDF扩展 export 模块) | `crates/zclaw-kernel/src/export/` | 10h |
| A3.3 | 轻量配额提示 | 基于 `usage_quotas` 的用量追踪,接近配额时友好提示 | `crates/zclaw-saas/src/telemetry/` + `billing/quotas.rs` | 5h |
| A3.4 | 失败模式迭代 | 收集 Beta 失败场景,定向修复最高频问题 | — | 10-15h |
> **Beta 招募计划**
> - 渠道:教育(教师社群、教培机构直推)× 8 人 + 医疗(医院行政科室直推)× 6 人 + 设计汕头(制衣/玩具设计公司直推)× 6 人
> - Onboarding使用 A1.2 构建的新用户引导流程
> - 数据收集Telemetry 自动采集 + 结束后 NPS 问卷1-10 分 + 开放反馈)
> - 成功标准:> 12/20 人评分 ≥ 7 + 提出具体改进建议
### Track B商业化SaaS 从成本中心变成利润中心)
#### 阶段 B1Day 1-30计费基础设施
**目标**:数据库和后端支持订阅、计费、配额。
**预估工程量**~60-80 小时Track B 的关键路径,复杂度最高)
| # | 工作项 | 具体内容 | 关键文件 | 预估 |
|---|--------|---------|---------|------|
| B1.1 | 计费表结构 | 新增 5 张表 + 索引 + 种子数据 | `crates/zclaw-saas/src/db.rs` + migration | 8h |
| B1.2 | 支付宝/微信支付集成 | Webhook 回调处理(含签名验证和幂等性)、支付订单创建、支付状态查询、退款 | 新增 `crates/zclaw-saas/src/billing/`7 个文件) | 30-40h |
| B1.3 | 配额中间件 | Relay 请求前检查订阅状态和配额,未订阅/超限则拒绝 | `crates/zclaw-saas/src/relay/service.rs` | 10h |
| B1.4 | 计划定义 API | CRUD for subscription plans, 与 RBAC 权限联动 | `crates/zclaw-saas/src/auth/` | 8h |
| B1.5 | 用量聚合 Worker | 从 `usage_records` 聚合到 `usage_quotas` 的后台任务 | `crates/zclaw-saas/src/workers/` 新增 | 5h |
> **⚠️ 关键路径警告**B1.2Stripe 集成)是整个 Track B 的瓶颈。建议优先完成 B1.1 表结构后立即开始 B1.2,与 B1.3/B1.4 并行。
#### 阶段 B2Day 31-60付费前端
**目标**:桌面端和 Web 端都能完成订阅购买和管理。
| # | 工作项 | 具体内容 | 关键文件 |
|---|--------|---------|---------|
| B2.1 | 定价页 + 结账 | 桌面端内的订阅购买体验(嵌入式 Stripe Checkout | `desktop/src/components/` 新增 |
| B2.2 | 订阅管理 | 扩展 SaaS Settings 组件,显示当前计划、用量、账单历史 | `desktop/src/components/` SaaS 相关组件 |
| B2.3 | Admin 用量分析 | Admin Dashboard 增加 Usage 分析、收入追踪 | `admin-v2/src/pages/Usage.tsx` 扩展 |
| B2.4 | 14 天试用流程 | 注册即开 Pro 功能14 天后降级 | `crates/zclaw-saas/src/auth/` + 桌面端 |
#### 阶段 B3Day 61-90上线验证
**目标**:真实付费验证,获取第一批付费客户。
| # | 工作项 | 具体内容 | 关键文件 |
|---|--------|---------|---------|
| B3.1 | 3 层订阅上线 | Free / Pro / Team 三层定价正式发布 | — |
| B3.2 | 10 个付费 Beta | 定向邀请 + 折扣价验证付费意愿 | — |
| B3.3 | 转化分析 | 追踪哪些功能驱动付费转化,优化漏斗 | `crates/zclaw-saas/src/telemetry/` |
| B3.4 | 发票生成 | 月度自动发票,支持中文发票信息 | `crates/zclaw-saas/src/billing/` |
---
## 4. 三层定价设计
### 4.1 订阅层级
| 层级 | 月价 | 年价8折 | 包含 |
|------|------|------------|------|
| **Free** | ¥0 | ¥0 | 本地模型对话 + 2 个 Hand (Quiz/Speech) + 3 个 Pipeline 模板 + 基础记忆 |
| **Pro** | ¥49 | ¥470 | SaaS Relay 代理 + 所有 Hands + 无限 Pipeline + 记忆系统 + 优先模型 + 14 天试用 |
| **Team** | ¥199/人 | ¥1,900/人 | Pro 全部 + 多人管理 + Admin 面板 + API Key 统管 + 优先支持 + 团队共享模板 |
### 4.2 Token 用量计费(叠加在 Pro/Team 上)
- Relay 代理的 Token 用量按模型定价元数据(`models.pricing_input` / `pricing_output`)计算
- 每月包含基础额度Pro: 100 万 input tokens
- 超出部分按成本 + 20% 加价
- 用量实时追踪,接近额度时提醒
### 4.3 Free → Pro 转化策略
- 注册即开 14 天 Pro 试用(无需信用卡)
- 试用期内体验完整功能
- 到期前 3 天 + 1 天发送提醒
- 降级后保留数据,仅限制功能访问
- Free 用户在触发 Pro 功能时显示升级提示(非阻断)
### 4.4 Free 层功能限制执行策略
**核心问题**Hands 在 Tauri 桌面端本地执行SaaS 后端无法直接拦截。需采用客户端许可证检查策略。
**执行方案:桌面端 SaaS 许可证检查**
1. **启动时验证**:桌面端启动时调用 SaaS API `/api/v1/account/subscription` 获取当前订阅状态
2. **本地缓存**订阅状态缓存在本地TTL 24 小时),离线时使用缓存
3. **功能门控**:根据订阅计划的 `features` JSONB 字段决定哪些 Hands/Pipeline 可用
4. **不阻断本地模型**Free 用户可使用本地模型Ollama和所有本地功能仅限制 SaaS 依赖功能
5. **信任模型**:初期采用"软限制"——功能标记 + 提示升级,不做硬阻断。硬限制仅对 SaaS Relay 请求执行
**具体限制矩阵**
| 功能 | Free | Pro | Team |
|------|------|-----|------|
| 本地模型对话 | ✅ 无限 | ✅ 无限 | ✅ 无限 |
| SaaS Relay 代理 | ❌ 硬限制 | ✅ 含额度 | ✅ 含额度 |
| Hands本地执行 | 2 个Quiz/Speech其余软限制提示 | ✅ 全部 | ✅ 全部 |
| Pipeline 模板 | 3 个基础模板 | ✅ 无限 | ✅ 无限 + 团队共享 |
| 记忆系统 | 基础(最近 30 天) | ✅ 完整 | ✅ 完整 |
| Admin 面板 | ❌ | ❌ | ✅ |
### 4.5 试用期降级行为
| 场景 | 行为 |
|------|------|
| 试用期间创建的 Pro 数据Pipeline、Agent 模板) | 降级后变为只读(可查看不可编辑),升级后恢复 |
| 试用期间执行的 Hand 结果 | 永久保留,不删除 |
| 用户注册后从未登录 | 14 天后试用到期,下次登录看到 Free 体验 + 升级提示 |
| 用户卸载重装 | 试用期绑定 account非 device不可重复获取 |
| 用户信用卡被拒 | 7 天宽限期past_due之后降级为 Free |
---
## 5. 技术架构变更
### 5.1 新增数据库表
> **金额单位约定**所有金额以人民币分1/100 CNY存储。人民币为双小数货币。
> **迁移命名约定**:遵循现有格式 `YYYYMMDDHHMMSS_name.sql`(如 `20260402000001_billing_tables.sql`)。
```sql
-- 订阅计划
CREATE TABLE plans (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(50) NOT NULL UNIQUE, -- free, pro, team
display_name VARCHAR(100) NOT NULL,
price_monthly INTEGER NOT NULL, -- 单位:人民币分
price_yearly INTEGER NOT NULL, -- 单位:人民币分,舍入规则:向上取整到分
features JSONB NOT NULL, -- {"hands": ["quiz","speech"], "pipelines": 3, "memory": false, "relay": false}
token_quota_monthly BIGINT, -- 每月 Token 额度null = 无限)
hand_limit INTEGER, -- 可用 Hand 数量null = 全部)
pipeline_limit INTEGER, -- 可用 Pipeline 模板数null = 无限)
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 用户订阅
CREATE TABLE subscriptions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
account_id UUID NOT NULL REFERENCES accounts(id),
plan_id UUID NOT NULL REFERENCES plans(id),
status VARCHAR(20) NOT NULL, -- active, trialing, past_due, canceled
stripe_customer_id VARCHAR(100),
stripe_subscription_id VARCHAR(100),
current_period_start TIMESTAMPTZ,
current_period_end TIMESTAMPTZ,
trial_end TIMESTAMPTZ,
canceled_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 防止同一用户多个活跃订阅
CREATE UNIQUE INDEX idx_subscriptions_one_active
ON subscriptions (account_id) WHERE status IN ('active', 'trialing');
-- 发票
CREATE TABLE invoices (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
account_id UUID NOT NULL REFERENCES accounts(id),
subscription_id UUID REFERENCES subscriptions(id),
stripe_invoice_id VARCHAR(100),
amount INTEGER NOT NULL, -- 单位:人民币分
currency VARCHAR(3) DEFAULT 'CNY',
status VARCHAR(20) NOT NULL, -- draft, open, paid, void, refunded
billing_period_start TIMESTAMPTZ,
billing_period_end TIMESTAMPTZ,
-- 中文发票信息 schema: {"title": "公司名", "tax_id": "税号", "email": "接收邮箱", "address": "地址", "phone": "电话"}
invoice_data JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 支付记录
CREATE TABLE payments (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
invoice_id UUID NOT NULL REFERENCES invoices(id),
stripe_payment_intent_id VARCHAR(100),
amount INTEGER NOT NULL, -- 单位:人民币分
method VARCHAR(20), -- card, alipay, wechat_pay
status VARCHAR(20) NOT NULL, -- pending, succeeded, failed, refunded
refund_amount INTEGER, -- 退款金额null = 未退款
paid_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 用量配额追踪按自然月聚合数据源usage_records
-- 注意period_start 统一使用 UTC 当月 1 日 00:00:00
CREATE TABLE usage_quotas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
account_id UUID NOT NULL REFERENCES accounts(id),
period_start TIMESTAMPTZ NOT NULL, -- UTC 当月 1 日 00:00:00
period_end TIMESTAMPTZ NOT NULL, -- UTC 下月 1 日 00:00:00
input_tokens_used BIGINT DEFAULT 0, -- 从 usage_records 聚合
output_tokens_used BIGINT DEFAULT 0,
relay_calls_used INTEGER DEFAULT 0,
hand_executions_used INTEGER DEFAULT 0,
UNIQUE(account_id, period_start)
);
```
**与现有系统的数据流关系**
```
usage_records (per-request telemetry)
→ Worker 聚合 → usage_quotas (per-month aggregation for billing)
→ 配额中间件检查 usage_quotas vs plans.token_quota_monthly
```
### 5.2 新增 SaaS 模块
```
crates/zclaw-saas/src/billing/
├── mod.rs -- 模块入口
├── alipay.rs -- 支付宝 API 集成
├── wechat_pay.rs -- 微信支付 API 集成
├── plans.rs -- 计划定义和管理
├── subscriptions.rs -- 订阅生命周期管理
├── invoices.rs -- 发票生成和管理
├── quotas.rs -- 配额检查和追踪
└── callback.rs -- 支付回调处理(统一支付宝/微信通知)
```
### 5.3 中间件链变更
在 Relay 请求处理链中新增配额检查中间件:
```
请求 → Rate Limit → Auth → Subscription Check → Quota Check → Relay Proxy → Usage Record
```
现有 `relay/service.rs` 的 StreamBridge 处理逻辑中,在 `proxy_request` 前增加订阅和配额验证步骤。
---
## 6. 关键决策记录
### 6.1 为什么选择知识工作者而非开发者作为首批用户
- HandsResearcher/Collector/Twitter/Slideshow天然面向内容创作者
- 开发者市场已有 Cursor/Copilot差异化空间小
- 知识工作者对 AI 自主能力的需求更迫切,付费意愿验证更快
### 6.2 为什么 Freemium 而非纯 Token 加价
- 知识工作者对按量计费有心理抗拒("不知道要花多少钱"
- 订阅制提供可预期成本,降低决策门槛
- Token 加价作为增量收入叠加在订阅上,而非独立模式
### 6.3 为什么先做 Hands 验证再做 Marketplace
- 空市场困境Marketplace 需要用户量,用户量需要产品力
- Hands 真实可用是所有后续价值的前提
- Marketplace 放在三阶段变现的最后阶段
### 6.4 支付集成策略:微信支付 + 支付宝直连
**面向国内客户,直接集成微信支付和支付宝:**
- 系统面向国内用户,无需考虑国际支付
- 使用支付宝当面付Face-to-Face Payment/ 手机网站支付 API
- 使用微信 Native Pay / JSAPI Pay API
- 用户无需离开应用,直接扫码或调起支付
- 货币单位统一为人民币分CNY双小数精度
- 金额舍入规则:向上取整到分(如 49×12×0.8 = 470.4 → ¥470.40 = 47040 分)
- 异步回调(支付宝/微信均为 POST 回调通知)处理支付结果
**技术方案:**
- 支付宝:使用 `alipay-sdk-rust` 或直接 HTTP 调用支付宝开放平台 API
- 微信支付:使用 `wechat-pay-rust` 或直接 HTTP 调用微信支付 API v3
- 共用 Webhook 模式:统一回调端点 `/api/v1/billing/callback/{provider}` 处理支付通知
- 签名验证RSA2 (支付宝) + RSA (微信) 确保回调安全
---
## 7. 风险与缓解
| 风险 | 概率 | 影响 | 缓解措施 |
|------|------|------|---------|
| Hand 执行在真实场景不可靠 | 高 | 致命 | A1.1 优先验证,每周记录成功率,< 70% 则暂停其他工作 |
| 知识工作者不愿付费 | | | 14 天免费试用降低门槛追踪使用功能付费转化路径 |
| 支付宝/微信支付集成复杂度 | | | 使用 Rust SDK 封装优先支持扫码支付最简单 |
| Billing 模块工期超预期 | | | B1.2 是关键路径优先启动分阶段交付先订阅后发票 |
| Free 用户绕过本地 Hand 限制 | | | 初期软限制核心付费价值在 SaaS Relay 而非本地功能 |
| Beta 揭示基础性 bug | | | A1.4 关键路径排错在 Beta 前完成 |
| 国产 LLM 提供商 API 变更 | | | Driver 层抽象隔离API 变更仅需修改对应 driver |
| 安全漏洞导致用户流失 | | 致命 | 持续安全审计渗透测试每季度一次 |
| 竞品跟进类似 Hands 功能 | | | 先发优势 + 深度场景验证建立壁垒 |
---
## 8. 验证方式
### 8.1 Track A 产品验证
- [ ] Researcher Hand 20 个真实研究话题中成功率 > 80%
- [ ] Collector Hand 在 20 个真实采集场景中成功率 > 80%
- [ ] Browser Hand 在 20 个真实网站操作中成功率 > 70%
- [ ] 新用户从下载到首次 Hand 执行 < 60
- [ ] 20 Beta > 12 人认为"比现有工具好"
### 8.2 Track B 商业验证
- [ ] Stripe Checkout 端到端跑通(订阅创建 → Webhook → 数据库更新)→ 改为支付宝/微信支付端到端跑通
- [ ] 配额中间件正确拦截超限请求
- [ ] Admin Dashboard 显示实时收入和转化数据
- [ ] 10 个付费 Beta 中 > 5 人在试用结束后选择续费
- [ ] Free → Pro 转化率 > 5%
### 8.3 回归验证
每次改动后必须验证:
- 聊天 / 流式响应正常
- Store 状态更新正确
- 配置读写持久化
- Hand 触发执行正常
- SaaS Relay 代理正常
```bash
# TypeScript 类型检查
pnpm tsc --noEmit
# 单元测试
pnpm vitest run
# Rust 测试
cargo test --workspace
# 启动开发环境
pnpm start:dev
```