# 暖记 (Warm Notes) — 产品设计规格 > **版本**: 1.2 > **日期**: 2026-05-31 > **状态**: Phase 1 待确认 > **平台**: Android / iOS / macOS / Windows / HarmonyOS > **后端**: HMS ERP 基座 (Rust/Axum) + erp-diary 业务模块 --- ## 1. 产品定位 **暖记** 是一款温暖治愈风格的手账日记 app,以手写/涂鸦为核心输入方式,覆盖小学到大学全学段用户。 ### 1.1 目标用户 | 阶段 | 用户群 | 核心场景 | 优先级 | |------|--------|----------|--------| | **Phase 1** | 小学生 (8-12岁, 3-6年级) | 平板+触控笔手写日记、班级分享、老师点评 | ⭐ 核心 | | **Phase 2** | 中学生 (13-15岁) | 独立创作、心情追踪、好友互动 | 扩展 | | **Phase 3** | 高中/大学生/年轻人 (16+) | 完整社交、高级模板、数据分析 | 扩展 | ### 1.2 核心价值主张 - **笔迹保真**:保留用户真实手写笔迹,适度去抖但不过度平滑,让日记有温度和个人辨识度 - **手账体验**:贴纸、涂鸦、照片、和纸胶带——不只是在手机上打字,而是一本可以装饰的手账 - **班级连接**:老师布置主题 → 学生写作 → 老师点评,形成写作闭环,培养写作习惯 - **成长记录**:心情追踪、成就徽章、日历回顾,让用户看见自己的变化 ### 1.3 双模式设计 App 同时支持两类用户,互不排斥: - **班级用户**:通过班级码加入,享受班级分享、老师点评功能。以小学生为主。 - **独立用户**:手机号/第三方注册,自由使用全部日记功能,无需加入班级。覆盖中学生到成人。 --- ## 2. 角色与权限 ### 2.1 三种角色 #### 👩‍🏫 老师 - 创建/管理班级,生成班级码 - 布置日记主题/作业 - 查看班级所有已分享的日记 - 点评 + 文字评语 - 统计班级完成情况 - **不可**查看学生标记为"私密"的日记 #### 👧 学生 - 手写/打字/拍照创建日记 - 装饰日记(贴纸/涂鸦/胶带/照片) - 选择性分享到班级(每篇日记自主选择公开或私密) - 查看同学分享的日记 - 收到老师评语通知 - 收集成就徽章 #### 👨‍👩‍👧 家长 - 绑定孩子账号(扫码/短信验证) - 查看自己孩子的日记(只读) - 查看老师的评语 - 设置使用时间限制(可选) - 接收周报/月报 - **不可**查看其他学生日记 - **不可**修改孩子日记内容 ### 2.2 权限矩阵 | 操作 | 老师 | 学生 | 家长 | |------|------|------|------| | 创建日记 | — | ✅ | — | | 查看自己孩子的日记 | — | ✅ | ✅ | | 查看其他学生分享的日记 | ✅ | ✅ | — | | 查看学生私密日记 | — | 仅自己 | — | | 布置日记主题 | ✅ | — | — | | 点评日记 | ✅ | — | — | | 管理班级成员 | ✅ | — | — | | 设置使用时间 | — | — | ✅ | --- ## 3. 功能模块 ### 3.1 手账编辑器(核心) **架构**:Flutter Stack 层叠 - **Layer 1 — Canvas 手写层**:CustomPainter + perfect_freehand - **Layer 2 — 元素层**:Positioned Widgets(贴纸/照片/文字/胶带),Draggable + 手势缩放旋转 - **Layer 3 — 工具栏**:贴纸面板、模板面板、画笔面板、格式栏、标签面板 **手写引擎**: - perfect_freehand 库实现速度→线宽映射 - 触控笔压感直传(PointerEvent.pressure → 线宽/透明度) - 轻量去抖(仅消除 ±1-2px 设备采样噪声,保留个人笔迹特征) - Palm rejection(触控笔书写时忽略手掌触碰) - 笔画收尾处理保留(起笔/收笔轻重变化是个人风格关键) **画笔工具**: - 钢笔(细线、压感敏感) - 铅笔(中等粗细、轻微纹理感) - 马克笔(宽笔触、半透明叠加) - 橡皮(区域擦除) **工具面板**: - 贴纸面板:分类浏览(热门/可爱/植物/天气/节日/手绘/校园)、搜索、拖拽放置 - 模板面板:日/周/月视图模板、学生专属模板 - 画笔面板:工具选择、粗细滑块、颜色选择、透明度(马克笔专属) - 格式栏:加粗/斜体/下划线、文字颜色、对齐方式 - 标签面板:已选标签、输入新标签、推荐标签 **自动保存**:每次笔画结束或元素变更时增量保存。 ### 3.2 日记内容数据模型 ``` JournalEntry { id: String title: String date: DateTime mood: Enum (happy, calm, sad, angry, thinking) weather: Enum (sunny, cloudy, rainy, snowy, windy) elements: List // 有序排列 tags: List isSharedToClass: Boolean teacherComment: String? createdAt: DateTime updatedAt: DateTime } JournalElement { type: Enum (handwriting, text, sticker, photo, washiTape) position: Offset size: Size rotation: Double zIndex: Int // type-specific data: handwritingData: HandwritingStroke[]? // 矢量点序列 textContent: String? stickerId: String? photoPath: String? washiTapeStyle: String? } HandwritingStroke { points: List // 原始坐标 pressures: List // 压感数据 timestamps: List // 时间戳(可回放) color: String width: Double toolType: Enum (pen, pencil, marker, eraser) opacity: Double } ``` ### 3.3 日历系统 - **月视图**:7×N 网格,心情色彩标记(心情点),日记标记点 - **周视图**:7 天概览,每日卡片展示日记缩略 - **时间轴**:按时间线展示当日日记条目 - **心情概览**:条形图统计本月各心情天数 ### 3.4 心情追踪 - 5 种标准化心情:😊开心、😐平静、😢难过、😡生气、🤔思考 - 天气标记:☀️晴、⛅多云、🌧雨、❄️雪、🍃风 - 心情趋势图:近7天/30天/3月 - 统计卡片:好心情占比、连续记录天数、天气分布、日记篇数 - 心情洞察:最佳心情日、开心触发因素、月度变化趋势 ### 3.5 班级系统(Phase 1 新增) #### 班级功能 - 老师创建班级 → 生成 6 位班级码 → 学生输入加入 - 班级成员列表(老师可管理) - 班级日记墙(展示所有已分享的日记) - 老师布置日记主题/作业(带截止时间) - 老师点评 + 评语通知 #### 分享机制 - 学生写完日记后自主选择:分享到班级 / 保持私密 - 分享后的日记出现在班级日记墙 - 老师可点评任意已分享日记 - 学生收到点评通知 ### 3.6 贴纸/模板系统 - 预装基础贴纸包(免费) - 扩展贴纸包下载(免费 + 付费) - 分类:热门/可爱/植物/天气/节日/手绘/校园/文字/和纸胶带 - 收藏夹功能 - 模板画廊:日/周/月视图模板、学生专属模板(考试复习/课程表/读书笔记/校园生活) ### 3.7 成就系统 - 连续记录徽章(7天/30天/100天) - 百篇日记徽章 - 贴纸达人徽章 - 年度记录徽章 - 解锁条件明确,视觉反馈清晰 ### 3.8 搜索系统 - 全文搜索日记内容 - 按标签搜索 - 按心情/天气筛选 - 模板搜索 - 搜索历史 + 热门搜索 ### 3.9 个人中心 - 头像 + 昵称 + 签名 - 统计:总日记数、连续天数、本月日记、使用贴纸数 - 成就徽章展示 - 设置:日记提醒、隐私锁、云同步、主题外观、数据导出、反馈、关于 --- ## 4. 视觉设计系统 ### 4.1 色彩 | Token | 浅色模式 | 深色模式 | 用途 | |-------|---------|---------|------| | bg | #FFF8F0 | #1A1614 | 页面背景(奶油白) | | surface | #FFFFFF | #2A2520 | 卡片/面板背景 | | fg | #2D2420 | #F0E8DF | 主文字 | | accent | #E07A5F | #E8907A | 主色调(珊瑚色) | | secondary | #81B29A | #8FBF9E | 辅助色(鼠尾草绿) | | tertiary | #F2CC8F | #D4B878 | 第三色(暖金) | | rose | #D4A5A5 | #C4A0A0 | 玫瑰粉 | ### 4.2 字体 - 显示字体:Quicksand / Nunito / SF Pro Rounded - 正文字体:Nunito - 手写体:Caveat / Kalam - 等宽字体:JetBrains Mono ### 4.3 设计要素 - 大圆角体系:10px / 16px / 22px / 28px / pill - 柔和阴影:soft / medium / float 三级 - 触摸目标最小 44px(WCAG 2.5.8) - 弹性动画曲线:cubic-bezier(0.34, 1.56, 0.64, 1) - 深色模式完整支持 --- ## 5. 技术架构 ### 5.1 技术栈 | 层级 | 技术方案 | 选型理由 | |------|---------|---------| | UI 框架 | Flutter 3.x | 跨平台、高性能自绘引擎 | | 状态管理 | flutter_bloc (BLoC) | 复杂交互场景、可测试性强 | | 本地存储 | Isar | 查询能力 + 全文搜索 + 内置加密 | | 手写绘制 | CustomPainter + perfect_freehand | 笔迹保真、压感支持、速度→线宽 | | 图表 | fl_chart | 功能完善、高度自定义 | | 主题 | ThemeData + ColorScheme | 官方支持、深色模式 | | 图片处理 | flutter_image_compress | 压缩存储 | | 路由 | go_router | 声明式路由、深链接支持 | | 网络 | dio + connectivity_plus | 云同步 + 离线检测 | | 数据模型 | freezed + json_serializable | 不可变、类型安全 | | 通知 | flutter_local_notifications | 日记提醒 | | 权限 | permission_handler | 相机/存储/通知 | | 导出 | pdf + screenshot + share_plus | 日记导出与分享 | | 日志 | logger | 调试与错误追踪 | ### 5.2 跨平台策略 - **Android / iOS**:Flutter 直接构建(Phase 1 首发) - **macOS / Windows**:Flutter 桌面端适配(响应式布局) - **HarmonyOS**:通过 ohos_flutter 社区方案适配 - **优先级**:Android/iOS → macOS/Windows → HarmonyOS ### 5.3 响应式布局 - 手机端(< 600px):单列布局,底部 TabBar - 平板端(600-1024px):双栏布局(列表+详情),侧边导航 - 桌面端(> 1024px):三栏布局(导航+列表+详情/编辑器) ### 5.4 数据架构 **离线优先 + 定时云同步**: - 所有数据优先写入 Isar 本地数据库,离线完全可用 - WiFi 环境下自动增量同步到云端(避免消耗学生流量) - 同步冲突策略:本地优先 → 云端合并 → 人工提示解决 - 班级分享数据通过云端推送(需网络),本地缓存离线可读 - 素材包:预装基础贴纸 + WiFi 下载扩展包 + 本地缓存管理 --- ## 6. 注册与安全 ### 6.1 注册流程 **班级用户(小学生)**: 1. 方式 A:输入老师提供的 6 位班级码 → 设置昵称+头像 → 加入班级 → 首次使用需家长授权 2. 方式 B:家长注册 → 为孩子创建子账号 → 绑定班级码 **独立用户(中学/成人)**: 1. 手机号 + 验证码注册 2. 第三方登录(微信/Apple/Google) 3. 选择年龄段标签 4. 直接使用全部功能 ### 6.2 儿童安全 **PIPL 合规(中国个人信息保护法)**: - 未满 14 岁必须取得父母/监护人同意(家长授权弹窗 + 短信/扫码确认) - 制定专门的儿童个人信息处理规则(单独隐私政策文档) - 收集信息最小必要(昵称+年级即可,无需真实姓名/身份证) - 家长有权查阅/更正/删除孩子的个人信息 - 账号注销后 30 天内删除所有数据 **数据安全**: - Isar 内置加密存储(日记内容 AES 加密) - 云同步 TLS 传输加密 - 照片加密本地存储 **内容安全**: - 敏感词本地词库过滤 - 分享前自动检查 - 老师可审核班级内容 - 家长可查看孩子日记(只读) --- ## 7. Phase 1 页面清单 基于原型稿,Phase 1 需实现的屏幕: ### 7.1 直接复用原型稿(需适配小学生内容) | 页面 | 原型文件 | 调整说明 | |------|---------|---------| | 启动页 | splash.html | 保持不变 | | 引导页 | onboarding.html | 内容调整为小学生向 | | 首页日记流 | home-daily.html | 移除"考研"等成人内容 | | 手账编辑器 | editor.html | 强化手写优先 | | 日历视图 | calendar.html | 保持不变 | | 周概览 | weekly.html | 保持不变 | | 月度概览 | monthly.html | 保持不变 | | 心情追踪 | mood-tracker.html | 保持不变 | | 贴纸素材库 | stickers.html | 增加校园主题贴纸 | | 模板画廊 | templates.html | 内容调整为小学生向 | | 搜索 | search.html | 保持不变 | | 个人中心 | profile.html | 增加家长关联/班级入口 | ### 7.2 Phase 1 新增页面 | 页面 | 说明 | |------|------| | 班级码加入 | 输入班级码 → 设置昵称头像 → 加入班级 | | 家长授权 | 弹窗 → 家长扫码/短信确认 → 授权完成 | | 班级主页 | 班级信息、成员列表、日记墙、老师布置的主题 | | 班级日记墙 | 瀑布流展示同学分享的日记 | | 老师布置主题 | 老师发布日记主题/作业(带截止时间) | | 老师点评 | 查看学生分享日记 → 写评语 | | 家长仪表板 | 查看孩子日记、使用报告、时间设置 | | 家长关联 | 扫码/短信绑定孩子账号 | ### 7.3 推迟到 Phase 2+ | 页面 | 原型文件 | 说明 | |------|---------|------| | 发现页 | discover.html | 社交功能,Phase 2 开放给中学生 | --- ## 8. 项目范围总结 ### Phase 1 MVP 范围(小学生版) - ✅ 完整手账编辑器(手写优先) - ✅ 日历/周/月视图 - ✅ 心情追踪系统 - ✅ 贴纸/模板系统(预装 + 扩展下载) - ✅ 班级系统(创建/加入/分享/点评) - ✅ 三角色(老师/学生/家长) - ✅ 成就系统 - ✅ 搜索系统 - ✅ 儿童安全与家长控制 - ✅ 深色模式 - ✅ Android + iOS 首发 - ❌ 发现页/社交功能(Phase 2) - ❌ 达人日记/热门话题(Phase 2+) - ❌ 高级数据分析(Phase 3) - ❌ macOS/Windows/HarmonyOS(Phase 1 后续) --- ## 9. 后端架构 — 基于 HMS ERP 基座 > **核心决策:复用 HMS 健康管理平台的 ERP 基座,以 Feature Flag 工作区模式加载暖记业务模块。** ### 9.1 架构策略:Feature Flag 工作区 采用 **单一仓库 + Cargo Workspace + Feature Flag** 模式: ``` hms/ # 一个仓库 ├── crates/ │ ├── erp-core/ # L1: 基座 — 事件·错误·trait │ ├── erp-auth/ # L2: 基座 — 用户·角色·权限·JWT │ ├── erp-config/ # L2: 基座 — 字典·菜单·设置 │ ├── erp-message/ # L2: 基座 — 消息·通知·推送 │ ├── erp-workflow/ # L2: 基座 — 工作流(可选) │ ├── erp-plugin/ # L2: 基座 — 插件运行时 │ │ │ ├── erp-diary/ # L2: 暖记业务 — 日记·班级·贴纸·心情 │ │ ├── src/entity/ # ~15 Entity(日记·班级·贴纸等) │ │ ├── src/service/ # ~12 Service(日记CRUD·同步·班级管理) │ │ ├── src/handler/ # ~10 Handler(REST API) │ │ └── src/event.rs # diary.created / diary.shared 等 │ │ │ ├── erp-health/ # L2: HMS 业务(feature flag 控制) │ ├── erp-ai/ # L2: HMS 业务(feature flag 控制) │ ├── erp-dialysis/ # L2: HMS 业务(feature flag 控制) │ │ │ └── erp-server/ # L3: Axum 入口,按 feature 组装模块 │ └── migration/ # SeaORM 迁移(基座 + 业务) ├── apps/ │ ├── web/ # HMS 管理后台(React SPA) │ └── nuanji-api/ # 暖记专用 API 网关(可选) └── Cargo.toml # Workspace root ``` **Feature Flag 控制**: ```toml # Cargo.toml (workspace) [workspace] members = [ "crates/erp-core", "crates/erp-auth", "crates/erp-config", "crates/erp-message", "crates/erp-workflow", "crates/erp-plugin", "crates/erp-diary", # 暖记业务模块 "crates/erp-server", ] # erp-server/Cargo.toml [features] default = ["diary"] diary = ["erp-diary"] health = ["erp-health"] ai = ["erp-ai"] dialysis = ["erp-dialysis"] full = ["diary", "health", "ai", "dialysis"] ``` **启动时按 feature 组装模块**: ```rust // erp-server/src/main.rs fn register_modules() -> Vec> { let mut modules: Vec> = vec![ Box::new(AuthModule), Box::new(ConfigModule), Box::new(MessageModule), ]; #[cfg(feature = "diary")] modules.push(Box::new(DiaryModule)); #[cfg(feature = "health")] modules.push(Box::new(HealthModule)); modules } ``` **部署实例**: - `cargo build --features diary` → 暖记后端(不含医疗模块) - `cargo build --features health,ai` → HMS 后端(不含日记模块) - `cargo build --features full` → 全功能实例 ### 9.2 技术栈(继承 HMS 基座) | 层级 | 技术方案 | 来源 | |------|---------|------| | 后端框架 | Axum 0.8 (Rust) | HMS 基座继承 | | ORM | SeaORM 1.1 | HMS 基座继承 | | 数据库 | PostgreSQL 16 | HMS 基座继承 | | 缓存 | Redis 7 | HMS 基座继承 | | 认证 | JWT + Argon2 + RBAC | HMS 基座继承(扩展角色) | | 加密 | AES-256-GCM + KEK/DEK | HMS 基座继承 | | 事件 | EventBus + Outbox | HMS 基座继承 | | 文件存储 | 阿里云 OSS / 腾讯云 COS | 新增(贴纸/照片) | | 推送 | 极光推送 / 个推 | 新增(老师点评通知) | | 短信 | 阿里云短信 | HMS 基座继承 | | CDN | 阿里云 CDN | 新增(贴纸包分发) | | API 文档 | utoipa (OpenAPI) | HMS 基座继承 | > **数据本地化**:儿童个人信息必须存储在中国境内服务器。HMS 已支持多租户 + 租户独立加密密钥。 ### 9.3 基座继承能力 vs 新增开发 | 能力 | 来源 | 工作量 | |------|------|--------| | 用户/角色/权限 CRUD | erp-auth 继承 | ✅ 零开发 | | JWT 认证 + Token 轮换 | erp-auth 继承 | ✅ 零开发 | | RBAC 权限码守卫 | erp-auth 继承 | ✅ 零开发 | | 组织/部门/岗位 | erp-auth 继承 | ✅ 零开发 | | 事件总线 + Outbox | erp-core 继承 | ✅ 零开发 | | 字典/菜单/设置 | erp-config 继承 | ✅ 零开发 | | 消息/通知/模板 | erp-message 继承 | ✅ 零开发 | | PII 加密 + 盲索引 | erp-core 继承 | ✅ 零开发 | | 审计日志 | erp-core 继承 | ✅ 零开发 | | 多租户隔离 | erp-core 继承 | ✅ 零开发 | | SeaORM 迁移框架 | erp-server 继承 | ✅ 零开发 | | OpenAPI 文档生成 | utoipa 继承 | ✅ 零开发 | | 测试框架 | HMS 基座继承 | ✅ 零开发 | | student/teacher/parent 角色 | erp-auth 扩展 | 🆕 ~200 行 | | 班级码认证 | erp-auth 扩展 | 🆕 ~500 行 | | 家长扫码绑定 | 新增 service | 🆕 ~400 行 | | 日记 CRUD + 同步 | erp-diary 新增 | 🆕 ~2000 行 | | 班级管理 | erp-diary 新增 | 🆕 ~800 行 | | 贴纸/模板管理 | erp-diary 新增 | 🆕 ~600 行 | | 心情/统计 API | erp-diary 新增 | 🆕 ~500 行 | | 内容安全过滤 | erp-diary 新增 | 🆕 ~300 行 | | 文件上传(照片/贴纸) | 参考健康模块 | 🆕 ~500 行 | | **合计新增** | | **~5800 行 Rust** | ### 9.4 核心后端模块(erp-diary) 1. **日记服务**:日记 CRUD、元素管理、增量同步、版本号冲突检测、软删除 2. **手写数据服务**:笔画矢量存储、按需加载(大字段独立表)、导出为图片 3. **班级服务**:创建班级、生成班级码、成员管理、班级码安全(有效期+次数限制+锁定) 4. **主题布置服务**:老师发布/管理日记主题、学生提交关联、完成度统计 5. **点评服务**:老师评语、通知推送(继承 erp-message) 6. **家长绑定服务**:扫码/短信验证、绑定关系管理、只读权限控制 7. **素材服务**:贴纸包管理、下载统计、Phase 1 全免费 8. **心情统计服务**:心情趋势、统计卡片、洞察分析 9. **内容安全服务**:敏感词过滤(含谐音/拼音变体检测)、图片安全标注 10. **成就服务**:成就规则引擎、徽章解锁、通知 ### 9.5 基座优化同步策略 由于所有项目共享一个仓库: - 基座层的 Bug 修复或优化只提交一次 - 所有 feature 配置的构建自动受益 - CI 按矩阵运行:`--features diary` + `--features health` 等组合 - 迁移文件统一管理,按序号递增(暖记迁移从 m000166 开始) --- ## 10. 完整数据模型(评审补充) ### 10.1 用户与角色 ``` User { id: String (UUID) role: Enum (teacher, student, parent, independent) nickname: String avatarUrl: String? phone: String? // 独立用户/家长/老师必须有 gradeLevel: Int? // 学生年级 (1-6) ageGroup: String? // 独立用户年龄段标签 parentAuthorized: Boolean // 未满14岁需家长授权 createdAt: DateTime settings: UserSettings } UserSettings { theme: Enum (light, dark, system) reminderEnabled: Boolean reminderTime: String // "21:00" privacyLockEnabled: Boolean syncOnWifiOnly: Boolean language: String // "zh-CN" } TeacherProfile { userId: String schoolName: String? verificationStatus: Enum (pending, verified, rejected) // 老师身份验证:教师证上传 或 学校邮箱验证 } ParentChildBinding { id: String parentId: String childId: String verificationMethod: Enum (qrcode, sms) status: Enum (active, revoked) createdAt: DateTime } ``` ### 10.2 班级 ``` Class { id: String name: String // "三年级2班" schoolName: String? teacherId: String // 创建者/班主任 classCode: String // 6位字母数字混合(安全性优于纯数字) codeExpiresAt: DateTime? // 班级码有效期(学期结束自动失效) codeMaxUses: Int? // 班级码最大使用次数 memberCount: Int createdAt: DateTime isActive: Boolean // 学期结束后可归档 } ClassMember { classId: String userId: String role: Enum (teacher, student) joinedAt: DateTime isActive: Boolean } ``` ### 10.3 日记(完整模型) ``` JournalEntry { id: String (UUID) authorId: String // 明确谁写的 classId: String? // 所属班级(可选) title: String date: DateTime mood: Enum (happy, calm, sad, angry, thinking) weather: Enum (sunny, cloudy, rainy, snowy, windy) elements: List tags: List // 分享状态 isPrivate: Boolean // true = 仅自己可见 sharedToClass: Boolean // 是否已分享到班级 sharedAt: DateTime? // 分享时间 assignedTopicId: String? // 关联老师布置的主题 // 元数据 version: Int // 版本号(同步冲突检测) createdAt: DateTime updatedAt: DateTime deletedAt: DateTime? // 软删除 } ``` ### 10.4 主题布置与点评 ``` TopicAssignment { id: String classId: String teacherId: String title: String // "今天我观察了..." description: String? deadline: DateTime? createdAt: DateTime isActive: Boolean } Comment { id: String journalEntryId: String authorId: String // 点评者(老师) content: String createdAt: DateTime } ``` ### 10.5 素材与成就 ``` StickerPack { id: String name: String category: String stickerCount: Int price: Decimal // 0 = 免费 downloadUrl: String version: Int } Achievement { id: String name: String description: String iconEmoji: String condition: String // "streak_days >= 7" } UserAchievement { userId: String achievementId: String earnedAt: DateTime } ``` --- ## 11. 安全与合规补充(评审补充) ### 11.1 老师注册流程 1. 下载 app → 选择"我是老师" 2. 注册:手机号 + 验证码 3. 身份验证(二选一): - **方式 A**:上传教师证照片 → 人工审核(1-3工作日) - **方式 B**:学校教育邮箱验证(.edu.cn 后缀) 4. 审核通过后可创建班级 ### 11.2 PIPL 合规补充 - **监护人可验证性**:家长需提供手机号(运营商实名)+ 短信验证码确认身份 - **儿童个人信息影响评估**:上线前完成《个人信息保护影响评估报告》 - **数据本地化**:所有服务器部署在中国境内(阿里云/腾讯云) - **家长数据管理权**:家长仪表板提供导出/更正/删除孩子数据功能 - **儿童隐私政策**:使用通俗易懂的语言编写,配有图示说明 - **账号注销**:注销后 30 天内删除所有关联数据 ### 11.3 班级码安全机制 - 6 位字母数字混合(62^6 ≈ 568 亿种组合) - 班级码有效期(默认学期结束自动失效) - 老师可随时重置班级码 - 连续 5 次输入错误后锁定 30 分钟 - 可选开启"加入需老师审批"模式 ### 11.4 Phase 1 贴纸付费策略 - **Phase 1 全部免费**:避免儿童支付合规问题 - 预装 3-5 个基础贴纸包 - 限时活动赠送主题贴纸包 - **Phase 2** 再引入付费机制(家长代付) ### 11.5 内容安全方案 - **文字**:本地敏感词库 + 服务端 AI 内容检测(含谐音/拼音变体) - **图片**:服务端 AI 安全标注(检测不当图片) - **分享审核**:可配置"老师审核后才能分享到班级" - **举报机制**:学生/老师可举报不当内容 --- ## 12. 字体与中文化补充(评审补充) ### 12.1 中文字体方案 | 用途 | 浅色字体 | 回退方案 | |------|---------|---------| | 显示字体 | 思源黑体 (Noto Sans SC) / 阿里巴巴普惠体 | PingFang SC (iOS) / 系统默认 | | 正文 | Noto Sans SC / 系统默认 | 各平台系统字体 | | 手写风格 | 漫漫字 / 手写体 | Caveat (英文手写部分) | > Flutter 可通过 Google Fonts 加载 Noto Sans SC,确保中文排版美观一致。 ### 12.2 perfect_freehand 技术确认 `perfect_freehand` 有 Dart/Flutter 原生移植版本(`perfect_freehand` pub.dev 包),可直接在 Flutter 中使用,无需 JS interop。 --- ## 13. 性能目标(评审补充) | 指标 | 目标值 | |------|--------| | App 冷启动 | < 2 秒 | | 日记列表滚动 | 60fps 稳定 | | 手写延迟 | < 16ms(触控到渲染) | | 照片压缩后质量 | ≥ 85% SSIM | | 单篇日记本地存储 | < 5MB(含照片) | | 本地数据库上限 | 500MB(超限提示清理) | | 云同步单次数据量 | < 10MB | | 贴纸包大小 | < 5MB/包 | --- *本文档为暖记 (Warm Notes) Phase 1 产品设计规格,基于原型稿分析与头脑风暴讨论整理。* *评审版本:v1.1 — 补充后端架构、完整数据模型、安全合规、性能目标* *v1.2 — 后端架构从 NestJS 方案替换为 HMS ERP 基座 (Rust/Axum) + Feature Flag 工作区模式*