- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构) - ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本) - 投喂指南、分卷、逐节文件 - 调研记录、一致性基线、生成与质检脚本
11 KiB
Round 2 总简报:重构 ClassHelper 灵动岛 → 给 ChatGPT 的完整提示词
0. 目标变化(以本轮用户要求为准)
用户的新要求:基于 ClassIsland 项目反推出完整提示词,用它来重构 ClassHelper 的灵动岛。
即:不是从零新建一个 ClassIsland 克隆,而是让 ChatGPT 在 ClassHelper 现有仓库(pnpm monorepo,packages/desktop-client 等)里,参照 ClassIsland 的灵动岛(主界面)实现,把 ClassHelper 的灵动岛重构到位;技术栈、工程约定、既有数据与服务全部沿用 ClassHelper。
最终交付:D:\clword\ClassHelper灵动岛重构-给ChatGPT的完整提示词.md(简体中文,给 ChatGPT 的实现任务书,可直接投喂)。
1. 关键事实(已核对,必须遵守)
1.1 ClassHelper 灵动岛现状(详见 docs/app/island.md 与源码)
- 独立透明窗口、不占任务栏;
config.json.islandLayout.layout为fixed(经典)或custom(自定义常驻),默认fixed;两种布局共用一个原生窗口(src/main/island.ts)。 - 经典 fixed:胶囊 + 详情卡,消息分普通/紧急、上课时普通通知暂存、普通叫人可点、紧急立即展开;支持细缝、触摸、失焦宽限、鼠标穿透/避让淡化。
- 自定义 custom:多行 rows + expandedRows(无消息展开内容)、组件方案 schemes(多方案、JSON 导入导出)、组件树 nodes(
shared/src/island-layout.ts的IslandComponentNode:id/kind/settings/appearance/advanced/children);行有 main / allowNotifications / gap;组件有 hideRules(in-class/no-message/no-class)、align、width、maxWidth;方案级 scale/color/foreground/opacity/radius/separated/spacing。 - 组件种类:
ISLAND_COMPONENTS = date, clock, weather, countdown, schedule, text, separator, slide, rolling, group, stack, notification, homework, call。notification/homework/call为消息入口组件;组件库只展示前 11 类(消息类走铃铛/面板)。 - 渲染入口:
island.html→LayoutIslandApp.vue(选择经典IslandApp.vue或自定义CustomIslandRuntime.vue),共用src/island/ComponentNode.vue、ComponentIcon.vue、ClassicNotifications.vue、LessonReminderContent.vue、CoursewareTransfer.vue、spring.ts、squircle.ts、classic-island.css、custom-island.css、custom-runtime.css。 - 主进程状态:
src/main/island.ts(窗口几何/命中/触摸/消息队列/课程提醒/天气/课件);preload:src/preload/island.ts;渲染→主进程 IPC 走 contextBridge 白名单。 - 课表数据来自服务端解析结果(
ScheduleDto、IslandTimePointDto等),天气用 Open-Meteo(15 分钟刷新、断网缓存标"缓存"),课程提醒含准备/上课/课间/下课前倒数/课中进度,下课前秒数徽标显示在课程名右侧(蓝色圆形,剩余一秒显示-1)。 - 课件传输状态优先覆盖岛内容(
CoursewareTransfer.vue)。 - 既有硬约束(
AGENTS.md§4):保留经典岛连续圆角、投影常驻、触摸输入、失焦宽限、固定窗口几何护栏;禁止setBackgroundMaterial()破坏逐像素透明;消息按 id 去重;通知/叫人双播不得重复;编辑预览不创建额外桌面窗口;默认后台验证不创建可见岛或托盘,只有显式--visual才做桌面像素/动画验收。
1.2 ClassIsland 灵动岛基准(上一轮已整理,可直接复用 parts/03,04,05,07,14)
- 无边框/透明/不抢焦点/默认鼠标穿透;行高 40;行内容
margin 0 12、min-width 20;行间距默认 5;圆角 RadiusX 默认 8(0–20);背景不透明度 0.5、行整体不透明度 1.0;背景 1px 描边 +0 4 8 2 #48000000;字号 14/16/18/20;进度条 3px;选择框 1.5px 虚线 1/1.5;Fluent/Classic 两套主题;遮罩斜切 5 区权重[0,0.1,0.2,0.4,0.2,0.1]、区段 360ms + 错峰 120ms、开 QuarticEaseOut / 关 QuadraticEaseIn、文字 delay 260/250ms + scale 1.1→1.0/750ms、退出 200ms(0.5,0,0.75,0);行宽过渡 Fluent 300ms(0.65,0,0.35,1)/ Classic 550ms(0,1,0.5,1.1);通知队列优先级、强提醒全屏特效、音效/TTS;组件系统 11 类 + 容器;编辑模式(选择框/拖动/行设置抽屉/添加行/组件库);隐藏规则;多显示器停靠;壁纸取色已停用(P2)。 - 完整细节在
parts/(上一轮产出):03 tokens、04 主界面、05 组件、07 提醒、14 动画(99 条)、10 设置、11 窗口。可裁剪/改写后复用。
2. 本轮重构决策(Lead 定,所有 part 必须一致)
- 在现有仓库内重构,不新建工程、不引入新框架:pnpm@11.8.0 monorepo;Electron ^44.3.0、Vue ^3.5.42、Element Plus ^2.14.5、Pinia ^4.0.3、Vue Router ^5.3.1、Vite ^8.3.0、TS ~5.9.3 原样沿用;不引入 ClassIsland 的 C#/Avalonia、不引入服务端新依赖。
- 目标视觉默认改为 ClassIsland 规格:岛可见行高 40、行内边距 12、行间距 5、圆角 8、背景不透明度 0.5、字号 14/16/18/20、进度条 3px、通知气泡/强提醒按 ClassIsland 参数。保留 ClassHelper 经典 WinIsland 外观作为可选风格(
islandAppearance.style: 'classisland' | 'winisland',默认classisland;经典胶囊交互在winisland下不变),用于老用户与回退。 - 两种模式的定位(最终以 parts-r/01 为准):
fixed(默认风格classisland):重定义为 ClassIsland 风格的信息行——默认 1 行 = 日期 + 课程表,行高 40、圆角 8、背景不透明度 0.5、底部 3px 进度条;消息到来时在同一行内展开 ClassIsland 风格气泡,保留 ClassHelper 的暂存/紧急/叫人/已读规则。原「胶囊 + 详情卡」形态只在winisland兼容风格下保留(appearance.family='winisland')。custom(常驻):保留现有 schemes/rows/nodes/expandedRows/编辑器的数据模型,按 ClassIsland 的行/组件/编辑模式/隐藏规则/动画规格重构渲染与交互;行高 40、组件间距、行设置抽屉、组件库拖拽、主行/允许提醒/淡出规则与 ClassIsland 对齐。
- 数据来源不迁移到 ClassIsland 本地档案:继续使用 ClassHelper 服务端解析后的
ScheduleDto/IslandTimePointDto/通知/作业/叫人/课件数据;ClassIsland 的 Profile/TimeLayout 只作为"语义参考",不引入其本地 JSON 档案体系。 - 消息/提醒:保留 ClassHelper 的优先级、去重、上课暂存、紧急展开、已读回执、安静模式等业务规则;在此基础上叠加 ClassIsland 的气泡两阶段、强提醒特效(Topmost)、倒计时进度条、行内进度条等视觉/交互;两者冲突时以"ClassHelper 业务语义优先,ClassIsland 视觉表现优先"为裁决。
- ClassIsland 的自动化/插件/主题市场/管理端/Excel 导入/更新器不在本轮范围(最多作为附录说明不实现);主题只做岛内样式(CSS 变量 + 两套内置风格)。
- 配置兼容:
config.json.islandLayout增加version字段与迁移函数;旧fixed/custom配置必须无损升级(组件节点、方案、外观值、编辑器行为保持),失败可回滚;旧字段residentEnabled继续兼容。 - 不打扰纪律:所有验证必须无头/离屏(
verify:desktop默认后台快速检查,不创建可见岛/托盘;只有显式--visual才做视觉验证),禁止自动弹窗、发声、占用真实桌面。
3. 文档结构(最终提示词)
| Part | 内容 | 负责人 | 文件 |
|---|---|---|---|
| 0 | 使用说明 + 给 ChatGPT 的任务声明(重构、约束、交付、工作方式) | Lead | parts-r/00-preamble.md |
| 1 | 重构目标与范围(背景、目标态、Keep/Change/Add、非目标) | Lead | parts-r/01-objective.md |
| 2 | ClassHelper 灵动岛现状基线(文件、进程、数据、交互、既有规则) | stack | parts-r/02-current-state.md |
| 3 | ClassIsland 灵动岛基准规格(行为语义:行/组件/提醒/课程/隐藏/课程表/天气) | features | parts-r/03-classisland-baseline.md |
| 4 | 目标架构与文件级改造清单(模块划分、文件、接口、IPC、改动类型) | stack | parts-r/04-file-plan.md |
| 5 | 数据契约、schema 扩展与配置迁移(islandLayout v2、DTO 映射、迁移/回滚) | stack | parts-r/05-data-migration.md |
| 6 | 设计 tokens 与视觉基线(颜色/字体/圆角/间距/阴影/层级/DPI;两套风格) | design | parts-r/06-tokens.md |
| 7 | 岛结构与组件规格(窗口/几何/行/背景/进度/遮罩/编辑模式/11+ 组件逐个) | ui-island | parts-r/07-island-components.md |
| 8 | 消息、提醒、课程提醒、强提醒特效、天气、课件覆盖(含像素与动画) | features | parts-r/08-messages-lessons.md |
| 9 | 编辑器与设置页重构(IslandSettingsView / IslandEditorView / IslandComponentSettings / 设置页) | windows | parts-r/09-editor-settings.md |
| 10 | 动画与动效映射(ClassHelper 现状 → 目标;逐项 ms/曲线/延迟/实现;含降级) | design | parts-r/10-animations.md |
| 11 | 兼容性、性能、平台与测试基线(迁移回滚、无头验证、性能预算) | Lead | parts-r/11-compat-tests.md |
| 12 | 验收清单(逐项可勾选) | Lead | parts-r/12-acceptance.md |
| 13 | 重构里程碑(M0–M7) | Lead | parts-r/13-milestones.md |
4. 写作规范(与上一轮一致)
- 简体中文、祈使句、面向 ChatGPT;不是分析报告。
- 证据:
packages/...:行号(ClassHelper 仓库相对路径);ClassIsland 侧写repos/ClassIsland/...:行号(相对本工作区),无法确认标【推断】。 - 必须写清「改哪个文件、改成什么样、为什么、如何验证」;每个 part 末尾含「验收标准」。
- 不建新工程、不改服务端、不引入新框架;坚持"重构"措辞。
- 禁止构建/运行/截图/冒烟/启动 Electron,只读分析。用户明确要求后台静默,不要打扰。
- 不要修改
repos/;只写parts-r/、analysis/、最终由 Lead 汇总。
5. 待读清单(关键)
ClassHelper:docs/app/island.md、docs/dev/implementation.md、docs/dev/winisland-design-tokens.md、packages/shared/src/{island-layout,constants,motion}.ts、packages/desktop-client/src/main/island.ts、src/island/{LayoutIslandApp,IslandApp,CustomIslandRuntime,ComponentNode,ComponentIcon,ClassicNotifications,LessonReminderContent,CoursewareTransfer,spring,squircle}.ts/vue、src/island/{classic-island,custom-island,custom-runtime,lesson-ending}.css、src/preload/island.ts、src/renderer/island/bridge.ts、src/renderer/views/settings/{IslandSettingsView,IslandEditorView}.vue、src/renderer/components/IslandComponentSettings.vue、src/main/config.ts、src/types/desktop.d.ts。
ClassIsland:上一轮 parts/03,04,05,07,10,11,14 与 analysis/40-baseline.md 已整理,可直接引用;必要时回查 repos/ClassIsland 源码。