6.1 KiB
6.1 KiB
Component Responsibilities / 组件职责边界
中文
包级职责矩阵
| 包 / 目录 | owning responsibility | 主要输入 | 主要输出 | 直接协作对象 |
|---|---|---|---|---|
cmd/accountsvc |
进程装配、模式切换、依赖注入、后台循环启动 | config.Config、环境变量、数据库连接 |
Gin 服务、agent loop、xray sync loop | api、store、auth、service、agentserver、agentmode、xrayconfig |
api |
HTTP 路由注册、请求校验、鉴权拼装、响应 shape | Gin request、session token、service/store 依赖 | JSON 响应、cookie、错误结构 | store、auth、service、agentserver、xrayconfig |
internal/store |
主业务持久化抽象与实现 | 领域模型、SQL / memory state | Store 接口、domain types、读写行为 |
api、service、cmd/accountsvc |
internal/auth |
token service、OAuth provider、中间件上下文写入 | JWT secret、OAuth config、session token | TokenService、OAuthProvider、Gin middleware |
api、cmd/accountsvc |
internal/service |
管理面业务逻辑与聚合读模型 | GORM DB、Store 适配器 |
admin settings、homepage video、user metrics | api、cmd/accountsvc |
internal/xrayconfig |
Xray 定义模板、客户端列表渲染、周期同步 | ClientSource、模板、命令配置 |
config JSON、sync result | cmd/accountsvc、agentmode、agentproto |
internal/agentmode |
agent 运行时:拉取用户、生成配置、上报状态 | controller URL、agent token、xray sync config | HTTP client、status reporter、local sync loop | agentproto、xrayconfig |
internal/agentserver |
controller 侧 agent credential 与状态注册表 | credential config、status report、store | authenticated agent identity、status snapshots | api、cmd/accountsvc |
internal/agentproto |
controller 与 agent 之间的稳定 DTO | client list、status report field contract | JSON payload struct | api、agentmode、agentserver |
依赖方向
cmd/accountsvc
-> api
-> internal/store
-> internal/auth
-> internal/service
-> internal/agentserver
-> internal/xrayconfig
-> internal/agentmode
api
-> internal/store
-> internal/auth
-> internal/service
-> internal/agentserver
-> internal/agentproto
-> internal/xrayconfig
internal/agentmode
-> internal/agentproto
-> internal/xrayconfig
关键所有权说明
api.handler是 HTTP 层的状态拥有者,负责进程内 session / MFA / verification / reset / OAuth exchange 状态。store.Store是业务事实层的唯一抽象,API、service、startup 逻辑都经由它读取用户、订阅、agent、计费、tenant 和 XWorkmate profile。service不持有 HTTP 语义,只提供“管理面配置”和“聚合指标”。agentserver.Registry是 controller 面的 runtime read model,不是持久化 source of truth;它会从store.Store回填,但仍以 store 为最终落点。xrayconfig.PeriodicSyncer只做“配置收敛”,并不知道 HTTP、账户权限或 Stripe。
English
Package Responsibility Matrix
| Package / directory | Owning responsibility | Main inputs | Main outputs | Direct collaborators |
|---|---|---|---|---|
cmd/accountsvc |
Process composition, mode switching, dependency injection, background loop startup | config.Config, environment, database handles |
Gin server, agent loop, xray sync loop | api, store, auth, service, agentserver, agentmode, xrayconfig |
api |
Route registration, request validation, auth composition, response shaping | Gin requests, session tokens, injected services / stores | JSON responses, cookies, error payloads | store, auth, service, agentserver, xrayconfig |
internal/store |
Primary persistence abstraction and implementations | Domain models, SQL / in-memory state | Store interface, domain types, persistence behavior |
api, service, cmd/accountsvc |
internal/auth |
Token service, OAuth providers, middleware context population | JWT secrets, OAuth config, session tokens | TokenService, OAuthProvider, Gin middleware |
api, cmd/accountsvc |
internal/service |
Admin-side business logic and aggregated read models | GORM DB, Store adapters |
admin settings, homepage video, user metrics | api, cmd/accountsvc |
internal/xrayconfig |
Xray definition templates, client rendering, periodic sync | ClientSource, templates, command config |
config JSON, sync results | cmd/accountsvc, agentmode, agentproto |
internal/agentmode |
Agent runtime: fetch clients, generate configs, report status | controller URL, agent token, xray sync config | HTTP client, status reporter, local sync loop | agentproto, xrayconfig |
internal/agentserver |
Controller-side agent credential and status registry | credential config, status reports, store | authenticated agent identities, status snapshots | api, cmd/accountsvc |
internal/agentproto |
Stable DTO contract between controller and agents | client list fields, status report fields | JSON payload structs | api, agentmode, agentserver |
Dependency Direction
cmd/accountsvc
-> api
-> internal/store
-> internal/auth
-> internal/service
-> internal/agentserver
-> internal/xrayconfig
-> internal/agentmode
api
-> internal/store
-> internal/auth
-> internal/service
-> internal/agentserver
-> internal/agentproto
-> internal/xrayconfig
internal/agentmode
-> internal/agentproto
-> internal/xrayconfig
Key Ownership Notes
api.handleris the HTTP-layer state owner for in-process session, MFA, verification, reset, and OAuth exchange state.store.Storeis the single abstraction for business facts consumed by API, services, and startup code.serviceis HTTP-agnostic and focuses on admin configuration plus aggregated metrics.agentserver.Registryis a controller-side runtime read model, not the durable source of truth; it hydrates from and persists back tostore.Store.xrayconfig.PeriodicSyncerowns configuration convergence only; it does not know about HTTP, account permissions, or Stripe.