# 情绪词 · 功能清单 v1.0.0

> **版本**：v1.1.0（文档同步 2026-07-17）  
> **v1.1.0 变更**：运营后台新增**登录门禁 + 管理员账号管理**（A-09/A-10）；会话 1 天有效期。  
> **定位**：百词斩式情绪词学习 —— 选库 → 设计划 → 学词做题 → 结果 →（复习）→「我」  
> **关联**：[HANDOFF-v1.0.0.md](./HANDOFF-v1.0.0.md)（含 **§1.1 数据传输**）· [DATA-SCHEMA.md](./DATA-SCHEMA.md) · [原型地图](../prototype/map.html)

**给开发**：本表「数据通道」列标明前后端数据怎么传。原型阶段**无业务 HTTP API**；内容靠静态 JSON，进度/草稿靠 `localStorage`，导入靠浏览器读文件。细节见 HANDOFF §1.1。

---

## 1. 版本边界

### 1.1 做什么

| 维度 | 说明 |
|------|------|
| 核心体验 | 基础库 + 亲子一本：计划 → 初识 → 做题 → 结果；「我」看日历与过往词库 |
| 登录 | 微信软门禁 + 未登录空计划；写入前登录；见 HANDOFF §7 |
| 内容 | `data/packs/*.json`；后台草稿可覆盖；导入 CSV「选项配置」 |
| 终端 | 微信小程序骨架 + HTML 原型 + 运营后台原型 |
| 数据 | 见下方「通道图例」 |

### 1.2 明确不做

| 模块 | 说明 | 计划 |
|------|------|------|
| 趣味测评 + 共鸣 | 独立问卷与报告 | v1.1+ |
| 情景分析 / 命名器 | 人事物对话、身体信号选词 | v1.1–1.2 |
| 扩展词库正式开课 | NVC 等 | v1.2+ |
| App 内重置进度 | 仅地图调试区；**开发不做** | — |
| App 内「重置登录」调试开关 | 仅原型地图外置；**开发不做** | — |
| 云同步（跨设备） | — | v1.1 |
| 草稿发布到 C 流水线 | A-07 | 待建 |
| 付费 | — | v2.0 |

### 1.3 数据通道图例（贯穿全表）

| 代号 | 含义 | 键 / 路径 |
|------|------|-----------|
| **GET-JSON** | HTTP 读静态文件（本地 `:8775` 或 CDN） | `/data/packs/index.json`、`/data/packs/{dataFile}` |
| **LS-C** | C 端本机进度 | `localStorage.emotion_words_state_v1`（辅：`ew_last_day`） |
| **LS-B** | 后台本机草稿（覆盖同 id 的 JSON） | `localStorage.ew_admin_draft_v1` |
| **FILE** | 浏览器选文件 / 拖入 | `FileReader` → 解析 → 写 LS-B |
| **BLOB** | 浏览器生成下载 | fetch 样例 CSV + UTF-8 BOM |
| **FE** | 纯前端计算 | 如 `quiz-fallback`、`plan-targets` |
| **MOCK** | 后台 Mock / 可读 C 状态 | `admin-users.js` |
| **API** | 正式接口（未建） | 迁小程序后替换上列通道 |

```mermaid
flowchart LR
  DATA["data/packs/*.json"] -->|GET-JSON| C[C 端原型]
  DATA -->|GET-JSON| B[运营后台]
  C <-->|LS-C| C
  B <-->|LS-B| B
  CSV[运营 CSV] -->|FILE| B
  B -.->|API 待建 A-07| DATA
```

---

## 2. 产品架构

```mermaid
flowchart TB
  subgraph C["C 端 · v1.0.0"]
    T1[Tab 情绪词]
    T2[Tab 词库]
    T3[Tab 我]
    T1 --> Plan[学习计划]
    T2 --> Plan
    Plan --> Study[今日学习]
    Study --> Result[结果]
    Result --> T1
    T1 -->|待复习| Practice[复习]
    T3 --> Edit[资料编辑]
  end
  subgraph B["运营后台"]
    Packs[词库列表/详情]
    Word[词条+练一练]
    Imp[导入弹窗]
    Packs --> Word
    Packs --> Imp
  end
```

---

## 3. C 端功能清单

### 3.1 导航

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| NAV-01 | Tab 情绪词 | 今日任务一体卡 | LS-C 读进度 | ✅ |
| NAV-02 | Tab 词库 | 基础库 + 亲子一本；NVC 不展示 | GET-JSON + LS-C | ✅ |
| NAV-03 | Tab 我 | 资料 / 日历 / 我的学习 | LS-C | ✅ |
| NAV-04 | ~~情景 Tab~~ | 隐藏 | — | 隐藏 |
| NAV-05 | ~~测评入口~~ | 隐藏 | — | 隐藏 |

---

