Files
UHD_Media_Tool/CLAUDE.md
T
rootandClaude Opus 5.5 11ca2f01ff chore: 一键检查、发布脚本与开发环境约定
- deno task test:all(scripts/test-all.sh):逐包跑完再汇总,连不上测试库直接失败,
  web 用 Node 跑 vitest;deno task ci 改用它
- deno task release(scripts/release.sh):工作区不干净、CHANGELOG 无本版条目即拒绝;
  打 tag、构建、只替换 app、核对健康接口版本
- deno task dev:up:起开发库并迁移到最新;开发 API 端口改 4390(4380 留给本机部署版)
- CLAUDE.md:命令、提交与发布约定、文档放哪

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-02 16:08:09 +08:00

42 lines
3.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.
# UHD Media Tool
影视自动化工具:站点 / RSS 获取 → 识别 → 下载(qB)→ 整理入库 → 刮削,带 Agent。后端 Deno + 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 # 测试环境发布,见下
```
只改一个包时可在包目录跑 `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` 会查)。
## 约定
- **先提交再部署**。发布只走 `deno task release`:工作区不干净直接拒绝;版本取根 `deno.json`(所有成员包同一版本);`CHANGELOG.md` 必须先有 `## [x.y.z]` 条目;脚本打 tag `vx.y.z`、构建镜像、只替换 app 容器(启动时自动迁移)、核对健康接口版本。测试环境不需要备份、在途任务清单、源码指纹等重流程。
- 功能在分支上做,完成后合回 main;提交按功能拆,别把不相关的改动带进同一个提交。
- 说"检查通过"只认 `deno task test:all` / `deno task ci` 的实际输出;跳过的用例不算通过。
- 新增 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/plan/README.md`;做完的计划、验收、发布记录直接删除(git 历史可查),不留归档。
- 版本变化:`CHANGELOG.md`,每版几行,不另写长篇发布记录。
- 运维与使用:`docs/runbook/`;设计规范:`docs/design/`;架构决策:`docs/adr/`;MP 对照:`docs/porting/`。
- 证据、截图、构建日志放 `.local/`(不进 git)。
- 踩过的坑:`docs/plan/lessons.md`,派子代理或并行开发前先读。
## 参考
- MoviePilot 固定源码(只读):`/tmp/umt-moviepilot-v3-review-20261001`(v3.0.10-1,`0aa8571`),对照结论见 `docs/porting/moviepilot-v3-comparison.md`。
- 本机部署:`docker compose --env-file .env.deploy …`,app 经 Caddy 暴露在 `https://<host>:4380`,容器 HTTP 在 `127.0.0.1:4381`。