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

9.3 KiB
Raw Permalink Blame History

12. 验收清单(逐项勾选,不得跳过)

所有自动验证默认无头/离屏;--visual 才允许真实桌面。任一项未通过都不得声称完成。

12.1 工程门禁

  • pnpm lint 0 error(warning 需列出)。
  • pnpm typecheck 0 error(先构建 shared)。
  • pnpm build:desktop 成功;island.html 与主窗口产物分别可加载。
  • 未新增 UI 框架/状态库/图标库;新增依赖(若有)≤ 200KB 且说明不可替代性。
  • 只改 packages/shared、packages/desktop-client、packages/ui(如需)与 docs;服务端/Web 管理端零改动。
  • 所有新增 IPC 通道有 sender 校验、payload 类型校验;preload 白名单与 desktop.d.ts 同步。
  • 无 console.log 残留;日志走统一 logger。

12.2 视觉验收(像素级)

在 1920×1080@100%、2560×1440@125%、深色/浅色、family=classisland/winisland、Fluent/Classic 主题下截取离屏基准图,逐项比对(颜色 ±2/255、尺寸/位置 ±1px、透明度 ±1%):

fixed(classisland 风格)

  • fixed 窗口包围盒固定:宽 = min(工作区宽, 960)、高 = 40 + 2×pad(pad 默认 20);消息到达/展开/多条列表均不改变窗口尺寸。
  • 可见行高 40px,行内容左右内边距 12px,最小内容宽 20px;行间距 5px。
  • 行背景:圆角 8px、背景不透明度 0.5、1px 描边、阴影 0 4 8 2 #48000000(Fluent)。
  • 字号:次要 14 / 主体 16 / 强调 18 / 超大 20;字重 Medium;正文 line-height: 1.25。
  • 进度条:高 3px、贴底、圆角 1.5px、颜色为强调色、按设置精度更新。
  • 默认 1 行 = 日期 + 课程表;无课表时显示占位文本("今天没有课程。"/"今日课程已全部结束。")。
  • 课程表显示当前/下一节/今日时间点模式,当前项展开显示起止时间,其余折叠;课间与"默认隐藏"时间点折叠时隐藏,分割线显示竖线,行动不显示。
  • 下课前秒数徽标:蓝色圆形、显示在课程名右侧、剩余 1 秒显示 -1、不显示"即将下课"遮罩、不替换常态组件。
  • 消息气泡:遮罩 5 区权重 [0,0.1,0.2,0.4,0.2,0.1]、60° 斜切、区段 360ms + 错峰 120ms、开 QuarticEaseOut / 关 QuadraticEaseIn;文字延迟 260/250ms、scale 1.1→1.0/750ms;退出 200ms (0.5,0,0.75,0);行高 40。
  • 强提醒:全屏/大区域遮罩、超时关闭、不抢焦点、在岛所在显示器出现;关闭后无残影。
  • winisland 风格:胶囊 268×44(默认值可配置 220–420 × 36–72)、连续圆角(超椭圆 4.2/14 段)、弹簧形变、纯黑/毛玻璃/主题色渐变、阴影常驻;不得与 classisland 风格混用。

custom(始终 ClassIsland 规格,family 不影响 custom)

  • 行高 40、行间距 5、组件外边距 6/6、行背景圆角 8、背景不透明度 0.5。
  • 行结构:Auto, *, Auto 三列(左拖动把手 20px / 中组件 / 右行操作区);选中框 1.5px 虚线 1,1.5、Opacity 0.75、圆角同背景。
  • 多行、分体岛(separated)、主行标记、允许提醒标记、隐藏规则、组件外观覆盖(字号/前景/背景/圆角/透明度/宽度/对齐)逐项与设置一致。
  • 编辑器中的组件库、行、容器嵌套、选中态、抽屉尺寸与间距符合第 9 部分。
  • 所有组件的默认样式/空数据兜底/超长文本截断/滚动行为符合第 7 部分。

窗口与层级

  • 岛窗口无边框、透明、置顶、默认不占任务栏、默认不抢焦点;winisland 与 classisland 风格均不出现白底/黑边/窗口阴影残影。
  • 6 个停靠位 × 偏移(X/Y)× 多显示器索引正确;followCursorDisplay 行为保持。
  • 编辑模式窗口/画布尺寸正确:屏宽 ×(屏高−1px)、四边 60px 内缩、开启命中。
  • 深浅色/主题切换无残留样式;岛动画由 appearance.animations 开关控制(系统 prefers-reduced-motion 不强制关闭岛动画,遵循 ClassHelper 既有文档约定)。

12.3 功能验收

消息与提醒

  • 通知/作业/叫人三类消息的图标、标题、正文、优先级、时间显示符合第 8 部分。
  • id 去重;同批消息按"优先级 → 时间"排序;列表"展开更多"与"超出工作区提示"正确。
  • 上课期间普通通知/作业暂存、下课补弹;普通叫人保留可点胶囊;紧急通知/紧急叫人立即展开;与 ClassHelper 现有规则逐条一致。
  • 已读/知道了/标为已读/批处理的语义与通知中心状态一致;本机新录作业指纹去重。
  • 自动收起超时:胶囊 15s、展开 20s、紧急 45s、叫人 90s(按现有常量),可打断、可重入。
  • 强提醒仅对开启"强调提醒"的消息出现;关闭后不出现;超时自动关闭;不阻塞岛与其他应用。
  • 消息风暴 20 条/分钟:不丢、不重复、不卡顿、队列上限有日志。

