refactor(core): migrate to Bun and converge acquisition policies and Agent boundaries

This commit is contained in:
root committed 2026-10-13 14:37:03 +08:00
1 parent 3f1c6d02f6
commit 27c0f27434
268 files changed
+7468 -7852

No files matched your search

+15 -14
View File
@@ -1,34 +1,35 @@
# UHD Media Tool
影视自动化工具:站点 / RSS 获取 → 识别 → 下载(qB)→ 整理入库 → 刮削,带 Agent。后端 Deno + Hono + Kysely(PostgreSQL),前端 React Router 8 + Vite,同一个 workspace。业务逻辑以 MoviePilot v3 为参考(`docs/porting/`)。
影视自动化工具:站点 / RSS 获取 → 识别 → 下载(qB)→ 整理入库 → 刮削,带 Agent。后端 Bun 1.4.3 + Hono + Kysely(PostgreSQL),前端 React Router 8 + Vite,同一个 workspace。业务逻辑以 MoviePilot v3 为参考(`docs/porting/`)。
面向团队内部使用,目前只有本机测试环境:**避免过度设计和过度防御**,只处理已确认会影响正常使用的问题。回复和文档用中文。
## 常用命令
```sh
deno task dev:up # 开发库(127.0.0.1:55433)+ 迁移到最新;拉代码后先跑
deno task dev # API 4390 + web 5180(4380 是本机部署版,别占)
deno task test:all # 全量测试,逐包跑完汇总;连不上测试库直接失败
deno task typecheck # tsc + deno check
deno task lint # biome;deno task fmt 会写文件,只对自己改的路径用
deno task ci # 提交前完整检查(含 web 构建与编译产物自检)
deno task release # 测试环境发布,见下
bun run dev:up # 开发库(127.0.0.1:55433)+ 迁移到最新;拉代码后先跑
bun run dev # API 4390 + web 5180(4380 是本机部署版,别占)
bun run test:all # 全量测试,逐包跑完汇总;连不上测试库直接失败
bun run typecheck # tsc 7
bun run lint # biome;bun run fmt 会写文件,只对自己改的路径用
bun run ci # 提交前完整检查(含 web 构建与编译产物自检)
bun run release # 测试环境发布,见下
```
REST 端点定义按领域分在 `packages/contracts/src/api/*.ts`,`api.ts` 按顺序合并成 `Api`(顺序即路由注册顺序)。整理服务按阶段分在 `organize-plan / -exec / -finalize / -records / -types.ts`,外部仍从 `organize.ts` 引用。
只改一个包时可在包目录跑 `deno run -A npm:vitest run <文件>`;web 包用 `../../node_modules/.bin/vitest run`(Node)。改迁移后跑 `deno task gen:types` 重新生成 `packages/db/src/types.ts`,contracts 枚举顺序与数据库保持一致(`packages/contracts/test/db-sync.test.ts` 会查)。
只改一个包时可在包目录跑 `bun x --bun vitest run <文件>`;web 包用 `../../node_modules/.bin/vitest run`(Bun)。改迁移后跑 `bun run gen:types` 重新生成 `packages/db/src/types.ts`,contracts 枚举顺序与数据库保持一致(`packages/contracts/test/db-sync.test.ts` 会查)。
## 约定
- **先提交再部署**。发布只走 `deno task release`:工作区不干净直接拒绝;版本取根 `deno.json`(所有成员包同一版本);`CHANGELOG.md` 必须先有 `## [x.y.z]` 条目;脚本打 tag `vx.y.z`、构建镜像、只替换 app 容器(启动时自动迁移)、核对健康接口版本。测试环境不需要备份、在途任务清单、源码指纹等重流程。
- 工程设计遵循 `docs/runbook/dev.md`「工程设计与适度抽象」:业务服务提供稳定入口,路由与能力共用;及时提取已有稳定的共用机制,执行策略和业务副作用保持显式。状态由对应业务模块维护,配置在模块入口解析;不提前创建通用框架。
- **先提交再部署**。发布只走 `bun run release`:工作区不干净直接拒绝;版本取根 `package.json`(所有成员包同一版本);`CHANGELOG.md` 必须先有 `## [x.y.z]` 条目;脚本打 tag `vx.y.z`、构建镜像、只替换 app 容器(启动时自动迁移)、核对健康接口版本。测试环境不需要备份、在途任务清单、源码指纹等重流程。
- 功能在分支上做,完成后合回 main;提交按功能拆,别把不相关的改动带进同一个提交。
- 说"检查通过"只认 `deno task test:all` / `deno task ci` 的实际输出;跳过的用例不算通过。
- 解析外部下载 / 上传的文件或字节(种子、字幕、压缩包、图片等)一律走沙箱任务 `runSandbox`(`apps/server/src/sandbox/`,见 ADR-005),不在主进程里直接解析。
- 说"检查通过"只认 `bun run test:all` / `bun run ci` 的实际输出;跳过的用例不算通过。
- 解析外部下载 / 上传的文件或字节(种子、字幕、压缩包、图片等)一律走沙箱任务 `runSandbox`(`apps/server/src/sandbox/`,见 ADR-005 与 ADR-007),不在主进程里直接解析。
- 新增 Agent 能力要登记到某个 Skill(`packages/agent/skills/*/SKILL.md`)和能力地图(`packages/agent/src/prompt/layers/capabilities.ts`),否则 agent 测试会红。
- 界面文案守 `docs/design/glossary.md` 的术语与标点(`deno task check:copy`);状态色只表示状态(`StatusBadge` 带圆点,别拿来显示数量)。
- 主工作区不留常驻 dev 进程(`--watch` 会改写 `deno.lock`);构建前确认 `deno.lock` 没被改。
- 界面文案守 `docs/design/glossary.md` 的术语与标点(`bun run check:copy`);状态色只表示状态(`StatusBadge` 带圆点,别拿来显示数量)。
- 主工作区不留常驻 dev 进程;依赖安装使用 `bun install --frozen-lockfile` 保持锁文件一致。
## 测试