- pnpm workspace: apps/{web,server}, packages/{contracts,db,domain,adapters,tasks,agent,testkit}
- server: Hono + zod-openapi, API Key auth with scopes, redacting pino logger, SSE event bus with replay, worker heartbeat
- db: Kysely + pg, file migrator, 0001_init (settings/api_key/audit_event/outbox_event)
- web: React Router 7 SPA console shell with 12 workspace placeholders, uhd_web tokens/ui/guard scripts
- docs: ADR-001 (Node over Deno), dev runbook, design system rules
Co-Authored-By: Claude Fable 5.1 <[email protected]>
38 lines
1.6 KiB
Markdown
38 lines
1.6 KiB
Markdown
# UHD Media Tool
|
|
|
|
内部使用、Agent 自动化优先的媒体整理入库平台。需求基线见 [media_automation_requirements_architecture_v0.7.md](media_automation_requirements_architecture_v0.7.md),v0.1 工程任务书见 [docs/plan/00-first-version-plan.md](docs/plan/00-first-version-plan.md)。
|
|
|
|
## 快速启动
|
|
|
|
```sh
|
|
cp .env.example .env
|
|
pnpm db:up # postgres:16-alpine,端口 55433
|
|
pnpm install
|
|
pnpm db:migrate
|
|
pnpm dev # API http://localhost:4380 控制台 http://localhost:5180
|
|
```
|
|
|
|
提交前:`pnpm run ci`(typecheck + lint + test + check:tokens + build)。注意不要用 `pnpm ci`,它在 pnpm 11 是内置的 clean-install。
|
|
|
|
更多见 [docs/runbook/dev.md](docs/runbook/dev.md)。
|
|
|
|
## 仓库结构
|
|
|
|
| 路径 | 职责 |
|
|
|---|---|
|
|
| `apps/web` | React Router 7 SPA 控制台,沿用 uhd_web 设计系统 |
|
|
| `apps/server` | Hono API(`/api/v1`)+ SSE + worker 入口 |
|
|
| `packages/contracts` | zod schema:API/事件/能力的唯一定义 |
|
|
| `packages/db` | Kysely 客户端、表类型与迁移 |
|
|
| `packages/domain` | 纯业务逻辑,无 IO |
|
|
| `packages/adapters` | qB / RSS / 站点 / TMDB / Emby / 文件系统适配 |
|
|
| `packages/tasks` | 持久任务与 outbox |
|
|
| `packages/agent` | Pi 接入与能力注册桥接 |
|
|
| `packages/testkit` | mock 服务与测试夹具 |
|
|
| `docs/adr` | 架构决策记录 |
|
|
| `docs/design` | 设计系统规范 |
|
|
| `docs/runbook` | 运行手册 |
|
|
| `spikes/` | 独立兼容性验证(不属于 workspace) |
|
|
|
|
技术选型:Node.js 24 + pnpm workspace + TypeScript 5.9 strict(偏离 REQ 的 Deno 方向,原因见 [ADR-001](docs/adr/ADR-001-runtime-node-not-deno.md))。
|