# 团队总简报:反推 ClassIsland 的「给 ChatGPT 的完整实现提示词」 ## 0. 最终交付物 - 主交付:`D:\clword\ClassIsland-给ChatGPT的完整提示词.md`(简体中文,由 Lead 汇总各 part 而成)。 - 该文件是**一份可以直接粘贴给 ChatGPT 的提示词**:用户角色是「实现者」,提示词要求 ChatGPT 从零实现一个 ClassIsland 等价的桌面课表信息工具,技术栈采用 ClassHelper 的 Electron + Vue 3 技术栈(见 §4)。 - 备选交付:`out/` 下的分卷版(若有时间)。 ## 1. 任务定义 1. 深度研读 `repos/ClassIsland`(C# / .NET 8 / Avalonia / FluentAvalonia,ClassIsland v2.x 源码,含 MainWindow、Core、Shared、PluginSdk、平台层等)。 2. 深度研读 `repos/ClassHelper-master`(TypeScript / pnpm monorepo / Electron 44 / Vue 3.5 / Element Plus / Pinia / Vite 8 / Socket.IO / Prisma,含 desktop-client 的「灵动岛」实现)。 3. 把 ClassIsland 的**全部功能、全部界面、全部动画、全部像素级参数**反写成一份超详细的实现规格提示词;实现技术栈按 ClassHelper 的栈来写(必要处给出等价映射方案)。 4. 输出不是分析报告,而是**祈使句提示词**:面向 ChatGPT 的实现任务书,要求「必须/不得/应当」,包含具体数值、文件结构、数据结构、交互、动画曲线、验收清单。 ## 2. 硬性纪律(极重要) - **绝对禁止**构建、运行、启动、截图、冒烟、smoke/verify 任何程序;禁止 `dotnet build`、`dotnet run`、`pnpm dev`、`electron`、`npm`、任何会弹窗或占用屏幕的命令。用户明确要求「不要打扰我,后台做好」。 - 只允许静态分析:读文件(read 工具,UTF-8)、grep、glob、读取图片尺寸等不启动 UI 的操作。可以运行纯文本处理命令(如读取文件行数),但不得执行安装/构建/启动。 - **不要修改 `repos/` 下任何文件**。只在 `analysis/`、`parts/`、`out/` 写文件;不要动别人的文件。 - 不要提交、不要联网克隆新仓库(需要的信息用已有文件 + 必要时 web_fetch 官方文档/README)。 ## 3. 每个 part 文件的格式规范 文件路径:`parts/NN-名称.md`。文件内容仅包含该部分的正文,标题从 `## N. 标题` 开始(一级标题由 Lead 汇总时生成)。 写作要求: - 简体中文;技术名词保留英文原名(如 FluentAvalonia、TransparencyLevelHint、Storyboard)。 - **面向 ChatGPT 的实现指令**:用「必须 / 不得 / 应当 / 需要」等祈使句;不要写「本项目如何如何」的旁观式分析。 - 每个视觉/行为参数尽量给**确切数值**:宽高、Margin、Padding、CornerRadius、FontSize、FontWeight、颜色(HEX/资源名)、透明度、动画 Duration(毫秒)、缓动曲线(如 CubicEaseOut、0.65,0,0.35,1.0)、层级(ZIndex/窗口层级)、DPI/缩放规则。 - 每个数值/行为尽量标注来源:`repos/ClassIsland/ClassIsland/MainWindow.axaml:282` 这种相对路径:行号;无法从源码确认的写【推断】。 - 每个功能点建议覆盖:目的、默认值/默认行为、触发条件、UI 表现(像素级)、动画、边界/异常情况、数据结构(JSON 字段)、与其他模块的联动、验收标准。 - 参照现有代码里的命名(MainWindow、MainWindowLine、Component、Profile、ClassPlan、TimeLayout、Notification、Automation、Ruleset、XamlTheme、Settings 等)。 - 篇幅:不设上限,宁详勿略;但禁止空洞套话。目标每个 part 至少 3000 中文字,核心技术 part 6000+。 ## 4. 技术栈事实(ClassHelper,实现时采用) 来自 `repos/ClassHelper-master/package.json`、`pnpm-workspace.yaml`、各 `packages/*/package.json`、`AGENTS.md`: - pnpm@11.8.0 monorepo,Node >= 20.19;根 package.json 为版本单一来源。 - 包:`packages/shared`(三端共享类型/常量/权限/动效/岛方案与课件契约)、`packages/ui`(共享 Vue 控件、主题、`tokens.css`)、`packages/desktop-client`(Electron 主进程 + preload + 主窗口渲染进程 + 独立灵动岛渲染进程)、`packages/server`(Express 5 + Prisma 7 + Socket.IO,API 前缀 `/api`)、`packages/web-admin`(Vue 管理端 PWA)。 - desktop-client 依赖:Electron ^44.3.0、Vue ^3.5.42、Element Plus ^2.14.5、Pinia ^4.0.3、Vue Router ^5.3.1、axios、socket.io-client、Vite ^8.3.0、TypeScript ~5.9.3、electron-builder 26。 - 灵动岛实现要点(必须复用/对齐):独立 `island.html` 渲染入口 + 独立 BrowserWindow(透明、无边框、置顶、点击穿透、失焦宽限期等,见 `src/main/island.ts`);`squircle.ts` 连续圆角(超椭圆指数 4.2、每角 14 段);`spring.ts` 弹簧动画(stiffness 0.10、damping 0.68、换向动量保留 35%、单帧位移 ≤ 剩余距离 20%、snap 阈值 0.05px、60fps 帧单位);`classic-island.css` / `custom-island.css`;配置 `config.json`(主进程 `config.ts`);`renderer/composables/motion.ts`;`renderer/styles/index.css` 的 CSS token;IPC 走 contextBridge 白名单(`src/preload/*`)。 - 安全约定:preload 只暴露 contextBridge 白名单、不暴露 ipcRenderer;保留 CSP;离线缓存隔离;不使用 `setBackgroundMaterial()` 破坏逐像素透明。 - 后端在本任务中**不要求**(ClassIsland 是本地单机应用);如需数据层,优先采用本地文件 + IndexedDB(对齐 ClassHelper 客户端离线缓存模式),不要引入服务器依赖。若必须用到(可选),说明为可裁剪模块。 ## 5. 术语表(统一用词) - 主界面 / 岛:ClassIsland 的悬浮课表窗口(MainWindow,可拆分为多行「岛」)。 - 主界面行:MainWindowLine(一行;含组件集合、背景、进度条、遮罩、提醒气泡)。 - 组件:Component(日期、时间、倒计时、课程表、天气、文本、滚动、堆叠、分组、分隔线等)。 - 档案:Profile(一套课表/时间表/科目的配置,JSON 文件)。 - 课表:ClassPlan(某周的每日课程);时间表:TimeLayout(时间点 TimeLayoutItem 列表)。 - 时间点:TimeLayoutItem,类型 上课/课间/分割线/行动(OnClass/Breaking/Separator/Action)。 - 提醒:Notification(NotificationRequest/NotificationProvider/NotificationHostService);强提醒:提醒特效(Topmost 全屏遮罩)。 - 自动化:Automation(触发器 Trigger + 动作 Action + 规则集 Ruleset/Rule)。 - 主题:XamlTheme(ClassIsland 用 XAML 资源字典;实现时映射为 CSS 变量 + 主题包,见 part 9)。 - 设置:Settings(`Settings.json`,所有字段有默认值)。 - 插件:Plugin(ClassIsland 的 .cipx/DLL 扩展;实现时映射为 npm 包/动态模块,见 part 12)。 - 提醒优先级:NotificationPriority(Low/Medium/High 等,按源码)。 ## 6. 分工与 part 对应 | Part | 内容 | 负责人 | 文件 | |---|---|---|---| | 01 | 总纲:产品定位、目标用户、体验原则、总体架构图 | Lead | parts/01-overview.md | | 02 | 技术栈与工程结构(ClassHelper 栈、目录、进程模型、构建) | stack | parts/02-tech-stack.md | | 03 | 设计系统 tokens(颜色/字体/字号/圆角/间距/阴影/层级/动效曲线/深浅色) | design | parts/03-design-tokens.md | | 04 | 主界面(岛)像素级规格:窗口、行、背景、进度、遮罩、编辑模式、隐藏/穿透、多显示器、右键菜单 | ui-island | parts/04-main-window.md | | 05 | 组件系统:全部组件逐个规格(含设置项、布局、动画) | ui-island | parts/05-components.md | | 06 | 课程表/时间表/档案/科目/周次/调课/导入导出 | features | parts/06-schedule-profile.md | | 07 | 提醒系统:提供者、队列、气泡、强提醒、音效、TTS、天气提醒 | features | parts/07-notifications.md | | 08 | 自动化:触发器/动作/规则集/条件 | features | parts/08-automation.md | | 09 | 主题系统:内置主题、主题包格式、壁纸取色、主题编辑器 | design | parts/09-themes.md | | 10 | 设置中心:页面树、每页控件与默认值、搜索、缓存策略 | windows | parts/10-settings.md | | 11 | 其他窗口:启动闪屏、欢迎向导 OOBE、通知中心、崩溃/恢复、数据迁移、更新、教程、作者/致谢等 | windows | parts/11-other-windows.md | | 12 | 插件系统 + 多进程 IPC + 单实例 + 自动更新(ClassHelper 映射) | stack | parts/12-plugins-ipc.md | | 13 | 数据模型与存储:Settings/Profile/ClassPlan/TimeLayout/Automation/Notification JSON schema、备份、迁移、路径 | stack | parts/13-data-storage.md | | 14 | 动画与动效总表:每个动画的触发、属性、时长、曲线、层级 | design | parts/14-animations.md | | 15 | 资源清单:图标、字体、音效、图片、本地化、主题预览 | design | parts/15-assets.md | | 16 | 质量门禁与验收清单 | Lead | parts/16-acceptance.md | | 17 | 开发里程碑与实现顺序 | Lead | parts/17-milestones.md | | 18 | 禁止事项与边界(禁止冒烟、性能底线等) | Lead | parts/18-forbidden.md | ## 7. 产出质量自检(提交前逐条确认) - [ ] 所有关键数值有来源或标注【推断】,没有编造「看起来很精确」的数字。 - [ ] 覆盖了该 part 对应源码目录的全部主要文件(列出已读文件清单在 `analysis/` 备注中)。 - [ ] 用词遵循术语表;part 之间不冲突(例如窗口圆角、动画时长、颜色 token 名)。 - [ ] 有「验收标准」小节:实现者如何自查这一部分做对了。 - [ ] 没有出现「我们可以/建议考虑」这类模糊表述。 - [ ] 没有运行任何 UI/构建命令。 ## 8. 参考入口(先读这些) ClassIsland: - `repos/ClassIsland/README.md`、`repos/ClassIsland/AGENTS.md`、`repos/ClassIsland/doc/`(文档) - `repos/ClassIsland/ClassIsland/MainWindow.axaml`(686 行,主界面)、`MainWindow.axaml.cs` - `repos/ClassIsland/ClassIsland/Models/Settings.cs`(全部设置默认值) - `repos/ClassIsland/ClassIsland/Controls/MainWindowLine.axaml` - `repos/ClassIsland/ClassIsland/XamlThemes/{FluentTheme,ClassicTheme}/`(主题与样式) - `repos/ClassIsland/ClassIsland/Controls/Components/`(组件) - `repos/ClassIsland/ClassIsland/Views/`(全部窗口) - `repos/ClassIsland/ClassIsland.Core/`(框架、抽象、控件、服务) - `repos/ClassIsland/ClassIsland/Assets/`(图标/字体/音效/教程/Localization) ClassHelper: - `repos/ClassHelper-master/AGENTS.md`、`README.md`、`docs/` - `repos/ClassHelper-master/packages/desktop-client/src/main/island.ts`、`config.ts`、`ipc.ts` - `repos/ClassHelper-master/packages/desktop-client/src/island/*`(IslandApp.vue、spring.ts、squircle.ts、classic-island.css) - `repos/ClassHelper-master/packages/desktop-client/src/preload/*`、`src/renderer/**` - `repos/ClassHelper-master/packages/ui/src/tokens.css`、`theme.css` - `repos/ClassHelper-master/packages/desktop-client/src/renderer/composables/motion.ts` 提示:中文文件是 UTF-8;PowerShell `Get-Content` 可能乱码,请用 `read` 工具读文本。