课程与天气

  • 准备/上课/课间/下课前倒数/课中进度五类提醒按设置触发,阈值默认 60s 可调。
  • 课程状态机跨天、跨周、临时课表、预定课表、调课场景正确(与 ClassHelper 现有解析结果一致)。
  • 课程提醒接管:fixed(classisland)按 ClassIsland 行内容接管显示 prepare/on-class/break;custom 不再临时接管整岛(移除 resident-lesson-page),进度由课程组件显示,ending 只保留课程名右侧 30×30 蓝色圆形秒数徽标。
  • 天气:Open-Meteo 15 分钟刷新、断网缓存并显示"缓存"、失败重试与降级、无官方气象预警措辞。
  • 课件传输:传输中覆盖岛内容,显示文件名/类型/教师/字节/进度,完成后校验并回执;不自动运行文件。

编辑器与设置

  • 设置页:经典/自定义切换、风格切换、外观参数、课程提醒开关、指针避让、动画开关、强提醒开关全部即时保存并生效。
  • 编辑器:方案栏(新建/复制/删除/重命名/导入导出/重置)、组件库 11 类、行(新增/排序/主行/允许提醒/删除)、容器嵌套、拖拽(行内/跨行/库→行/库→容器)、选中与组件设置(内容/外观/尺寸/隐藏条件)、编辑模式预览、预览缩放、退出保存/失败重试。
  • 边界:12 行/200 节点/6 层/20 方案;超限拒绝并提示;非法颜色/数值被夹取;未知组件/未知 Kind 不崩溃。
  • 旧方案导入后可直接渲染(迁移测试)。

12.4 动画验收

  • 第 10 部分动画表逐项实现;时长误差 ≤ 16ms,曲线一致(DevTools Animations 或逐帧截图验证)。
  • 岛出现/隐藏、行展开/折叠、行宽/高度、进度条、消息气泡两阶段、强提醒、课程徽标、滚动/轮播、主题切换全部流畅(≥55fps)。
  • 不可打断的动画可被新状态覆盖(不排队、不闪回)。
  • animations=false 生效(唯一岛动画开关);speed 统一缩放时长;失焦/隐藏页暂停;恢复后不补播。
  • 动画结束无残留 will-change、定时器、rAF。

12.5 兼容与迁移验收

  • 旧 fixed/custom 配置 fixtures 升级后:方案、行、组件、外观、课程提醒、指针避让、residentEnabled 全部保留;迁移幂等。
  • 升级失败可回滚(备份恢复);不可用时保留原文件为 .corrupt 并启动默认配置,不得清空。
  • 新配置被旧客户端读取时忽略未知字段、不崩溃(如能构造旧客户端则测;否则单测模拟)。
  • winisland 风格下旧观感/旧交互无回归(对照基线图)。
  • 切换 fixed↔custom、风格切换、方案切换均不新开窗口、不丢配置。

12.6 无头与不打扰验收

  • pnpm verify:desktop(不带 --visual)全程不创建可见岛、托盘气泡、系统通知、声音;测试结束无残留进程/窗口。
  • 使用独立 userData;不触碰真实配置/真实班级/真实通知。
  • --visual 仅在显式允许时运行,且截图输出到临时目录;不自动发布。
  • 崩溃自愈限流有效:1 分钟内最多重建 3 次,超过进入安全模式/停止重建。
  • 日志无密码/令牌/敏感路径。

12.7 性能验收

  • 岛渲染进程启动 ≤ 500ms;冷启动到岛可见 ≤ 3s。
  • 空闲 CPU ≤ 1%;消息风暴峰值 ≤ 15% 且 ≤ 500ms。
  • 主进程 + 岛渲染进程内存 ≤ 250MB;24h 增长 ≤ 10%;无句柄泄漏。
  • 包体增量 ≤ 200KB(除说明的例外);无新增大图标/字体文件。

12.8 文档与交付物

  • docs/app/island.md、docs/dev/implementation.md 更新;新增 docs/dev/island-refactor.md。
  • 架构图、数据契约、动画表、迁移与回滚、测试命令齐全。
  • 交付说明:与 ClassIsland 差异、未实现项、性能数据、回滚步骤。
  • 第 12 部分本清单逐项勾选并附验证输出摘要;未验证项标注原因。

12.9 禁止事项(验收时再次确认)

  • 未通过修改验收标准/删除测试来"通过"。
  • 未因重构删除既有功能(消息、课程、天气、课件、编辑、导入导出、指针避让、触摸)。
  • 未引入需要联网/登录的新依赖。
  • 未把 ClassIsland 的 C#/XAML/本地档案代码复制进 ClassHelper。