课程表 App 产品需求文档(PRD)
| 项 | 内容 |
|---|---|
| 产品名称 | 课表 · ClassSchedule |
| 文档版本 | v1.0.0 |
| 策划日期 | 2026-07-03 |
| 文档状态 | 评审通过,进入开发 |
| 主笔角色 | 资深产品策划师 |
| 技术方案 | Flutter 跨平台(Android / iOS / HarmonyOS) |
| 数据方案 | 本地优先 + 云同步(账号体系预留) |
0. 修订记录
| 版本 | 日期 | 角色 | 摘要 |
|---|---|---|---|
| v1.0.0 | 2026-07-03 | 产品策划师 | 首版,确立 MVP 范围、设计规范与技术架构 |
1. 产品概述
1.1 背景与机会
学生群体对「课程表」有高频刚需,但市面产品普遍存在三类痛点:
- 录入繁琐:多数 App 需手动逐节填写,缺乏从教务系统 / 课表图片 / 文件批量导入;
- 信息孤岛:课程、作业、考试、提醒分散在不同 App,缺少统一的时间轴视图;
- 体验陈旧:Material / 旧拟物风为主,缺乏与现代系统(尤其 iOS 26 Liquid Glass、HarmonyOS 星河)一致的沉浸式视觉。
1.2 产品定位
一款「轻量、好看、闭环」的学生时间管理中枢——以课程表为轴心,把课节、作业、考试、提醒统一到一张液态玻璃质感的日历视图上。
- 一句话定位:「让每一节课都被温柔提醒」。
- 核心心智:好看 → 好用 → 离不开。
1.3 目标用户
| 画像 | 占比预估 | 核心诉求 |
|---|---|---|
| 高校在校生(本/专科、硕博) | 70% | 周课表、单双周、考试倒计时、作业 DDL |
| 高中生 | 15% | 固定课表、晚自习、走班 |
| 教师 / 进修学员 | 10% | 多班级排课、跨校区 |
| 自我提升者(考证/网课) | 5% | 自定义时间段、任务提醒 |
1.4 核心价值主张(KSP)
- 零摩擦录入:支持手动 / 课表图片 OCR / 教务系统 / Excel / ICS 多通道建表;
- 统一时间轴:课程、作业、考试同屏呈现,今日「下一节」常驻可见;
- iOS 26 液态玻璃:跨三端统一的玻璃材质、流体动效、自适应明暗;
- 本地优先:全功能离线可用,云同步可选且可关闭,隐私可控。
2. 市场与竞品速览
| 竞品 | 优势 | 短板(我们的机会) |
|---|---|---|
| 超级课程表 | 教务导入生态强 | 广告多、UI 陈旧、隐私争议 |
| 课程表精灵 | 小巧 | 功能单一、无作业闭环 |
| WakeUp 课表 | 纯净、桌面组件好 | 无 iOS 原生、无任务管理 |
| 系统日历 | 通用 | 不懂「单双周/课节」,体验机械 |
差异化:用 iOS 26 液态玻璃的视觉降维 + 「课表+任务+考试」闭环做体验领先。
3. 功能架构
3.1 功能架构图
课表 ClassSchedule
├── 课表核心
│ ├── 周/日/月视图
│ ├── 课节网格(1-12 节,可配置)
│ ├── 当前课高亮 &「下一节」
│ ├── 空闲教室/时段查找
│ └── 单双周 & 自定义周次
├── 课程管理
│ ├── 课程 CRUD
│ ├── 上课时间(周次×节次×单双周)
│ ├── 教师 / 地点 / 颜色 / 图标 / 备注
│ └── 冲突检测(时间/地点)
├── 学期管理
│ ├── 开学日期 & 总周数
│ ├── 当前周 & 周次切换
│ └── 多学期归档
├── 任务与考试
│ ├── 作业(关联课程、DDL、状态)
│ ├── 考试安排(地点、座位、倒计时)
│ └── 提醒(本地通知)
├── 桌面小组件 / 今日
│ ├── 今日课程卡片
│ └── 下节课快览
├── 我的 / 设置
│ ├── 外观(主题色、明暗、玻璃强度、课表样式)
│ ├── 作息时间表(节次起止)
│ ├── 数据(导入/导出/备份/迁移)
│ ├── 账号与同步(预留)
│ └── 关于与反馈3.2 功能优先级
| 级别 | 含义 | 功能 |
|---|---|---|
| P0(MVP 必做) | 上线门槛 | 周视图、课程 CRUD、学期与周次、单双周、当前课高亮、作业与考试 CRUD、本地提醒、深浅色与玻璃主题、数据导入导出(JSON/ICS) |
| P1(首版增强) | 上线后 1 个迭代 | 日/月视图、桌面小组件、课表图片导入、空闲查找、多主题色、备份与迁移 |
| P2(演进) | 规划中 | 教务系统对接、账号云同步、AI 课表识别、协作共享、iPad/折叠屏自适应 |
本文档与本次开发以 P0 全量 + P1 部分(桌面小组件、空闲查找) 为交付目标。
4. 详细功能说明
4.1 课表核心(F-CORE)
F-CORE-01 周视图(主页)
- 形态:7 列(周一~周日)× N 行(默认 1~11 节,可配)的网格;顶部日期条,左侧节次轴。
- 交互:
- 左右滑动切换相邻周;双指捏合可缩放节高(持久化)。
- 点击空白格 → 快速建课;点击课程块 → 详情抽屉(液态玻璃 bottom sheet)。
- 长按课程块 → 拖拽改时间(P1)/ 复制到其他周。
- 状态:
- 当前节:呼吸光晕 + 高亮边框;
- 今日列:整列顶部用主题色点缀;
- 跨多节的课:纵向合并为一个块,中间显示课名。
- 空状态:首次进入引导「新建课程 / 导入课表」。
验收:60 FPS 滑动;切周无白屏(预渲染相邻页)。
F-CORE-02 日视图 / 月视图(P1,本次做骨架)
- 日视图:单日时间轴 + 今日全部课节与任务;
- 月视图:月历,每日格子用圆点/迷你色块表示有课。
F-CORE-03 「下一节」与「今日」
- 主页顶部常驻一张玻璃卡片:显示「下一节课名 / 距开始 X 分钟 / 地点」;
- 下课后自动切到「下一节」。
F-CORE-04 空闲时段查找(P1)
- 选定若干同学/课程后,计算共同空闲节次与空教室(需教室数据,本地维护)。
4.2 课程管理(F-COURSE)
| 字段 | 说明 | 约束 |
|---|---|---|
| name | 课程名 | 必填,1~20 字 |
| teacher | 教师 | 选填 |
| location | 上课地点 | 选填 |
| color | 主题色(12 色板) | 必选,默认按 hash 分配 |
| icon | 图标 emoji | 选填 |
| remark | 备注 | 选填,≤200 字 |
| weeks | 上课周次集合 | 必填,如 1-16 周、单周、双周 |
| dayOfWeek | 周几 | 1~7 |
| startPeriod / endPeriod | 起止节次 | 1~maxPeriod |
| type | 单双周 | every / odd / even |
- 冲突检测:同一周次 × 周几 × 节次区间相交 → 阻止并提示「与《X》冲突」;同地点冲突仅警告。
- 批量操作:复制到多周、删除整门课(联动清理任务)。
4.3 学期管理(F-TERM)
- 字段:名称、开学日期(周一)、总周数(默认 20)、当前周(自动推算,可手动覆盖)。
- 多学期:归档旧学期,切换不丢数据。
- 周次跳转:点击周条 → 滑块/输入跳转到任意周。
4.4 任务与考试(F-TASK)
作业
- 字段:标题、关联课程(选填)、类型(作业/小测/项目)、DDL、优先级、状态(待办/进行中/完成)、备注。
- 排序:按 DDL 升序;逾期标红。
- 完成动画:液态玻璃勾选 + 触感反馈。
考试
- 字段:科目(关联课程)、日期时间、时长、地点、座位号、备注。
- 首页「考试倒计时」入口,按最近一场排序。
4.5 提醒(F-NOTIFY)
- 本地通知(
flutter_local_notifications):- 上课前 N 分钟(默认 10,可全局/单课配置);
- 作业 DDL 前 N 小时 / 当天;
- 考试前 1 天 + 当天早晨。
- 免打扰:按作息自动静默夜间;勿扰时段可配。
- 权限:首次进入「提醒」页统一申请通知权限,拒绝后给出降级文案与设置跳转。
4.6 外观与设置(F-SET)
- 主题模式:跟随系统 / 浅色 / 深色;
- 主题色:12 色动态取色(玻璃着色随之变化);
- 玻璃强度:弱/中/强(影响模糊半径,低端机自动降级为纯色卡片);
- 课表样式:网格 / 列表 / 紧凑;
- 作息时间表:每节起止时间,可整体套用模板(高校通用模板);
- 数据:导出 JSON / ICS / 截图分享;导入 JSON;本地备份与恢复;
- 账号与同步(预留入口,灰色「即将上线」)。
4.7 数据导入导出(F-IO)
- 导出:JSON(全量,含版本号)、ICS(写入系统日历)、长图分享。
- 导入:JSON(校验 schema 版本,失败回滚)。
- 教务/OCR:P2。
5. 非功能需求(NFR)
| 维度 | 指标 |
|---|---|
| 性能 | 冷启 ≤1.5s(中端机);周视图滑动 ≥58 FPS;课表 200 节内首屏 ≤300ms |
| 兼容 | Android 8.0+ / iOS 14+(iOS 26 玻璃在 26 上原生级,低版本优雅降级)/ HarmonyOS NEXT |
| 存储 | 安装包 ≤25MB;本地库单库 ≤10MB |
| 续航 | 通知与「下一节」计算不常驻后台服务,依赖系统调度 |
| 隐私 | 本地优先;同步默认关闭;隐私政策与权限说明齐全 |
| 可访问性 | 支持系统字体缩放;对比度满足 WCAG AA;语义标签齐全 |
| 国际化 | 预留 i18n(zh-CN / en),首版仅中文 |
| 安全 | 导出文件不包含敏感信息明文口令;同步预留端到端加密接口 |
6. 信息架构与导航
主导航(移动端左侧滑出菜单 / 宽屏左侧玻璃栏)
├── 课表(F-CORE) ← 默认主页
├── 任务(F-TASK) ← 作业/考试聚合
├── 宠物(F-PET) ← 学习陪伴与成长反馈
├── 日历(F-CORE-02) ← 月视图 + 今日(P1)
└── 我的(F-SET)- 顶部:主菜单按钮 + 周条 + 「下一节」玻璃卡 + 学期切换;
- 全局:长按首页空白 → 快速建课;右下悬浮按钮(FAB)→ 新建任务/课程。
7. 设计规范(摘要)
详见 DESIGN-SPEC.md。
- 设计语言:iOS 26 Liquid Glass(液态玻璃)—— 半透明、折射模糊、动态明暗、胶囊圆角、流体边缘高光。
- 三端一致:同一套 Design Token(颜色、字号、圆角、模糊、间距、动效曲线)。
- 降级策略:iOS<26 / 低端 Android / 鸿蒙低性能机 → 用纯色卡片 + 轻模糊替代实时光晕。
8. 数据模型(ER 摘要)
详细字段与关系见 TECH-ARCH.md 第 3 节。
Term 1 ──< Course >── 1 Schedule? (一门课在多周多节有多个排期片段)
Course 1 ──< Task
Course 1 ──< Exam
AppSettings 1核心表:terms、courses、schedule_slots(周次×节次片段)、tasks、exams、settings、periods(作息)。
9. 技术架构(摘要)
- 框架:Flutter 3.41(Dart 3.11),单码库出 Android/iOS,HarmonyOS 经社区
flutter_harmony适配。 - 状态管理:Riverpod(编译期安全、可测)。
- 本地存储:Drift(SQLite),类型安全 + 响应式流。
- 路由:go_router(声明式、深链接)。
- 通知:flutter_local_notifications + flutter_timezone。
- 同步预留:数据模型含
userId / updatedAt / syncState字段;仓储层抽象RemoteSyncClient,本期接NoopSyncClient。 - 分层:
presentation → application(riverpod) → domain → data(drift)。
详见 TECH-ARCH.md。
10. 三端差异与适配
| 维度 | Android | iOS | HarmonyOS |
|---|---|---|---|
| 液态玻璃 | RenderEffect.blur + 自绘高光 | iOS26 原生 backdropFilter;低版本 UIVisualEffectView | backdropBlur + backgroundBlurStyle |
| 桌面组件 | AppWidget(glazewidget) | WidgetKit | HarmonyOS Service Widget |
| 通知 | 通知渠道 + 精确闹钟权限 | UserNotifications | AdvancedNotification |
| 字体 | 系统默认 / 思源 | SF Pro | HarmonyOS Sans |
| 状态栏 | edge-to-edge + 安全区 | safe area | 避让手势条 |
| 适配重点 | 折叠屏/大屏响应式 | Dynamic Island / 灵动岛附近的「下一节」 | 一多(one-more)布局 |
鸿蒙端:本期以 Flutter 适配出包为主,原生 ArkTS 增强(桌面卡片)列入 P2。
11. 里程碑与发布计划
| 里程碑 | 内容 | 状态 |
|---|---|---|
| M0 策划定稿 | 本 PRD + 设计规范 + 架构 | ✅ 当前 |
| M1 MVP 开发 | P0 全量 + 玻璃主题 | 进行中 |
| M2 内部审查 | 产品+测试审查、缺陷修复 | 待启动 |
| M3 灰度 | TestFlight / 内测分发 | 待启动 |
| M4 上线 | 应用商店上架(三端) | 待启动 |
12. 验收标准(上线门槛)
- 功能:P0 全部用例通过(见测试专家用例集);无 P0/P1 缺陷。
- 性能:满足第 5 节 NFR;低端机(如 Android 8 / 4GB)冷启 ≤2s、滑动不卡顿。
- 视觉:三端关键页通过液态玻璃走查(模糊/圆角/明暗/动效),降级路径生效。
- 数据:导入导出往返一致;杀进程后状态无丢失。
- 通知:上课前 / DDL / 考试提醒准时触发;权限拒绝有降级。
- 安全/隐私:权限最小化;隐私政策齐全。
13. 风险与对策
| 风险 | 等级 | 对策 |
|---|---|---|
| iOS 26 玻璃在低版本/安卓难还原 | 中 | 自研 GlassContainer 组件 + 降级策略 + Token 化 |
| 鸿蒙 Flutter 适配成熟度 | 中 | 以官方 stable 出包,ArkTS 原生增强延后 |
| 教务导入版权/接口 | 低 | P2,先做通用 JSON/ICS |
| 通知后台被杀(国产 ROM) | 高 | 引导加白名单 + 精确闹钟 + 重要事项双保险 |
本文档为后续开发、审查、修复的唯一基准。任何范围变更须经评审并更新修订记录。