mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 00:54:26 +08:00
102 lines
2.6 KiB
Markdown
102 lines
2.6 KiB
Markdown
# 课程表组件功能优化规格说明书
|
|
|
|
## Why
|
|
|
|
当前课程表组件存在以下问题:
|
|
1. 单双周课程解析逻辑存在缺陷,无法正确识别单周/双周/每周模式
|
|
2. 课程无法动态移动,第一列始终显示进行中的课程,但存在无法正常移动的问题
|
|
3. 缺少用户拖动交互功能
|
|
4. 缺少拖动后的自动复位机制
|
|
|
|
## What Changes
|
|
|
|
- 修复 ClassIsland 课程单双周解析逻辑
|
|
- 实现课程动态移动机制(当前课程结束自动上移)
|
|
- 实现课程表上下拖动交互功能
|
|
- 实现自动复位功能(课程结束后视图复位到最新进行中课程)
|
|
|
|
## Impact
|
|
|
|
### Affected specs
|
|
- 课程表组件功能规范
|
|
|
|
### Affected code
|
|
- `Services/ClassIslandScheduleDataService.cs` - 课表解析服务
|
|
- `Views/Components/ClassScheduleWidget.axaml.cs` - 课表组件
|
|
|
|
---
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: 单双周课程解析
|
|
|
|
系统 SHALL 能够正确解析包含单双周信息的课程数据。
|
|
|
|
#### Scenario: 单周课程
|
|
- **WHEN** 课程设置为单周上课
|
|
- **THEN** 课程仅在单周显示
|
|
|
|
#### Scenario: 双周课程
|
|
- **WHEN** 课程设置为双周上课
|
|
- **THEN** 课程仅在双周显示
|
|
|
|
#### Scenario: 每周课程
|
|
- **WHEN** 课程设置为每周上课
|
|
- **THEN** 课程在所有周显示
|
|
|
|
---
|
|
|
|
### Requirement: 课程动态移动
|
|
|
|
系统 SHALL 实现课程的动态移动机制。
|
|
|
|
#### Scenario: 课程结束自动上移
|
|
- **WHEN** 当前进行中的课程结束
|
|
- **THEN** 课程列表自动向上移动
|
|
- **AND THEN** 下一个进行中或即将开始的课程移至视图可见区域
|
|
|
|
#### Scenario: 新课程移入视图
|
|
- **WHEN** 新的课程即将开始
|
|
- **THEN** 该课程自动移至视图可见区域
|
|
|
|
#### Scenario: 当日课程全部结束
|
|
- **WHEN** 当日所有课程已结束
|
|
- **THEN** 自动显示次日课程表
|
|
|
|
---
|
|
|
|
### Requirement: 拖动交互功能
|
|
|
|
系统 SHALL 提供课程表的上下拖动功能。
|
|
|
|
#### Scenario: 拖动查看课程
|
|
- **WHEN** 用户在课程表区域进行上下拖动
|
|
- **THEN** 课程列表随拖动方向滚动
|
|
- **AND THEN** 拖动操作流畅、响应及时
|
|
|
|
---
|
|
|
|
### Requirement: 自动复位功能
|
|
|
|
系统 SHALL 在用户手动拖动后自动复位到当前课程。
|
|
|
|
#### Scenario: 当前课程结束触发复位
|
|
- **WHEN** 用户手动拖动课程表后,当前课程结束
|
|
- **THEN** 视图自动复位到显示最新进行中课程的位置
|
|
|
|
---
|
|
|
|
## MODIFIED Requirements
|
|
|
|
### Requirement: 课程解析逻辑
|
|
|
|
**当前**: 单双周解析可能存在缺陷
|
|
|
|
**修改后**: 正确识别 WeekCountDiv 和 WeekCountDivTotal 参数,准确判断单周/双周/每周模式
|
|
|
|
---
|
|
|
|
## REMOVED Requirements
|
|
|
|
(无)
|