Files
classhelper-island-refactor…/out/refactor-sections/13-milestones.md
T
ClassIsland Prompt Kit 22c1784bab feat: ClassIsland / ClassHelper 灵动岛提示词套件
- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构)
- ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本)
- 投喂指南、分卷、逐节文件
- 调研记录、一致性基线、生成与质检脚本
2026-11-12 21:59:58 +08:00

6.5 KiB
Raw Blame History

13. 重构里程碑(M0–M7)

必须按顺序推进;每个里程碑结束都要「可无头运行 + 通过该阶段验收 + 既有功能不回归」。禁止先大改 UI 再补架构与测试。

M0 基线固化与安全网(0.5–1 天)

  • 交付:
    • 读通现状并输出文件级计划(第 4 部分)与迁移计划(第 5 部分)。
    • 为现有行为建立无头基线:normalizeIslandLayouts 边界用例、消息排序/去重、课程状态机、窗口几何计算、旧配置 fixtures(fixed/custom/嵌套/极端值)。
    • 记录性能基线:启动耗时、空闲 CPU、内存、消息风暴耗时。
    • 在 verify:desktop 中补充"不创建可见窗口/托盘"的断言。
  • 验证:pnpm typecheck、pnpm verify:desktop(无头)通过;fixtures 全部可回放。
  • 完成标准:没有行为改动;所有基线用例通过;性能数字记录在 docs/dev/island-refactor.md 草案。

M1 共享层 v2:schema、常量、迁移、tokens(1–2 天)

  • 交付:
    • packages/shared/src/island-layout.ts:version=2、appearance.family、appearance.theme、strongNotification、progressBar、rowStyle、scheme 的 rowHeight/componentGap/showProgress、组件新字段;normalizeIslandLayouts() 迁移+校验(12 行/200 节点/6 层/20 方案、颜色/数值夹取)。
    • 常量/token:ClassIsland 行高 40、内边距 12、行距 5、圆角 8、透明度 0.5、字号 14/16/18/20、进度条 3px 等;winisland 兼容值保留。
    • 迁移函数(幂等)+ 备份/回滚;单元测试覆盖全部 fixtures。
  • 验证:单测(迁移、夹取、边界、幂等);typecheck。
  • 完成标准:旧配置升级后数据无损;新 schema 能被现有代码读取(旧渲染仍可运行);迁移失败可回滚。

M2 渲染引擎:行/组件/tokens(2–3 天)

  • 交付:
    • 统一行/组件渲染模型:fixed 与 custom 共用行结构、背景、进度条、选中框、隐藏规则、淡出、圆角/阴影。
    • IslandApp.vue 重构为 ClassIsland 信息行(默认日期+课程表),CustomIslandRuntime.vue 行/组件按新规格;ComponentNode.vue 11 类组件默认样式/空数据/布局约束。
    • family 双轨渲染仅作用于 fixed(classisland 信息行 / winisland 旧胶囊);custom 统一 ClassIsland 规格;默认按用户升级策略选择;设置页可切换。
    • DOM/CSS token 结构(第 6/7 部分)落地;旧 winisland 视觉保持。
  • 验证:组件快照测试(关键 computed 样式/DOM 结构);无头启动渲染;--visual 像素基准(1920×1080、深/浅色、两风格)。
  • 完成标准:两风格可切换且互不污染;行/组件像素值达标;旧观感无回归。

M3 消息、课程提醒、强提醒、天气、课件(2–3 天)

  • 交付:
    • 气泡两阶段(遮罩斜切 360/120ms、文字 260/250ms、scale 1.1→1.0/750ms、退出 200ms)与队列/去重/暂存/紧急/叫人规则。
    • 课程提醒五类 + 下课前蓝色秒数徽标 + 课程进度条。
    • 强提醒(Topmost)独立透明窗口:全屏/大区域、超时关闭、不抢焦点、多显示器、仅在强调提醒开启时出现;编辑/预览不创建。
    • 天气显示/缓存标记;课件覆盖优先与进度。
  • 验证:消息/课程单测(假时钟、假队列);无头推送场景;--visual 气泡/强提醒动画采样。
  • 完成标准:ClassHelper 既有消息/课程规则逐条不变;视觉/动画达标;强提醒不影响其他应用。

M4 设置页与编辑器重构(2–3 天)

  • 交付:
    • IslandSettingsView.vue:经典/自定义切换、风格切换、外观参数(字号阶梯/行距/进度条/强提醒)、课程提醒、指针避让、动画开关;即时保存、校验、回显。
    • IslandEditorView.vue:方案栏、组件库、行/容器、拖拽、组件设置抽屉、编辑模式预览、预览缩放、退出保存/失败重试;与 ClassIsland 编辑模式对齐(选中框、行设置、添加行、组件边距)。
    • IslandComponentSettings.vue:字段与第 7 部分一一对应;未知字段保留。
  • 验证:组件测试 + 无头保存/读取 + 迁移后旧方案编辑;--visual 编辑器截图。
  • 完成标准:所有设置即时生效;编辑器可用、保存可靠、退出不丢;12 行/200 节点/6 层/20 方案边界提示。

M5 动画、主题、细节打磨(1–2 天)

  • 交付:
    • 第 10 部分动画表逐项;60fps;可打断;animations=false/减少动画/失焦/隐藏页暂停。
    • Fluent/Classic 两套岛主题;winisland 玻璃/纯黑/渐变保持;主题切换无闪烁。
    • 交互细节:点击区域、悬停、触摸、键盘、拖拽阈值、选中/取消、右键(如适用)。
  • 验证:DevTools/帧采样;逐项动画检查;像素 diff;无头回归。
  • 完成标准:动画误差 ≤16ms、帧率达标;主题/风格切换无残留;减少动画生效。

M6 迁移、兼容与回归(1–2 天)

  • 交付:
    • 迁移 fixtures 全量回放(fixed/custom/旧 residentEnabled/嵌套容器/极端值/非法数据);回滚演练。
    • winisland 观感对照基线;旧交互逐条回归(消息/课程/天气/课件/编辑器/触摸/多屏)。
    • 旧版本读新配置的兼容处理;日志/诊断/文档更新。
  • 验证:迁移单测 + 回滚测试 + pnpm verify:desktop + --visual 对照。
  • 完成标准:旧配置 100% 无损;回滚可用;旧观感/旧交互无回归。

M7 全量验收与交付(1–2 天)

  • 交付:
    • 第 12 部分逐项勾选;性能数据(启动/CPU/内存/帧率/消息风暴);差异说明;回滚说明。
    • pnpm lint、pnpm typecheck、pnpm build:desktop、pnpm verify:desktop(无头)、--visual 视觉验收记录。
    • docs/app/island.md、docs/dev/implementation.md、docs/dev/island-refactor.md 完成。
  • 验证:按第 12 部分执行;未通过项必须列出原因与修复计划。
  • 完成标准:第 12 部分全通过(或明确标注例外并获得确认);无可见窗口打扰的默认验证可重复通过。

里程碑风险提示

  • M1 迁移必须先于任何渲染改动,否则旧配置会在开发中损坏。
  • M2/M3 必须保留 feature flag(family 与内部开关),确保随时可回退到旧渲染。
  • M4 编辑器依赖 M1 的 schema 与 M2 的渲染组件;不得并行乱改。
  • M5/M6 的像素/动画验收需要稳定的基准图与固定测试数据,禁止用真实班级数据。