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

70 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 必须一致)
1. **在现有仓库内重构,不新建工程、不引入新框架**: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、不引入服务端新依赖。
2. **目标视觉默认改为 ClassIsland 规格**:岛可见行高 40、行内边距 12、行间距 5、圆角 8、背景不透明度 0.5、字号 14/16/18/20、进度条 3px、通知气泡/强提醒按 ClassIsland 参数。**保留 ClassHelper 经典 WinIsland 外观作为可选风格**(`islandAppearance.style: 'classisland' | 'winisland'`,默认 `classisland`;经典胶囊交互在 `winisland` 下不变),用于老用户与回退。
3. **两种模式的定位**(最终以 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 对齐。
4. **数据来源不迁移到 ClassIsland 本地档案**:继续使用 ClassHelper 服务端解析后的 `ScheduleDto`/`IslandTimePointDto`/通知/作业/叫人/课件数据;ClassIsland 的 Profile/TimeLayout 只作为"语义参考",不引入其本地 JSON 档案体系。
5. **消息/提醒**:保留 ClassHelper 的优先级、去重、上课暂存、紧急展开、已读回执、安静模式等业务规则;在此基础上叠加 ClassIsland 的气泡两阶段、强提醒特效(Topmost)、倒计时进度条、行内进度条等视觉/交互;两者冲突时以"ClassHelper 业务语义优先,ClassIsland 视觉表现优先"为裁决。
6. **ClassIsland 的自动化/插件/主题市场/管理端/Excel 导入/更新器不在本轮范围**(最多作为附录说明不实现);主题只做岛内样式(CSS 变量 + 两套内置风格)。
7. **配置兼容**:`config.json.islandLayout` 增加 `version` 字段与迁移函数;旧 `fixed`/`custom` 配置必须无损升级(组件节点、方案、外观值、编辑器行为保持),失败可回滚;旧字段 `residentEnabled` 继续兼容。
8. **不打扰纪律**:所有验证必须无头/离屏(`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` 源码。