Skip to content

Latest commit

 

History

History
391 lines (313 loc) · 14.4 KB

File metadata and controls

391 lines (313 loc) · 14.4 KB

轻屿课表 - 产品文档

存档说明: 本文档为早期产品规划记录,细节可能滞后于当前版本。 请以 README.mddocs/releases/ 与应用内功能为准。 最后校对:2026-07-07(当前主线约 v2.0)。

文档信息

项目 内容
产品名称 轻屿课表
文档版本 存档(原 v1.1.x 规划)
更新日期 2026-07-07
目标平台 Android (小米 HyperOS / 澎湃OS)

一、产品概述

1.1 产品定位

一款专为大学生设计的课程表应用,支持小米澎湃OS超级岛(Live Activities)功能,让用户在不打开应用的情况下即可查看当前课程信息。

1.2 目标用户

  • 在校大学生
  • 研究生
  • 需要管理课程时间的教育工作者

1.3 核心价值

  • 便捷性:一目了然的课程表视图
  • 实时性:通过小米超级岛实时显示当前课程
  • 个性化:支持自定义课程颜色和时间设置
  • 独立性:支持多个课表分别维护自己的课程与设置

二、功能需求

2.1 课程管理

功能 描述 优先级
添加课程 输入课程名称、教师、地点、时间等信息 P0
编辑课程 修改已有课程的所有信息 P0
删除课程 删除不需要的课程 P0
课程颜色 为不同课程设置不同颜色标识 P1

2.2 课程表展示

功能 描述 优先级
周次切换 支持按学期周数配置查看 P0
多课表切换 支持多个独立课表的快速切换与管理 P0
日视图 按天展示课程列表 P1
周视图 网格形式展示整周课程 P0
当前周高亮 标记当前正在进行的课程 P1

2.3 小米超级岛

功能 描述 优先级
实时显示 显示当前正在进行的课程 P0
下一节课 预告下一节课信息 P0
自动更新 课程结束后自动切换显示 P0
点击跳转 点击通知打开应用 P1

2.4 数据管理

功能 描述 优先级
本地存储 使用SharedPreferences持久化数据 P0
数据备份 导出当前课表数据为JSON P1
数据恢复 覆盖当前课表或导入为新课表 P1

三、用户场景

场景一:添加新学期课程

用户:小明,大三学生
时间:新学期开学前
操作:
1. 打开应用
2. 点击右上角"+"按钮
3. 输入"高等数学"课程信息
4. 设置周一 1-2节,张教授,教301
5. 设置第1-16周
6. 保存课程

场景二:上课时查看课程信息

用户:小红,正在去教室的路上
时间:周一上午 7:55
操作:
1. 亮屏手机
2. 在小米超级岛上看到:
   - 当前课程:高等数学
   - 教室:教301
   - 时间:8:00-9:40
   - 下一节:大学英语 10:00
3. 直接前往教室,无需打开应用

场景三:查看本周课程安排

用户:小刚,周日晚上规划下周学习
时间:周日 21:00
操作:
1. 打开应用
2. 查看本周课程表网格
3. 切换到下周查看课程变化
4. 根据课程安排制定学习计划

四、界面设计

4.1 主界面

┌─────────────────────────────────────┐
│  课程表                    [今天][+] │
├─────────────────────────────────────┤
│     < 第 3 周 >                      │
├─────┬─────┬─────┬─────┬─────┬─────┬─────┤
│节次 │ 周一 │ 周二 │ 周三 │ 周四 │ 周五 │ 周六 │ 周日 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 1   │     │     │     │     │     │     │     │
│08:00│ 高数│     │ 英语│     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 2   │     │     │     │     │     │     │     │
│08:55│ 高数│     │ 英语│     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 3   │     │ 物理│     │ 编程│     │     │     │
│10:00│     │     │     │     │     │     │     │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ ... │     │     │     │     │     │     │     │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘

4.2 添加课程界面

┌─────────────────────────────────────┐
│  < 添加课程                      保存 │
├─────────────────────────────────────┤
│ 基本信息                            │
│ ┌─────────────────────────────────┐ │
│ │ 课程名称 *                      │ │
│ │ [高等数学___________________]   │ │
│ ├─────────────────────────────────┤ │
│ │ 授课教师                        │ │
│ │ [张教授_____________________]   │ │
│ ├─────────────────────────────────┤ │
│ │ 上课地点                        │ │
│ │ [教301______________________]   │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 上课时间                            │
│ ┌─────────────────────────────────┐ │
│ │ 星期 [周一 ▼]  开始节 [1 ▼]    │ │
│ │ 结束节 [2 ▼]                   │ │
│ │ 时间: 08:00 - 09:40            │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 周次设置                            │
│ ┌─────────────────────────────────┐ │
│ │ 开始周 [第1周 ▼] 结束周 [第16周▼]│ │
│ │ [ ] 单周  [ ] 双周              │ │
│ └─────────────────────────────────┘ │
│                                     │
│ 课程颜色                            │
│ ┌─────────────────────────────────┐ │
│ │ [■][■][■][■][■][■][■][■][■]    │ │
│ │ 蓝 绿 橙 粉 紫 青 红 棕 灰     │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘

