- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构) - ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本) - 投喂指南、分卷、逐节文件 - 调研记录、一致性基线、生成与质检脚本
6.5 KiB
6.5 KiB
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.vue11 类组件默认样式/空数据/布局约束。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玻璃/纯黑/渐变保持;主题切换无闪烁。 - 交互细节:点击区域、悬停、触摸、键盘、拖拽阈值、选中/取消、右键(如适用)。
- 第 10 部分动画表逐项;60fps;可打断;
- 验证: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 的像素/动画验收需要稳定的基准图与固定测试数据,禁止用真实班级数据。