Files
sub2api-cn-relay-manager/docs/PROJECT_STRUCTURE.md
2026-05-28 10:13:13 +08:00

179 lines
4.8 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.
# 项目目录说明
日期2026-05-27
## 目的
这份文档用于回答两个问题:
1. 当前仓库各一级目录分别负责什么
2. 新增文件应该放到哪里,避免继续把运行时脚本、部署资产、验收证据混在一起
它不替代 `README.md`,而是补充更细的目录职责说明。
## 一级目录
### `cmd/`
程序入口:
- `cmd/server`
- 控制面 HTTP 服务入口
- `cmd/cli`
- 导入、overlay、验证等命令行入口
### `internal/`
控制面核心实现,按职责拆分:
- `internal/access`
- access closure、自愈、gateway 验证
- `internal/app`
- HTTP API、bootstrap、后台任务
- `internal/batch`
- batch import 请求与状态投影
- `internal/config`
- 配置装载
- `internal/host/sub2api`
- 宿主适配器
- `internal/overlay`
- host overlay 执行器
- `internal/pack`
- pack 装载、校验、overlay 解析
- `internal/probe`
- upstream / host smoke probes
- `internal/provision`
- import / preview / rollback / reconcile 编排
- `internal/reconcile`
- 后台对账
- `internal/store`
- SQLite repo 与 migrations
- `internal/testutil`
- 测试辅助
- `internal/worker`
- 后台 runner
### `packs/`
版本化模型包资产:
- `packs/openai-cn-pack`
- provider manifests
- checksums
- overlay metadata
这层只放 pack 资产,不放远端站点静态页。
### `deploy/`
面向部署目标的静态资产或配置模板。
当前已经纳入:
- `deploy/tksea-portal/index.html`
- `sub.tksea.top/portal/` 静态页
- `deploy/tksea-portal/admin/index.html`
- `sub.tksea.top/portal/admin/` 管理首页
- `deploy/tksea-portal/admin/providers.html`
- `sub.tksea.top/portal/admin/providers.html` provider 目录、导入页与服务端草稿入口
- `deploy/tksea-portal/admin/batch-import.html`
- `sub.tksea.top/portal/admin/batch-import.html` 结构化 batch-import 入口
- `deploy/tksea-portal/admin-batch-import.html`
- `sub.tksea.top/portal/admin-batch-import.html` 最小管理页
- `deploy/tksea-portal/nginx.sub.tksea.top.conf.example`
- 对应 Nginx 路由示例
- 同时包含 `/portal-proxy/``/portal-admin-api/` 两组反代
这层的规则是:
- 放“部署产物模板”
- 不放需要编译的 Go 代码
- 不放临时 `/tmp` 产物
### `scripts/`
运维、验收、部署脚本,当前已经按用途拆成三层目录:
- `scripts/deploy/`
- 部署与环境拉起脚本
- 例如 `build_local_image.sh``setup_remote43_patched_stack.sh``deploy_tksea_portal.sh`
- 其中 `setup_remote43_patched_stack.sh` 现会同步生成 remote43 固定仓库工作副本:
- `/home/ubuntu/sub2api-cn-relay-manager-git-current`
-`SUB2API_CRM_REPO_ROOT` 与 provider 草稿发布链复用
- `scripts/acceptance/`
- 真实宿主验收与证据处理脚本
- 例如 `real_host_acceptance.sh``import_remote43_provider.sh``check_deepseek_completion_split.sh`
- `scripts/test/`
- 脚本资产回归
- 例如 `test_real_host_scripts.sh``test_tksea_portal_assets.sh`
规则:
- 只放可执行运维脚本
- 新脚本必须先判断属于 `deploy/``acceptance/` 还是 `test/`
- 脚本依赖的静态模板应尽量放到 `deploy/``docs/`
### `docs/`
所有长期保留文档:
- 真相入口
- 执行板
- 验收 runbook
- provider 矩阵
- 外部 OpenClaw 验证
- 目录与部署说明
### `tests/`
集成测试套件:
- `tests/integration`
### `artifacts/`
真实验收产物与归档证据。
规则:
- `artifacts/real-host-acceptance/`
- 当前最终证据
- `artifacts/real-host-acceptance-archive/`
- 历史调试样本与归档
不要把部署模板、静态页、脚本说明放到这里。
### `web/`
保留给未来管理端前端实现。
当前公网 portal 已经独立作为 `deploy/tksea-portal/` 静态资产纳管,不应误放进 `web/`,因为它不是控制面管理后台。
## 当前推荐放置规则
新增文件时,优先按下面规则归类:
- 新的 provider / pack 元数据
-`packs/`
- 新的 Go 业务逻辑
-`internal/`
- 新的 CLI 或 server 入口
-`cmd/`
- 新的线上静态部署页 / 反向代理模板
-`deploy/`
- 新的运维或验收命令脚本
-`scripts/deploy``scripts/acceptance``scripts/test`
- 新的长期说明文档
-`docs/`
- 新的验收证据
-`artifacts/`
## 当前整理结果
截至 2026-05-27最近一轮目录整理主要做了三件事
1. 把原来只存在 `/tmp``sub.tksea.top` portal 静态页与 Nginx 规则正式纳入仓库
2. 把 portal 部署动作收口到 `scripts/deploy/deploy_tksea_portal.sh`
3.`scripts/` 从全平铺整理为 `deploy/``acceptance/``test/` 三层,减少脚本入口混杂
4. 把“公网 portal / OpenClaw / remote43 验收”相关说明分别挂回 `deploy/``scripts/``docs/`