refactor(backend-core): split monolithic index.ts into 15 focused modules
Extract config, context, logger, types, db, http, overview, performance, provider-registry, scheduler, task-dispatcher, microservice-proxy, ssh-bridge, and egress-tcp into separate files. index.ts now only handles server setup, HTTP/WebSocket routing, and startup orchestration. No behavioral changes — all existing tests and health checks pass.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
## Services
|
||||
|
||||
- `database` 使用 `postgres:16-alpine`,数据保存到 named volume `unidesk_pgdata_10gb`,初始化 SQL 位于 `src/components/database/init/`。
|
||||
- `backend-core` 是无状态核心服务,提供 Docker 内网 REST API、provider ingress WebSocket、任务调度入口和数据库访问层。
|
||||
- `backend-core` 是无状态核心服务,提供 Docker 内网 REST API、provider ingress WebSocket、任务调度入口和数据库访问层。源码拆分为 15 个职责单一的模块(`index.ts` 只做路由和启动),模块结构见 `docs/reference/repo-tree.md`。
|
||||
- `frontend` 是唯一公开 Web 控制台,提供登录、从 TSX 转译出的 React 应用资产和到 backend-core 的同源代理。
|
||||
- `provider-gateway` 是当前主 server 的本机计算节点代理,通过 WebSocket 主动连到 provider ingress,挂载 `/var/run/docker.sock` 作为自动任务执行主路径,使用 `pid: "host"` 读取节点级进程资源,并周期性上报系统资源指标、进程占用与 Docker daemon 状态;计算节点 provider-gateway 还必须把 egress proxy 仅发布到宿主 loopback `127.0.0.1:18789` 供本节点执行环境出网,维护用 Host SSH / WSL SSH 私钥目录只读挂载到 `/run/host-ssh`,不得作为自动任务调度主路径。
|
||||
- `todo-note` 是主 server 承载的 Todo Note 纯后端用户服务,容器名 `todo-note-backend`,只在 Compose 内网暴露 `4211/tcp`,使用主 PostgreSQL 存储迁移后的 Todo Note 数据。
|
||||
|
||||
@@ -46,7 +46,21 @@
|
||||
- package.json
|
||||
- tsconfig.json
|
||||
- Dockerfile
|
||||
- src/index.ts (Internal REST API, public provider ingress WebSocket, scheduler, database access, system/Docker status storage API)
|
||||
- src/index.ts (Server setup, HTTP/WebSocket routing, startup orchestration)
|
||||
- src/types.ts (All interfaces and type aliases)
|
||||
- src/config.ts (Environment variable reading and config validation)
|
||||
- src/context.ts (Shared mutable state container: db client, config ref, dbReady flag)
|
||||
- src/logger.ts (Structured logger factory)
|
||||
- src/http.ts (HTTP/JSON utilities, ISO formatting, nested value extraction)
|
||||
- src/db.ts (Database init, schema creation, all CRUD queries)
|
||||
- src/performance.ts (Request/operation performance sampling and database size reporting)
|
||||
- src/provider-registry.ts (Provider WebSocket lifecycle: register, heartbeat, status, disconnect)
|
||||
- src/task-dispatcher.ts (Task creation, dispatch to providers, wait-for-result)
|
||||
- src/ssh-bridge.ts (SSH session bridging over provider WebSocket)
|
||||
- src/egress-tcp.ts (Egress TCP proxy for provider outbound connections)
|
||||
- src/scheduler.ts (Scheduled task system: cron-like recurring tasks)
|
||||
- src/microservice-proxy.ts (Microservice routing, HTTP proxy, health aggregation)
|
||||
- src/overview.ts (Overview endpoint, node/task/service summary, load test)
|
||||
- frontend/ (Frontend web application container)
|
||||
- package.json
|
||||
- tsconfig.json
|
||||
|
||||
Reference in New Issue
Block a user