| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
重构(领域层): 7 个 *_logic.dart 静态工具类迁入 lib/domain 统一命名空间——provider 的 import/export 路径同步改写保持再导出 API 不变,6 个 lib 消费方与 7 个测试文件改引新路径;分层违规 54→53(partner_timetable_service 对 logic 的引用转为合法 services→domain)(阶段1收尾) | 1 个月前 | |
重构(领域层): 抽取 CourseDomain 冲突检测与共享字段——provider 删 3 个纯函数私有方法改委托,couple_timetable_logic 同源冲突判定一并去重到 overlapInWeek;新增 15 个领域单测(阶段1) | 1 个月前 | |
重构(领域层): 抽取 HolidayResolver 节假日展示策略——调休优先/覆盖模式/开关三层判定从 provider 收口为纯函数并补 11 个单测,provider 改委托签名不变(阶段1) | 1 个月前 | |
文档(领域层): import_export_logic 的 foundation import 加例外说明——@visibleForTesting 等基础注解用途,纯度守卫只禁 UI 框架(回应评审建议) | 1 个月前 | |
重构(领域层): 7 个 *_logic.dart 静态工具类迁入 lib/domain 统一命名空间——provider 的 import/export 路径同步改写保持再导出 API 不变,6 个 lib 消费方与 7 个测试文件改引新路径;分层违规 54→53(partner_timetable_service 对 logic 的引用转为合法 services→domain)(阶段1收尾) | 1 个月前 | |
重构(领域层): 7 个 *_logic.dart 静态工具类迁入 lib/domain 统一命名空间——provider 的 import/export 路径同步改写保持再导出 API 不变,6 个 lib 消费方与 7 个测试文件改引新路径;分层违规 54→53(partner_timetable_service 对 logic 的引用转为合法 services→domain)(阶段1收尾) | 1 个月前 | |
重构(领域层): 7 个 *_logic.dart 静态工具类迁入 lib/domain 统一命名空间——provider 的 import/export 路径同步改写保持再导出 API 不变,6 个 lib 消费方与 7 个测试文件改引新路径;分层违规 54→53(partner_timetable_service 对 logic 的引用转为合法 services→domain)(阶段1收尾) | 1 个月前 | |
重构(领域层): 7 个 *_logic.dart 静态工具类迁入 lib/domain 统一命名空间——provider 的 import/export 路径同步改写保持再导出 API 不变,6 个 lib 消费方与 7 个测试文件改引新路径;分层违规 54→53(partner_timetable_service 对 logic 的引用转为合法 services→domain)(阶段1收尾) | 1 个月前 | |
重构(领域层): 抽取 ScheduleItemExpander 日程实例组装——显示日去重(例外覆盖胜出)与多键排序收口为纯函数,provider 两个查询方法改委托并删 2 个私有 helper;新增 10 个领域单测(阶段1) | 1 个月前 | |
新增(日程): 日程安排列表页——三类时间实体补齐浏览管理面 任务清单、考试安排均有列表页,日程此前只有添加/编辑表单与日视图卡片: 重复/过期/暂停日程除把日视图翻到具体日期外无处可寻,也没有确认「存上 没有」的地方。补一个与兄弟页同构的列表页: - 分组排序收口纯 Dart 领域层 schedule_list_grouping:按启用/暂停与下次 发生日拆「即将到来/已过期/已暂停」三组;单次覆盖(seriesId 非空)不是 独立条目,列表只收系列根;重复日程自 max(开始日, 今天) 起找第一个 occursOn 命中日,跨天进行中的单次日程置顶并标「进行中」 - ScheduleListScreen 复用考试安排页的 Hyperos 形态:分区标签 + 滑动删除 (整系列确认对话框)+ 点击进既有 AddScheduleItemScreen 系列编辑; 每周日程徽标「每周三」、跨天显示起止区间、提醒与地点随行展示 - home_menu_catalog 八宫格目录新增 scheduleList 条目,两处路由注册表 (kInlineDockPages/kHomeCatalogPages)同步登记 scheduleList(Page), 可钉玻璃坞底栏;不改用户既有八宫格排列,无迁移 - l10n 六语言 8 个新 key(zh 模板含 placeholder 元数据);新 key 已随 并行提交 67eeec40 的 l10n 整文件改动入库,本次提交不含 l10n 文件 - 架构守卫:timetable_provider 扇入棘轮 51→52(新增同构兄弟页的正当 响应式依赖,Provider 本体零改动、行数棘轮不动),按守卫约定同步 基线并在此说明 flutter analyze 0 issues;新增 domain 分组 12 例 + 列表页 2 例 widget 测试;架构守卫/菜单目录/玻璃坞/任务页回归 32 例全绿 | 1 个月前 | |
修复(Provider竞态): 体检④状态管理竞态与质量收敛——R1 app logs 迁移写回段包 mutation gate 并校验活跃课表未变,杜绝冷启动迁移与切换课表并发时旧设置混入新课表,未迁移成功不落标记下次冷启动重试;R2 周次同步与 setCurrentWeek 包 mutation gate,消除外部调用与 switchProfile 交错时周次写错课表(eec42680 口径的并发版),notify 先于持久化的既有时序保持不变;R4 节假日加载收进 live surface gate,避免与切换交错时用旧课表推一次桌面卡片;N5 考试提醒 reconcile 收敛为单飞+脏标记,25+ 点火点批量导入合并为最多 2 次 reconcile,首轮立即执行与原时序一致。同批删除无调用方的死代码 loadSettings/loadCourses(-78 行,连带消掉绕过串行化门的外部误调隐患),钟点同步逻辑下沉 TimeSchemeLogic 纯静态函数、Provider 薄转发(-70 行)。主文件 4426→4400,架构守卫行数基线顺手收紧,persist 调用点 48 与扇入 51 原地满足。 | 1 个月前 | |
新增(天气): 天气数据模型与区间聚合逻辑(日视图课卡天气 · 第 1 步) 接入公开免费天气源 Open-Meteo(零密钥)的前置纯逻辑层,只做数据与算法, 不碰任何界面与网络。 - lib/models/weather_forecast.dart WeatherLocation(含 admin1 用于区分同名地点、经纬度判同一地点)、 HourlyWeatherPoint、WeatherForecast(升序保证 + covers/hasLapsedAt/ matchesLocation + 列式序列化)。 列式存 6 个平行数组而非逐点对象,体积约为 1/3;时间用不带 Z 的墙钟串, 避免本地/UTC 往返漂移。 - lib/domain/weather_logic.dart 20 档 WeatherCategory + WMO 码映射 + 严重度序; summarizeCourseWeather 按「与课程区间有交集的小时桶」聚合 (t > start && t < end + 1h,因为降水是前 1 小时累计;左开右开各有一条 单测钉住),代表现象按雪优先于雨、家族内取最严重; 降水概率低于 30% 不返回显示标记(「晴 · 23° · 0%」是噪音)。 纯 Dart,无 UI 依赖,符合 lib/domain 纯度守卫。 - 测试:51 条断言。含区间选取 7 个边界、雪雨同存判雪、有雪量无雪码兜底、 概率 29/30 阈值、温度全缺报返回 null、序列化往返与损坏数据降级。 验证:flutter analyze 无 issue;flutter test 51 条全绿。 | 16 天前 | |
重构(领域层): 抽取 WeekCalculator 周次计算——provider 四个周次方法改为委托,签名不变调用点零改动;新增 16 个领域单测(阶段1首刀,对应 OPTIMIZATION.md §4 阶段1 WeekCalculator) | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 1 个月前 |