refactor: purge Node.js, Rust is the one true backend

- Moved boosapi-rs/* to repo root
- Deleted all Node.js source (src/server/, src/web/, scripts/)
- Deleted node_modules, package.json, tsconfig, vite.config
- Updated .gitignore and AGENTS.md for Rust-only stack
- Fixed static file path for frontend dist/web/
- Dockerfile stays the same (already Rust-only)
- Kept dist/web/ for Rust static serving
This commit is contained in:
boos
2026-05-18 09:11:29 +08:00
parent 725f44699a
commit 5d29f03d50
1165 changed files with 271 additions and 323571 deletions
+88 -98
View File
@@ -1,80 +1,75 @@
# 2026-05-15 开发日报
# 2026-05-15 技术报告 / Technical Report
## 概要
## Executive Summary
今日完成两项主要工作:**Metapi → BoosAPI 全局改名** 和 **ComfyUI Agent 对话助手开发**。
本日完成 BoosAPI 品牌迁移、ComfyUI Agent 对话助手开发、Gitea CI/CD Runner 部署、Notification Service 能力梳理及部署文档重写。核心变更包括:将项目内 `Metapi` 全局替换为 `BoosAPI`,新增 `/comfyui-agent` 对话式 AI 视频生成入口,完成 SSE streaming 前后端链路,并完善生产部署文档与通知服务说明。
---
## 一、Metapi → BoosAPI 全局改名
## 1. Metapi → BoosAPI 全局改名 / Global Rename
### 变更范围
### 1.1 变更范围 / Change Scope
| 区域 | 内容 |
|------|------|
| UI 界面 | About 页面、侧边栏、登录页品牌名 |
| i18n 翻译 | 所有语言文件中的 "Metapi" → "BoosAPI" |
| 后端通知 | `notifyService.ts` 通知前缀 `[metapi]` → `[BoosAPI]` |
| 桌面元数据 | Electron/Docker 描述信息 |
| 区域 / Area | 变更内容 / Changes |
|---|---|
| UI 界面 / UI | About 页面、侧边栏、登录页品牌名更新为 `BoosAPI` |
| i18n 翻译 / Internationalization | 所有语言文件中的 `Metapi` 替换为 `BoosAPI` |
| 后端通知 / Backend Notification | `notifyService.ts` 通知前缀由 `[metapi]` 改为 `[BoosAPI]` |
| 桌面元数据 / Desktop Metadata | Electron / Docker 描述信息更新 |
### 已全部改完的(此表仅作历史记录)
### 1.2 已完成的技术标识替换 / Completed Technical Identifier Changes
| 项 | 说明 |
|---|------|
| `x-metapi-*` HTTP 头 | 已改 `x-boosapi-*`,注意有外部依赖的需同步更新 |
| `metapi:` 推理签名前缀 | 已改 `boosapi:` |
| `__metapiTruncated` 等运行时属性 | 已改 `__boosapi*` |
| `METAPI_*` 环境变量 | 已改 `BOOSAPI_*`,部署配置需要同步 |
| `package.json` name | 已改 `boosapi` |
| 项目 / Item | 变更说明 / Description |
|---|---|
| HTTP Header | `x-metapi-*` → `x-boosapi-*` |
| 推理签名前缀 / Inference Signature Prefix | `metapi:` → `boosapi:` |
| 运行时属性 / Runtime Properties | `__metapiTruncated` 等 → `__boosapi*` |
| 环境变量 / Environment Variables | `METAPI_*` → `BOOSAPI_*` |
| Package Name | `package.json` 中 `name` 更新为 `boosapi` |
### 验证
### 1.3 验证方式 / Verification
```bash
# 确认没有遗漏的 metapi
grep -rn 'mM]etapi' src/ --include='*.ts' --include='*.tsx' --include='*.html' \
grep -rn '[mM]etapi' src/ --include='*.ts' --include='*.tsx' --include='*.html' \
| grep -v '.test.' | grep -v node_modules | grep -iv 'boosapi'
# 应无输出
```
预期结果:无输出。
---
## 二、ComfyUI Agent 对话助手
## 2. ComfyUI Agent 对话助手 / Conversational Assistant
### 功能
### 2.1 功能概述 / Feature Overview
在侧边栏新增「对话助手」入口(`/comfyui-agent`),提供与 AI 视频生成助手的对话式交互界面。
侧边栏新增「对话助手」入口,路由为 `/comfyui-agent`,提供与 AI 视频生成助手的对话式交互,支持文本、角色提示词、图像、场景、语音和 ComfyUI workflow 等多类型内容的流式渲染。
### 技术架构
### 2.2 技术架构 / Architecture
```
用户 → POST /api/comfyui-agent/chat → BoosAPI → LLM 本地 API (streaming)
↓
LLM 生成 SSE 事件流
↓
BoosAPI 转发 SSE → 浏览器
用户 / User → POST /api/comfyui-agent/chat → BoosAPI → LLM 本地 API (streaming)
→ SSE 事件流 → BoosAPI 转发 → 浏览器
```
### 后端文件
### 2.3 后端实现 / Backend
| 文件 | 作用 |
|------|------|
| 文件 / File | 作用 / Responsibility |
|---|---|
| `src/server/routes/api/comfyuiAgent.ts` | SSE 流式聊天接口,调用本地 LLM API |
| `src/server/services/boosapi_comfy_nodes.py` | ComfyUI 自定义节点,默认连接本地 BoosAPI `http://127.0.0.1:4000/v1` |
| `src/server/services/boosapi_comfy_nodes.py` | ComfyUI 自定义节点,默认连接 `http://127.0.0.1:4000/v1` |
### 前端文件
### 2.4 前端实现 / Frontend
| 文件 | 作用 |
|------|------|
| 文件 / File | 作用 / Responsibility |
|---|---|
| `src/web/pages/ComfyUIAgent.tsx` | 对话界面组件,SSE 流式渲染 |
| `src/web/App.tsx` | 注册路由 `/comfyui-agent` + 侧边栏项 |
| `src/web/App.tsx` | 注册 `/comfyui-agent` 路由及侧边栏入口 |
### Agent 输出格式(SSE 事件流)
### 2.5 SSE 事件类型 / SSE Event Types
LLM 直接生成 SSE 格式输出,后端透明转发:
| type | 含义 | 前端渲染 |
|------|------|---------|
| `text` | 流式文本 | 追加到对话 |
| `type` | 含义 / Meaning | 前端渲染 / Rendering |
|---|---|---|
| `text` | 流式文本 | 追加到对话内容 |
| `character_prompts` | 四角度角色提示词 | 角色卡片 |
| `image` | 生成的角色图像 | 内联图片 |
| `scene` | 场景提示词 | 场景块 |
@@ -82,93 +77,88 @@ LLM 直接生成 SSE 格式输出,后端透明转发:
| `comfyui_workflow` | 完整 ComfyUI 工作流 JSON | 下载按钮 |
| `done` | 流结束 | 停止等待 |
### 验证结果
### 2.6 验证结果 / Verification
- `npm install` ✅
- `npm run typecheck:web` ✅ 0 error
| 命令 | 结果 |
|---|---|
| `npm install` | ✅ |
| `npm run typecheck:web` | ✅ 0 error |
---
## 三、Gitea CI/CD Runner 部署
## 3. Gitea CI/CD Runner 部署 / Runner Deployment
### 环境
### 3.1 部署信息 / Deployment Info
- 系统:Alpine Linux (OpenRC)
- 部署方式:裸机直跑(无 Docker in Docker)
- Runner 版本:v0.1.3
| 项目 | 详情 |
|---|---|
| 系统 | Alpine Linux, OpenRC |
| 部署方式 | 裸机直跑,无 DinD |
| Runner 版本 | v0.1.3 |
| 注册模式 | `:host` 标签 |
| OpenRC 服务 | `/etc/init.d/gitea-runner` |
| 代理 | `HTTP_PROXY=http://127.0.0.1:7890` |
| `NO_PROXY` | 包含 `git.boos.lat` |
| 持久化 | `ephemeral: false` |
### 关键配置
### 3.2 已知限制 / Known Limitations
- 注册模式:`:host` 标签(直接宿主机运行)
- OpenRC 服务:`/etc/init.d/gitea-runner`
- 代理:`HTTP_PROXY=http://127.0.0.1:7890`(在 init 脚本中声明)
- `NO_PROXY` 含 `git.boos.lat`(不经过代理连接 Gitea)
- 持久化:`ephemeral: false`(重启不丢注册)
### 已知限制
- 不支持 Docker in Docker(CI 用 `runs-on: host`)
- Gitea 无原生 artifact 存储,构建产物需手动备份
- `actions/checkout` 偶尔 timeout,可重试或使用本地 git 镜像
- 不支持 Docker in Docker;CI 使用 `runs-on: host`
- 无原生 artifact 存储;构建产物需手动备份
- `actions/checkout` 偶发 timeout;可重试或使用本地 git 镜像
---
## 四、Notification Service 通知服务
## 4. Notification Service
### 支持通道
### 4.1 支持通道 / Supported Channels
| 通道 | 配置前缀 | 协议 |
|------|---------|------|
|---|---|---|
| Telegram | `telegram*` | Bot API |
| 企业微信 | `wecom*` | Webhook |
| 飞书 | `feishu*` | Webhook |
| 通用 Webhook | `webhook*` | JSON POST |
| Bark | `bark*` | HTTP (iOS) |
| Bark | `bark*` | HTTP, iOS |
| Server酱 | `serverchan*` | HTTP |
| SMTP | `smtp*` | Email |
### Telegram 消息格式
```
[BoosAPI][INFO] 标题
消息内容
Level: info
Local Time: 2026-05-15 15:30:00 (Asia/Shanghai)
UTC Time: 2026-05-15T07:30:00.000Z
```
### 4.2 Telegram 消息格式
- 纯文本,不启用 HTML/Markdown 解析
- 最大 3900 字符,超长截断加 `...(truncated)`
- 支持 Telegram Topics(通过 `message_thread_id`)
- 单条最大 3900 字符,超长截断 + `...(truncated)`
- 支持 Telegram Topics(`message_thread_id`)
### 节流机制
### 4.3 节流机制 / Throttling
- 基于通知签名的全局冷静期(`notifyCooldownSec`)
- 同一签名在冷静期内重复触发合并为一次
- 冷静期是全局的,不是按通道独立
- 基于通知签名的全局冷静期:`notifyCooldownSec`
- 同一签名在冷静期内重复触发时合并为一次
- 冷静期为全局共享,不按通道独立
## 五、部署文档完善
---
对 `docs/deployment.md` 做了全量重写,修复所有 metapi 残留并补全内容:
## 5. 部署文档完善 / Deployment Documentation
- 完整的 `docker-compose.yml` 示例(含 healthcheck)
- `.env` 文件变量插值模式
Commit: `5bd847d`
对 `docs/deployment.md` 全量重写,修复所有 `metapi` 残留:
- 完整 `docker-compose.yml` 示例(含 healthcheck)
- `.env` 变量插值模式
- 全部环境变量参考表(20+ 变量)
- 扩展配置:外部 MySQL/PostgreSQL、Redis、资源限制
- 生产部署检查清单
- Nginx 反向代理(含 WebSocket 和 SSE 支持)
- Nginx 反向代理(WebSocket + SSE)
- 管理后台 IP 白名单限制示例
- Docker run 常用选项表
- 升级/回滚操作流程
提交:`5bd847d`
---
## 待办 / 遗留问题
## 6. 待办事项 / TODO
1. **服务未运行** — CI 崩溃后 `metapi-stack` 容器和 BoosAPI 服务未启动,需决定用 Docker 还是直接 npm run dev
2. **Telegram 消息格式待优化** — 用户要求优化,具体方向待确认(HTML/Markdown/简化)
3. **CI pipeline 不稳定** — Docker 镜像拉取超时,需进一步排查网络问题
| 优先级 | 事项 | 说明 |
|---|---|---|
| High | 服务未运行 | CI 崩溃后容器未恢复,需确定 Docker vs `npm run dev` |
| Medium | Telegram 格式优化 | 待确认 HTML/Markdown/简化 |
| Medium | CI pipeline 稳定性 | Docker 镜像拉取超时,需排查网络 |