Files
Website/README.md
KenanZhu 421c2a9fcc
Build and publish website container / build (push) Successful in 43s
Publish tested website images to Gitea Registry
2026-11-04 11:27:06 +08:00

98 lines
5.2 KiB
Markdown
Raw Permalink 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.
# AutoLibrary Website
北京建筑大学图书馆自动化工具的官网、软件下载中心与社区主题市场。
- 产品仓库:<https://gitea.kenanzhu.com/KenanZhu/AutoLibrary>
- 用户手册:<https://manuals.autolibrary.kenanzhu.com>
- 发行版本:<https://gitea.kenanzhu.com/KenanZhu/AutoLibrary/releases>
## 架构
前端采用 Vue 3、TypeScript、Vite、Vue Router、Pinia 和 Lucide 图标。所有字体、图标和图片随构建产物提供,无需第三方 CDN。页面使用统一的布局、表单和状态组件,深浅主题由 CSS 语义变量管理。
Go/Gin 前端服务提供构建产物并将 `/api/*` 代理到后端;后端保留 GORM/SQLite、Casdoor 和本地主题文件存储。既可一起启动,也可分别部署。当前面向单实例运行。
```text
frontend/
src/
api/ # 请求、响应、下载和错误处理
components/ # 全站与业务共享组件
composables/ # 画廊等可复用交互逻辑
pages/ # 按路由拆分的页面
stores/ # 账户与外观状态
styles/ # 页面专用样式
site.ts # 项目链接、URL 和日期工具
types.ts # API 数据类型
styles.css # 双主题变量与响应式样式
public/assets/ # 原有品牌标识与实机截图
dist/ # 生产构建产物(生成)
backend/
handlers/themes_handler/ # 认证、查询、上传、更新、审核、下载
services/ # 主题打包、文件存储、事务协调、用户缓存
database/ # SQLite 初始化
models/ # 数据模型
```
## 本地开发
需要 Go 1.25.6+ 和 Node.js 22.13+(推荐当前 Node LTS,Vite 要求 Node 22.12+,ESLint 要求 22.13+)。从项目根目录运行:
```sh
# 首次配置;已有 config.json 时保留原文件
cp config.example.json config.json
npm --prefix frontend ci
go run . backend
```
在另一个终端启动前端:
```sh
npm --prefix frontend run dev
```
开发地址为 `http://127.0.0.1:5173`。默认代理到 `http://127.0.0.1:8080`;后端端口不同时,在 `frontend/.env.local` 设置 `API_PROXY_TARGET=http://127.0.0.1:实际端口`。无需在前端添加服务器密钥。
登录与注册需要配置并启动 Casdoor。未配置时,浏览下载和主题市场仍可用;账户操作会显示服务未启用。管理员审核统一使用 Casdoor 管理员账户。
## 构建与检查
```sh
npm --prefix frontend run typecheck
npm --prefix frontend run check
npm --prefix frontend run build
go test ./...
go build -o webserver .
./webserver start
```
`build` 已包含类型、ESLint 和 Prettier 检查,产物位于 `frontend/dist`。使用 `npm --prefix frontend run format` 统一前端源码格式。没有增加测试用例或测试工具链。Go 检查用于验证已有包可以编译。
生产环境默认访问 `http://127.0.0.1:3000`,实际地址以 `config.json` 为准。`frontend` 和 `backend` 子命令支持独立启动,均可使用 `--config /absolute/path/config.json`。请将工作目录设置为项目部署目录。
## 发行与下载数据
版本数据库是官网版本信息的唯一来源。首页通过 `GET /api/download/latest` 获取最新已发布的稳定版(按 `releaseDate`、ID 降序;无稳定版时 `data: null`),下载列表保持原有分页接口。`/api` 前缀由 Go 前端或 Vite 代理移除,直接访问后端时使用 `/download/latest` 等路径。
版本模型新增以下字段,启动时由 GORM 增量添加列,不删除原字段或数据:
| JSON 字段 | 用途 |
| --- | --- |
| `giteaZipUrl` | Gitea Windows 便携包 |
| `giteaInstallerUrl` | Gitea Windows 安装程序 |
| `giteaDmgUrl` | Gitea macOS 安装包 |
| `releaseNotesUrl` | 对应版本的发行说明 |
使用已有受 API Key 保护的 `POST/PUT /download/versions` 接口维护这些字段。提供真实的 Gitea 附件地址;不要仅将历史 GitHub URL 替换域名。新页面没有可用附件地址时,提供 Gitea 发行列表入口,云盘下载照常保留。原 `github*Url` 字段继续供已有 API 调用使用,新页面不再展示 GitHub 下载入口。
独立更新日志已移除,`/changelog` 永久跳转 `/downloads`。发行说明在 Gitea 查看;公告接口及其数据库保留。个人下载历史尚未实现,本次没有扩展该功能。
## 发布与维护
网站源码推送到 Gitea 的 `main` 后,由专用 Runner 构建、验证并发布网站镜像到 Gitea。镜像运行、数据挂载和切换步骤见 [容器部署说明](docs/container-deployment.md)。使用原生 systemd 发布时,见 [Gitea 原生部署](docs/gitea-deployment.md)。
完整部署、备份和回滚步骤见 [Ubuntu 部署说明](docs/migration-to-ubuntu.md)。配置和运行时数据与前端构建分开保存;本地现有数据库、主题文件和 Casdoor 配置不需要重建。
迁移前的静态页面、脚本和混淆工具已保存在项目内 `.legacy/`,不参与构建或运行,可用于核对历史内容。
主题上传支持最大 8 MB 的 `.qss` 和最大 4 MB 的 PNG/JPG 预览图,后端总请求体上限 16 MB。主题和打包文件一起保存;文件、元数据或预览更新后重新进入审核队列。退出时先停止接收请求,再关闭数据库。