### 3.2 情绪词 · 首页

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| H-01 | 今日任务一体卡 | 词库 + 本库进度 + 今日新学/待复习 + 主按钮 | GET-JSON 元数据 + LS-C | ✅ |
| H-02 | 主按钮状态机 | 去选库 / 开始 / 继续 / 再学一组 / 已学完 | LS-C | ✅ |
| H-03 | 今日数字 | 今日新学、待复习 | LS-C `todayWordsDone` / `wrongCount` | ✅ |
| H-04 | 待复习入口 | 数字 >0 可点进复习 | LS-C | ✅ |
| H-05 | 空状态 / 导览 | 无计划引导；首次全屏导览（若已落地） | LS-C `onboardingDismissed` 等 | ✅/部分 |
| H-06 | ~~其它词库书架~~ | 不做 | — | 不做 |

---

### 3.3 词库

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| L-01 | 可学列表 | 基础四本 + **亲子**（`emotion_parenting`） | GET-JSON `index` + 各 pack | ✅ |
| L-02 | 简介与进度 | 描述 + 行内进度 | GET-JSON + LS-C | ✅ |
| L-03 | 在学 / 已学完 | 徽标 | LS-C | ✅ |
| L-04 | 进计划页 | `pack-detail` | — | ✅ |
| L-05 | ~~扩展分区~~ | NVC 等不展示 | — | 隐藏 |
| L-06 | 扩展预览 | 可进、不可开课 | GET-JSON | 保留 |

---

### 3.4 学习计划

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| P-01 | 词库完整介绍 | 顶部 description | GET-JSON | ✅ |
| P-02 | 每日 / 天数双轴 | 滑杆联动；`天×日≥R`；见 HANDOFF §3.3.1 | FE `plan-targets.js` → 写入 LS-C `dailyTarget` | ✅ |
| P-02a | 默认与吸附 | 默认约 14 天；旧值吸附 | FE + LS-C | ✅ |
| P-03 | 预计日期 | 按天数展示 | FE | ✅ |
| P-04 | 学习模式 | 图文场景 / 词义+举例 | LS-C `learningMode` | ✅ |
| P-05 | 保存计划 | `planConfigured=true` | LS-C | ✅ |
| P-06 | 保存并开始 | 首次直达学习 | LS-C + 内存 `studySession` | ✅ |
| P-07 | 更换词库 | 同页 Tab | LS-C `activePackId` | ✅ |
| P-08 | ~~页内重置~~ | 仅地图 | — | 不做 |

---

### 3.5 今日学习

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| S-01 | 顶栏进度 | `已学/每日目标`；满额加时条 | LS-C | ✅ |
| S-02 | 初识卡 | 词面 / 释义 / 例句等 | GET-JSON 词条 | ✅ |
| S-03 | 组卷 | 按模式抽场景/释义等；多题随机 1；**缺当前模式主题型则初识后直接下一词** | GET-JSON `quizzes` 或 FE fallback | ✅ |
| S-08 | 自动出题 | 无 quizzes 时 | FE `quiz-fallback.js` | ✅ |
| S-09 | 答题交互 | 选中即判；对自动下题；错「答错提示」 | 内存 session → 错则写 LS-C `wrongCount` | ✅ |
| S-10 | 满额门 | 只学中弹窗；先回去→首页；再学几个=加时 | LS-C `todayWordsDone` | ✅ |
| S-10b | 场景配图 | `imageUrl` 优先 | GET-JSON / 草稿 URL | ✅ |
| S-11 | 错词记录 | → 复习池 | LS-C | ✅ |

---

### 3.6 学习结果

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| R-01 | 正确率与本组词 | — | 内存 session | ✅ |
| R-02 | 今日目标态 | 是否达成 | LS-C | ✅ |
| R-03 | 继续 / 回首页 | 满额无「再学几个」 | — | ✅ |
| R-04 | 学习日历 | `recordStudyDay` | LS-C `studyCalendar` | ✅ |

---

### 3.7 复习

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| V-01 | 错题复习页 | 仅当前在学库 `wrongCount>0` | LS-C + GET-JSON 词/题 | ✅ |
| V-02 | 复习做题 | `review-pick`；类型随机抽 1 | 同上 | ✅ |
| V-04 | 入口 | 首页待复习数字 | LS-C | ✅ |
| V-05 | 完全掌握 | 无确认；`wrongCount=0` | LS-C | ✅ |

---

### 3.8 我

| ID | 功能 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| M-01 | 本机资料 | 昵称 / ID / 性别 / 头像色 | LS-C `profile` | ✅ |
| M-02 | 学习日历 | 当前库当日新学 ≥ dailyTarget | LS-C | ✅ |
| M-03 | 我的学习 | `planConfigured`；默认 3 + 展开 | LS-C | ✅ |
| M-04 | 关于 | 版本 Toast | — | ✅ |

---

### 3.9 基础能力

| ID | 功能 | 数据通道 | 状态 |
|----|------|----------|------|
| X-01 | 本地进度 | LS-C `store.js` | ✅ |
| X-02 | 词库加载 | GET-JSON `packs.js` | ✅ |
| X-03 | schema 版本 | GET-JSON | 部分 |
| X-04 | 微信登录软门禁 + 空计划 | LS-C `auth` + 正式 login API | ✅ 规则定稿 / 原型已演示 |
| X-05 | 云同步 | API | v1.1 |