4.3 小米超级岛显示

┌─────────────────────────────────────┐
│  ┌─────────────────────────────┐   │
│  │ 📚 高等数学                 │   │
│  │ 📍 教301 | 👨‍🏫 张教授        │   │
│  │ ⏰ 08:00 - 09:40            │   │
│  │ ─────────────────────────── │   │
│  │ 下一节: 大学英语 (10:00)    │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘

五、数据模型

5.1 课程数据结构

{
  "id": "uuid-string",
  "name": "高等数学",
  "teacher": "张教授",
  "location": "教301",
  "dayOfWeek": 1,
  "startSection": 1,
  "endSection": 2,
  "startTime": "08:00",
  "endTime": "09:40",
  "color": "#2196F3",
  "startWeek": 1,
  "endWeek": 16,
  "isOddWeek": false,
  "isEvenWeek": false
}

5.2 字段说明

字段 类型 说明
id String 唯一标识符 (UUID)
name String 课程名称
teacher String 授课教师
location String 上课地点
dayOfWeek int 星期几 (1-7)
startSection int 开始节次 (1-10)
endSection int 结束节次 (1-10)
startTime String 开始时间 (HH:mm)
endTime String 结束时间 (HH:mm)
color String 颜色代码 (#RRGGBB)
startWeek int 开始周次
endWeek int 结束周次
isOddWeek bool 是否单周
isEvenWeek bool 是否双周

六、技术架构

6.1 系统架构图

┌─────────────────────────────────────────────────┐
│                   Flutter UI                    │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ 课程表页 │ │ 添加课程 │ │    课程卡片      │ │
│  └──────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────┤
│              State Management                  │
│                 (Provider)                     │
├─────────────────────────────────────────────────┤
│                  Services                      │
│  ┌──────────────────┐ ┌──────────────────────┐ │
│  │  StorageService  │ │ MiuiLiveActivities   │ │
│  │ (SharedPreferences)│ │    (MethodChannel)   │ │
│  └──────────────────┘ └──────────────────────┘ │
├─────────────────────────────────────────────────┤
│               Platform Layer                   │
│  ┌──────────────────────────────────────────┐  │
│  │  Android Native (NotificationManager)    │  │
│  └──────────────────────────────────────────┘  │
└─────────────────────────────────────────────────┘

6.2 技术选型

组件 技术方案 说明
UI框架 Flutter 跨平台UI框架
状态管理 Provider 轻量级状态管理
本地存储 SharedPreferences 键值对存储
平台通信 MethodChannel Flutter与原生通信
通知实现 Android Notification 小米超级岛底层

6.3 项目结构

lib/
├── main.dart                    # 应用入口
├── models/
│   └── course.dart              # 课程数据模型
├── providers/
│   └── timetable_provider.dart  # 状态管理
├── screens/
│   ├── timetable_screen.dart    # 主界面
│   └── add_course_screen.dart   # 添加课程
├── services/
│   ├── storage_service.dart     # 存储服务
│   └── miui_live_activities_service.dart  # 超级岛服务
└── widgets/
    └── course_card.dart         # 课程卡片组件

七、权限说明

7.1 Android权限

权限 用途 必要性
POST_NOTIFICATIONS 发送通知 (Android 13+) 必需
VIBRATE 通知振动 可选
FOREGROUND_SERVICE 前台服务 可选

7.2 权限申请时机

  1. 首次启动:申请通知权限
  2. 首次显示超级岛:确保通知渠道创建成功

八、兼容性

8.1 系统要求

平台 最低版本 推荐版本
Android 8.0 (API 26) 小米澎湃OS
Flutter SDK 3.0.0 3.27.0+

8.2 设备支持

设备 超级岛支持 备注
小米澎湃OS设备 ✅ 完全支持 推荐使用
其他Android设备 ⚠️ 仅通知 无超级岛效果
iOS设备 ❌ 不支持 需单独适配

九、版本规划

v1.0.0 (当前版本)

  • ✅ 基础课程表功能
  • ✅ 课程增删改查
  • ✅ 小米超级岛支持
  • ✅ 本地数据存储

v1.1.0 (计划中)

  • 📋 课程数据导入/导出
  • 📋 课表分享功能
  • 📋 桌面小组件

v1.2.0 (计划中)

  • 📋 教务系统对接
  • 📋 自动导入课程
  • 📋 课程提醒通知

v2.0.0 (远期规划)

  • 📋 iOS Live Activities支持
  • 📋 多学期管理
  • 📋 云同步功能

十、风险评估

风险 影响 应对措施
小米超级岛API变更 功能失效 关注小米开发者文档,及时更新
Android版本兼容性 部分设备无法使用 设置最低API版本,做好兼容处理
数据丢失 用户课程丢失 建议实现数据备份功能

附录

A. 参考文档

B. 术语解释

术语 说明
超级岛 小米澎湃OS的实时活动显示功能
节次 大学课程的时间单位,通常1节=45分钟
单双周 部分课程隔周上课的安排方式