# 注册页面 - PRD

> **文档版本**: v1.0 · 2026-09-03
> **作者**: 增长产品组
> **文档状态**: 评审中
> **关联 HTML 原型**: [register.html](register.html)
> **关联后端服务**: `auth-service` / `tenant-service`
> **关联业务**: 创也·乾坤（OZON/WB 跨境电商 SaaS）—— 终端租户入驻入口

---

## 0. 一句话定位

让"想用 AI 工具做 OZON/WB 跨境电商"的卖家，在 **3 分钟内**完成账号创建 + 企业实名 + 7 天免费体验开通，立即进入 `business-dashboard`，完成「首次产品上传 → 第一次 AI 跑数据」的全链路。

---

## 1. 业务背景与痛点

### 1.1 现状描述

- 在进行业务开拓的过程中存在部分用户希望进行免费试用的需求，目前平台不支持7天免费试用，需要新增7天免费试用功能以提示平台用户的注册转化率

### 1.2 痛点本质

1. **不支持平台试用**：平台不支持卖家进行试用。

### 1.3 价值主张 (Why now)

- **对用户**：通过注册并进行7天免费试用，提升对平台产品的认知，以提升付费信任度
- **对业务**：把用户注册转化率从 XX 提升到 XX%（目前具体注册页面注册转化率缺失）
- **对渠道**：通过 `?utm_source` + `partner_code` 参数，让合伙人 Dashboard 能准确归因注册来源（联动 `partner-dashboard.html`）。

---

## 2. 角色模型与权限边界

### 2.1 涉及角色

| 角色 | 角色定义 | 在本模块中的典型动作 |
| --- | --- | --- |
| **未注册用户 (Visitor)** | 访问注册页、填写表单、提交注册 | 创建账号 |
| **新注册租户主账号 (Tenant Admin)** | 注册成功后自动成为租户的「超级管理员」 | 邀请子账号、配置店铺 |
| **渠道商 (Partner)** | 通过推广链接带用户来注册 | 用户注册时携带 `partner_code`，无需看到该字段 |

### 2.2 权限矩阵

| 能力 | Visitor | Tenant Admin | Partner |
| --- | --- | --- | --- |
| 填写注册表单 | ✓ | — | — |
| 申请 7 天免费体验 | ✓ | — | — |
| 注册成功后访问业务后台 | ✗ | ✓ | — |
| 查看 `partner_code` 字段 | ✗ | ✗ | 系统自动读取 URL 参数 |

---

## 3. 信息架构与页面规划

### 3.1 页面入口 / 触发链路

```
官网首页 "免费试用" 按钮
  └→ /register?utm_source={partner_code}
       └→ [本页面] register.html
            ├─ 成功 → 弹窗「7天免费体验」确认 → 进入 business-dashboard
            └─ 失败 → 顶部红色 toast + 表单内字段错误

用户直接访问 /register
  └→ [本页面] register.html
       └─ 同上，但 `partner_code` 为空，注册成功后渠道来源字段记为 `none`
```

### 3.2 页面分区（视觉布局）

```
┌──────────────────────────────────────────────────────────────┐
│  [Header] Logo Y + 「YeiYei AI · 创也智能」    [微信支付徽标]  │
├─────────────────────────┬────────────────────────────────────┤
│  左侧品牌栏 (BrandPanel)  │  右侧表单卡 (FormCard)             │
│  - 价值主张 + Hero 图     │  - 「注册创也账号」标题             │
│  - 「看清利润  懂经营」    │  - 字段：公司名称 / 联系人 / 手机号  │
│                          │  - 字段：账号名 / 密码 / 确认密码    │
│                          │  - [注册] [7 天免费体验] 按钮       │
│                          │  - 「已有账号？返回登录」链接        │
├─────────────────────────┴────────────────────────────────────┤
│  [Footer] 备案号 / 版权                                        │
└──────────────────────────────────────────────────────────────┘
```

### 3.3 关键交互清单