---

## 4. 运营后台（v1.1.0）

| ID | 模块 | 说明 | 数据通道 | 状态 |
|----|------|------|----------|------|
| A-09 | 登录门禁 | 进后台先登录；会话 **1 天**有效期，过期/退出回落全屏登录页；原型演示账号 `admin`/`admin888` | LS-B（会话/账号） | ✅ |
| A-10 | 管理员管理 | 侧栏「管理员」页；**账号管理仅超管可做**；超管不可删/停/被改密、仅本人可改密；**新增仅子账号**；超管可对子账号停用/启用/重置密码/删除；**子账号只读，仅改本人密码，不能修改任何人** | LS-B（账号表） | ✅ |
| A-01 | 词库管理 | 列表→详情→编辑；状态 **未上架/已上架** | 读 GET-JSON；写 LS-B | ✅ |
| A-02 | 词条 + 练一练 | 同页；**单一题目列表**（卡片选场景题/释义题）；出题 **未完善/已完善** | 读合并草稿；写 LS-B | ✅ |
| A-03 | 导入弹窗 | **统一模板**；下载 `词条导入模板.csv`；拖入 CSV；无粘贴 | BLOB 下载；FILE→LS-B | ✅ |
| A-03a | 选项配置列 | `文案:0\|文案:1\|…`；4 项一个 1；旧列报错 | FILE 解析 | ✅ |
| A-04 | 草稿 | 刷新不丢；**C 端读不到** | LS-B | ✅ |
| A-05 | 用户学习数据 | 与 C 端 `userId` 对齐；原型可有演示行（**非库表样例**） | API / 读 LS-C | ✅ |
| A-06 | ~~测评管理~~ | 侧栏隐藏 | — | 隐藏 |
| A-07 | 发布到 C | 草稿合并 `data/` 或 CMS | API | ⏳ |
| A-08 | 原型注释 | 红点 + 抽屉 | — | ✅ |

**读写优先级（B）**：`LS-B` 有该 pack/words → 用草稿，否则 `GET-JSON`。

**登录/账号存储（A-09/A-10，原型）**：账号表 `localStorage.ew_admin_accounts_v1`、会话 `localStorage.ew_admin_session_v1`（含 `expireAt`）。**⚠️ 仅原型演示**：密码明文存本机，正式环境须改服务端账号体系（密码加盐哈希 + Token 登录 + 服务端校验有效期），前端只持 Token。详见 HANDOFF §8。

---

## 5. 内容交付标准

| 词库 | packId / 类型 | v1.0 |
|------|---------------|------|
| 喜怒哀惧/觉察 | `emotion_basic` | 上架可学 |
| 亲子 | `emotion_parenting` · `extensions/parenting.json` | 上架可学（一本） |
| NVC/扩展 | `nvc_*` 等 | 不展示；预览不可学 |

词条完善（后台「已完善」）：词面 + 一句话意思 + 情绪倾向 + 例句 + 完整场景题≥1 + 完整释义题≥1。

导入模板：`docs/import-templates/`（UTF-8 BOM）。

---

## 6. 主路径

```
打开 bat → C：词库选怒/亲子 → 计划双轴 → 保存并开始
  → 初识 → 做题 → 满额弹窗或结果 → 回情绪词
  → 「我」日历 / 我的学习
后台：词库详情 → 导入弹窗（选项配置）或词条编辑 → 草稿本机
  →（待 A-07）发布后 C 才能看到后台改动
```

---

## 7. 路线图（摘要）

| 版本 | 增量 |
|------|------|
| **v1.0.0** | 本文学习闭环 + 后台配置原型 + 数据通道说明 |
| v1.1 | 测评 + 云同步；发布流水线 |
| v1.2 | 情景 / 命名 / 扩展库可学 |
| v2.0 | 付费 |

---

## 8. 验收清单

### C 端

- [ ] 3 Tab；无测评/情景入口  
- [ ] 词库含基础 + 亲子；无 NVC 分区  
- [ ] 计划双轴；学词满额只学中弹窗；结果无「再学几个」  
- [ ] 待复习可点；完全掌握清零  
- [ ] 进度在 LS-C，刷新仍在  

### B 端

- [ ] 状态仅未上架/已上架  
- [ ] 出题未完善/已完善；保存缺项报错标红  
- [ ] 导入弹窗 + 选项配置格式；旧表头拒绝  
- [ ] 改动只进 LS-B，C 不自动更新  

### 文档

- [ ] 本清单与 HANDOFF §0 / §1.1 / §5.1 一致  

---

## 9. 相关文档

| 文档 | 路径 |
|------|------|
| 研发交接（数据传输全文） | [HANDOFF-v1.0.0.md](./HANDOFF-v1.0.0.md) |
| Schema | [DATA-SCHEMA.md](./DATA-SCHEMA.md) |
| 导入字段说明 | [import-templates/字段说明.txt](./import-templates/字段说明.txt) |
