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

4.8 KiB
Raw Blame History

项目目录说明

日期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.shsetup_remote43_patched_stack.shdeploy_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.shimport_remote43_provider.shcheck_deepseek_completion_split.sh
  • scripts/test/
    • 脚本资产回归
    • 例如 test_real_host_scripts.shtest_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/deployscripts/acceptancescripts/test
  • 新的长期说明文档
    • docs/
  • 新的验收证据
    • artifacts/

当前整理结果

截至 2026-05-27最近一轮目录整理主要做了三件事

  1. 把原来只存在 /tmpsub.tksea.top portal 静态页与 Nginx 规则正式纳入仓库
  2. 把 portal 部署动作收口到 scripts/deploy/deploy_tksea_portal.sh
  3. scripts/ 从全平铺整理为 deploy/acceptance/test/ 三层,减少脚本入口混杂
  4. 把“公网 portal / OpenClaw / remote43 验收”相关说明分别挂回 deploy/scripts/docs/