| 编号 | 触发元素 | 用户动作 | 预期反馈 |
| --- | --- | --- | --- |
| INT-001 | [注册] 按钮 | 点击（表单合法） | 1) 按钮 loading 2) 成功后跳到「7天体验」弹窗 |
| INT-002 | [7 天免费体验] 按钮 | 点击 | 弹出「确认开启 7 天免费体验」小窗 |
| INT-003 | 「确认开通」按钮 | 点击 | 创建租户 + 开通 1 个店铺授权 |
| INT-004 | 手机号输入框 | 离开输入框 | 实时校验格式，错误时下方红字提示 |
| INT-005 | 密码输入框 | 输入 | 实时显示「弱 / 中 / 强」3 档强度 |
| INT-006 | [切换显示密码] 图标 | 点击 | 密码/确认密码 都切换显示态 |
| INT-007 | 「已有账号？返回登录」 | 点击 | 跳到登录页，保留来源渠道标记 |

---

## 4. 核心功能模块设计

### 4.1 模块 A：注册表单

#### 4.1.1 字段定义

| 字段名 | 类型 | 必填 | 校验规则 | 默认值 | 说明 |
| --- | --- | --- | --- | --- | --- |
| `company_name` | string | ✓ | 长度 2-50；中英文数字 · ( ) 空格 - | — | 公司名称，开通合同抬头 |
| `contact_name` | string | ✓ | 长度 2-20；中文 / 英文 | — | 联系人姓名 |
| `phone` | string | ✓ | `^1[3-9]\d{9}$` | — | 中国大陆手机号 |
| `username` | string | ✓ | 长度 4-20；`^[a-zA-Z][a-zA-Z0-9_]*$` | — | 登录账号，开头必须是字母 |
| `password` | string | ✓ | 长度 8-32；必须含字母+数字 | — | 登录密码 |
| `password_confirm` | string | ✓ | 必须与 `password` 一致 | — | 二次确认 |
| `partner_code` | string | ✗ | 长度 4-32；字母数字下划线 | 从 URL `?utm_source=` 读取 | 渠道来源标识 |

#### 4.1.2 业务规则

- **规则 1**：注册成功后，系统自动创建「Tenant Admin」角色，并把 `company_name` 作为租户显示名。
- **规则 2**：手机号**不能重复**，已注册手机号在失焦时立即提示「该手机号已注册」。
- **规则 3**：用户名前端不查重，但提交时若后端返回 409，给出「账号名已存在」提示。
- **规则 4**：密码强度分三档：
  - **弱** (< 8 位)：仅满足长度
  - **中** (≥ 8 位 + 字母数字)：基本安全
  - **强** (≥ 10 位 + 大小写字母 + 数字 + 特殊符号)：推荐
- **规则 5**：`partner_code` 不在前端展示字段，但注册请求体里要带上。

#### 4.1.3 状态机

```
[未提交] -- 点击注册/试用 --> [提交中]
[提交中] -- 成功 --> [注册成功 / 试用弹窗]
[提交中] -- 失败 --> [未提交 + 错误提示]
[注册成功] -- 确认开通试用 --> [进入业务后台]
```

### 4.2 模块 B：7 天免费体验弹窗

#### 4.2.1 弹窗字段

| 元素 | 内容 | 备注 |
| --- | --- | --- |
| 标题 | 开通 7 天免费体验 | |
| 描述段 1 | 确认开启 7 天免费体验吗？系统将立刻创建租户、开通 1 个店铺授权，您可以直接进入系统使用全部功能。 | |
| 描述段 2 | 体验期结束后如未续费，账号将无法继续访问。到期前请在「全局设置 → 租户到期」处查看剩余天数。 | 引导用户后续动作 |
| 按钮 | [取消] / [确认开通] | 取消走「返回表单」分支 |

#### 4.2.2 业务规则

- **规则 1**：手机号不合法时不能点开体验弹窗，强制走正常注册流程。
- **规则 2**：体验弹窗只是**前端引导**，真正的租户创建发生在「确认开通」之后。
- **规则 3**：体验期默认开通 **1 个店铺授权**，到期不续费则冻结租户。

---

---

## 5. 交互细节与校验规则

### 5.1 表单校验

| 字段 | 触发时机 | 规则 | 错误提示文案 |
| --- | --- | --- | --- |
| 公司名称 | 用户离开输入框时 | 非空，长度 2-50 | 请输入公司名称（2-50 字符） |
| 联系人 | 用户离开输入框时 | 非空，长度 2-20 | 请输入联系人姓名（2-20 字符） |
| 手机号 | 用户离开输入框时 + 提交时 | 11 位中国大陆手机号 | 请输入正确的手机号 |
| 用户名 | 用户离开输入框时 + 提交时 | 字母开头，4-20 位 | 用户名 4-20 位，字母开头 |
| 密码 | 输入时实时 + 离开输入框时 + 提交时 | 不少于 8 位，且含字母和数字 | 密码需 8-32 位，含字母和数字 |
| 确认密码 | 输入时实时 + 离开输入框时 + 提交时 | 必须与密码一致 | 两次输入的密码不一致 |

