diff --git a/docs/index.md b/docs/index.md index df74466..b79e7d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,6 +7,7 @@ - **框架**:Next.js(前后端不分离,WebUI 作为本地界面) - **UI 库**:Ant Design - **图标库**:@ant-design/icons +- **通信层**:tRPC(避免手写 API Route,除了 `[trpc]/route.ts` 一个入口文件) - **工具库**:use-debounce(防抖) - **Markdown 编辑器**:@uiw/react-md-editor(风格需调整为与 Ant Design 统一) - **校验库**:Zod(运行时校验 config 文件 + API 响应) @@ -35,7 +36,12 @@ ### 前后端通信 -使用 Next.js Server Actions 或直接在 Server Component 中调用后端函数,**不创建 API Route**。前端通过 `"use server"` 指令的函数或 Server Component 的 `async` 逻辑直接调用 `src/lib/` 中的后端代码,避免前后端分离的冗余 API 层。 +日常功能使用 Next.js Server Actions 或直接在 Server Component 中调用后端函数,**不创建 API Route**。前端通过 `"use server"` 指令的函数或 Server Component 的 `async` 逻辑直接调用 `src/lib/` 中的后端代码,避免前后端分离的冗余 API 层。 + +仅发布功能使用 tRPC(需 subscription 推送实时进度),在 `src/app/api/publish/[trpc]/route.ts` 中定义唯一的 HTTP 入口,前端通过 tRPC Client 调用: + +- 变更:`trpc.release.publish.useMutation()` +- 订阅:`trpc.release.progress.useSubscription(...)` ### `src/` 目录说明 @@ -115,6 +121,11 @@ src/types/ - `https://www.npmjs.com/package/use-debounce` — npm 页面 - `https://raw.githubusercontent.com/xnimorz/use-debounce/refs/heads/master/README.md` — README 原文 +#### tRPC + +- `https://trpc.io/llms.txt` — 目录索引(带描述) +- 每页逐页获取正文 + #### Zod - `https://zod.dev/llms.txt` — 目录索引(纯链接) diff --git a/docs/workflow.md b/docs/workflow.md index 1feafea..cb7ec69 100644 --- a/docs/workflow.md +++ b/docs/workflow.md @@ -124,12 +124,14 @@ ### 5. 执行发布 -1. 前端显示两个进度条(仅显示有勾选任务的平台),格式:`{平台图标} 平台名: [======== ] 0 / N` -2. 单个平台内按 MC 版本顺序逐个提交,**不可并行**;两个平台之间可以并行执行 -3. 每个版本的发布流程: +1. 前端调用 `trpc.release.publish.useMutation()` 发起发布 +2. 前端通过 `trpc.release.progress.useSubscription()` 监听进度,实时更新进度条 +3. 进度条格式:`{平台图标} 平台名: [======== ] 0 / N`,仅显示有勾选任务的平台 +4. 单个平台内按 MC 版本顺序逐个提交,**不可并行**;两个平台之间可以并行执行 +5. 每个版本的发布流程: - 解析模板:用 `version` 和 `mc_version` 填入各平台 `version_name`、`version` 模板(含递归解析) - Modrinth:构造 multipart/form-data 请求,含 `data` JSON + 构建产物文件 + 源码文件 - CurseForge:构造 multipart/form-data 请求,含 `metadata` JSON + 文件 - - 更新对应进度条 -4. **任一请求失败则取消当前平台的后续所有任务**,不影响另一个平台 -5. 全部完成或失败后,弹出结果 Modal 显示最终状态(成功数 / 失败数) + - 通过 tRPC subscription 推送进度更新 +6. **任一请求失败则取消当前平台的后续所有任务**,不影响另一个平台 +7. 全部完成或失败后,弹出结果 Modal 显示最终状态(成功数 / 失败数)