Files
ClassHelper/docs/index.md
T
LoveChengke 0ea6bd887f feat(website,docs,build): 官网加一个下载页(挑版本装机),文档站的照片换成与 README 同一份
下载页(`website/download.html` + `assets/download.js`)

- 官网首页的「立即下载」、顶栏与页脚的「取安装包」全部指向新页 `/download.html`。
  那一页是「先挑一个版本,再挑要装的那一份」:一个版本分段控件 + 四张卡
  (班级端 / 服务端 Windows / 服务端 Linux / ClassIsland 插件),每张卡列出这一版里
  真实存在的文件、体积与直链;
- 版本与文件清单**不在站点里存副本**,每次打开都由 `assets/download.js` 当场读 GitHub
  Releases —— 文件名、体积、链接照抄发布页,不靠命名约定去猜;
- 读不到时(离线,或匿名接口 60 次/小时按出口 IP 被限流)退回页面上那份
  `<meta name="ch-version">`,按发布命名约定拼直链,并在页面上**明说这是拼出来的**;
- 老版本缺哪个包就显示「这一版没有发布…」(`v0.1.0-fix` 只有插件包,实测正确);
  Linux 那一行安装命令跟着选中版本钉上 `--version`(tag 不是 `x.y.z` 时不带);
- 动态建出来的卡片与文件行派发 `ch:content`,由 `main.js` 补挂按压反馈
  —— 这些元素是拉到清单之后才出现的,启动时还看不到它们。

文档站的照片(`docs/images/`)

- 页面里的图一律从 `docs/screenshots/**` 换成 `docs/images/**`:后者就是 README 与官网
  吃的那一份(字节相同),前者是 9-26 的冒烟留档,比 README 落后一个版本;
- 展示图与回归留档这两套图的分工写进 `docs/dev/testing.md`「截图留档」,含重新采集命令
  (冒烟会把「岛外留白对照图」落在同一个目录,所以要先落临时目录再挑);
- 顺带修 README 手机截图那张标错的图注(`mobile-dashboard.jpg` 是仪表盘,不是抽屉菜单);
- `docs/reference.md` 验收表里那张 ClassIsland「真机实测截图」不再嵌图:它是连着桌面、
  任务栏和另一个窗口整屏截下来的,当文档配图不能用。断言与用例名都保留,另外注明了抓图位置。

版本落点

- `scripts/version.mjs` 增加 `website/download.html` 的兜底版本号,落点 13 → 14 处
  (`AGENTS.md` §4.4 与 `docs/dev/release.md` 同步);
- README「开始使用」表里那三个文件名改成**发布页上真实的名字**
  (`-x64-client-setup` / `-x64-client-portable` / `-x64-server-setup`)—— 原来写的是构建
  产物的名字;「上传前把产物改成 ASCII 名」这一步也一并写进发布流程,
  它是官网下载页离线兜底与 README 表格的共同依据。
2026-10-06 18:37:42 +08:00

72 lines
4.2 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.
---
title: 首页
description: ClassHelper(Class Helper)的官方文档:安装部署、功能说明、运维手册与开发参考。
---
# ClassHelper文档
ClassHelper(Class Helper)是给中小学班级用的一套信息管理系统。**一份代码,四个交付物**:
装在服务器上的后端、给老师用的 Web 管理端、装在教室机器的桌面客户端(ClassHelper 班级端 / 教室大屏),
以及装在 [ClassIsland](https://classisland.tech) 上的联动插件。
<p class="ch-tagline">
老师发一条通知,教室那台机器上的灵动岛和 ClassIsland 会同时弹出来;学生打开客户端就能看到当天的课表和作业。
</p>
<div class="ch-cards">
<a class="ch-card" href="get-started/index.md">
<span class="ch-card-title">第一次装</span>
<span class="ch-card-desc">从零把服务端、管理端、ClassHelper 班级端和 ClassIsland 插件跑起来,大约半小时。</span>
</a>
<a class="ch-card" href="app/index.md">
<span class="ch-card-title">已经在用了</span>
<span class="ch-card-desc">课表、作业、通知、叫人、成绩、灵动岛,每一项具体怎么用。</span>
</a>
<a class="ch-card" href="management/index.md">
<span class="ch-card-title">负责运维</span>
<span class="ch-card-desc">部署形态怎么选、备份与恢复、换数据库、升级与回滚。</span>
</a>
<a class="ch-card" href="dev/index.md">
<span class="ch-card-title">要改代码</span>
<span class="ch-card-desc">架构、接口、数据模型、动效层,以及版本迭代与发布流程。</span>
</a>
</div>
## 它长什么样
<div class="ch-shots">
<img src="images/client-schedule.png" alt="桌面客户端 · 课表「今天」时间轴" />
<img src="images/island-5-clicked.png" alt="灵动岛 · 点开通知后的详情卡" />
<img src="images/mobile-notifications.jpg" alt="Web 管理端 · 手机上的抽屉导航与通知发布页" />
</div>
> 这些图都是脚本把程序真的跑起来截的,不是示意图。采集方式见 [验收与测试](dev/testing.md)。
## 目录
| 章节 | 里面有什么 | 谁看 |
| -------------------------------- | -------------------------------------------------------- | -------------------- |
| [快速上手](get-started/index.md) | 系统要求、安装、第一次配置、发布第一条内容 | 第一次部署的人 |
| [应用帮助](app/index.md) | 逐个功能怎么用,以及行为上的约定(什么时段弹、谁看得见) | 老师、班主任、管理员 |
| [管理运维](management/index.md) | 部署形态、Linux 运维命令、备份、换库、升级 | 管服务器的人 |
| [开发文档](dev/index.md) | 架构、REST API、实时事件、数据模型、权限、发布流程 | 改代码的人 |
| [常见问题](faq.md) | 装不上、连不上、改了不生效…… | 所有人 |
## 这套系统的三件事
**一、老师发,教室弹。** Web 端发布的内容通过 Socket.IO 按班级房间广播,客户端与灵动岛实时更新;
落到 ClassIsland 上的那部分走设备令牌的独立通道,走 HTTP 上报,不依赖教室机器的网络环境有多好。
**二、上课时段不打扰。** 「上课时段」由课表实时判定,普通通知只进队列、下课自动补弹,
紧急通知和叫人则立刻弹出来 —— 服务端强制拦截,绕开界面直接调接口一样会被拦。
**三、离线可用。** 客户端先写 IndexedDB,断网时回退缓存并在顶部提示;
恢复连接后自动重新拉取,教室网络抖一下不会让大屏变白。
## 关于本文档
- 文档站的源码就在仓库里(`docs/`),用 [docfx](https://github.com/dotnet/docfx) 生成,发布在 GitHub Pages 上。
每页右下角有「在 GitHub 上编辑这一页」,发现写错或写漏可以直接改。
- 版本号取自仓库根 `package.json`,显示在顶栏,与 [Releases](https://github.com/LoveChengke/classhelper/releases) 对齐。
- 想在自己机器上预览:`pnpm docs:build --serve`。