### 5.2 异常路径

| 异常场景 | 触发条件 | 用户感知 | 系统处理 |
| --- | --- | --- | --- |
| 网络断开 | 用户无网络 | 顶部黄色提示「网络已断开」 | 表单内容暂存，恢复网络后提示用户 |
| 服务异常 | 后端报错 | 顶部红色提示「服务异常，请稍后重试」 | 自动重试 1 次后停止 |
| 手机号已注册 | 后端返回「该手机号已注册」 | 手机号字段下红字「该手机号已注册」 | 引导用户到「返回登录」链接 |
| 用户名已存在 | 后端返回「用户名已存在」 | 用户名字段下红字「用户名已存在」 | 焦点定位到用户名输入框 |
| 试用申请被拒 | 后端返回「不符合试用条件」 | 顶部提示 + 弹窗不关闭 | 引导用户联系客服 |

### 5.3 可访问性 (a11y)

> 给有视力障碍用户使用的辅助功能。设计上要保证键盘可用、屏幕阅读器友好。

- 键盘 Tab 顺序：公司名称 → 联系人 → 手机号 → 用户名 → 密码 → 确认密码 → 切换显示密码 → [注册] → [7天体验]
- 错误提示要被屏幕阅读器读出
- 密码强度条要有可读的"密码强度"
- 所有按钮在键盘聚焦时显示紫色描边

---

## 6. 异常与边界场景

### 6.1 数据边界

- **空表单提交**：拦截所有空字段，自动聚焦到第一个空字段
- **超长输入**：每个字段有最大长度限制（公司 50 / 联系人 20 / 用户名 20 / 密码 32）
- **超长密码粘贴**：粘贴超过 32 字符自动截断，不报错

### 6.2 业务边界

- **同一手机号不能重复注册**：避免账号冲突
- **重复提交**：注册按钮点击后立即变灰，显示「提交中」
- **来源渠道标记无效时**：不报错，注册依然成功，但来源记为「无」
- **试用申请失败但注册成功**：保留账号但提示「试用申请被拒，请稍后重试」

---

---

## 7. 验收标准

> 上线前必须满足的条件，每条都打勾才算完成。

- [ ] **功能完整性**：
  - [ ] 5 个字段都能正常输入、校验、提交
  - [ ] 7 天试用弹窗能正常开关
  - [ ] 「确认开通」能成功创建租户并跳到业务后台
  - [ ] 「返回登录」能保留来源渠道标记
- [ ] **校验规则**：§5.1 中所有字段校验均已实现
- [ ] **异常路径**：§6 中所有边界场景均有测试覆盖
- [ ] **性能**：首屏加载 < 1.5 秒，操作反馈 < 0.2 秒
- [ ] **浏览器兼容**：Chrome 100+ / Safari 15+ / Edge 100+
- [ ] **响应式**：≥ 1280px、1024px、768px 三个屏幕宽度下都验证过
- [ ] **无障碍**：键盘可完全操作，焦点指示器可见
- [ ] **数据埋点**：注册按钮点击量、注册成功率、试用开启率
- [ ] **设计走查**：UI 同事 review 通过
- [ ] **对接回归**：和合伙人 Dashboard 的渠道来源字段对齐

---

## 8. 未来迭代 (本期不做)

| 版本 | 计划内容 | 价值评估 |
| --- | --- | --- |
| v1.1 | 微信扫码一键注册 | 高 |
| v1.1 | 海外手机号 +86/+7 双区号支持 | 高 |
| v2.0 | 企业营业执照 OCR 自动识别 | 中 |
| v2.0 | 接入钉钉/飞书 第三方登录 | 中 |

---

## 9. 修订记录

| 版本 | 日期 | 修改人 | 修改内容 |
| --- | --- | --- | --- |
| v1.0 | 2026-09-03 | 增长产品组 | 初稿 |
| v1.1 | 2026-09-03 | 增长产品组 | 移除技术细节章节（API/接口/组件映射），统一为产品语言 |

---

> **下一步**：评审通过后进入 UI 高保真 → 前端开发 → 测试 → 上线。
