Skip to content

refactor(tui): 收敛启动链中的重复安全初始化逻辑 #54

@pionxe

Description

@pionxe

问题描述

当前 TUI 启动链中,安全模块存在重复初始化。

cmd/tui/main.go 在调用 prepareWorkspace(...) 之后,又额外调用了一次 initializeSecurity(...)
prepareWorkspace(...) 的实现内部其实已经完成了安全初始化。

这不是一个立即导致错误的严重 bug,但说明启动生命周期职责尚未完全收束。

相关位置

第一次初始化:

  • internal/tui/bootstrap/setup.go:32
  • internal/tui/bootstrap/setup.go:40

第二次初始化:

  • cmd/tui/main.go:91
  • cmd/tui/main.go:96

当前行为

启动流程中大致是:

  1. runWithDeps(...) 调用 prepareWorkspace(...)
  2. PrepareWorkspace(...) 内部调用 initializeSecurity(...)
  3. 回到 runWithDeps(...) 后又再次调用 initializeSecurity(...)
Image Image

影响

1. 启动职责边界不清晰

阅读代码时不容易判断:

  • 工作区准备负责什么
  • 安全初始化到底属于哪一层
  • 后续类似初始化逻辑应该放在哪

2. 增加后续维护成本

当前初始化逻辑比较轻,所以重复执行暂时问题不大。
但如果未来安全模块增加:

  • 缓存
  • watcher
  • 动态 reload
  • 状态统计
  • 日志埋点

那么重复初始化就可能演变成真实问题。

3. 测试与排障复杂度增加

启动阶段一旦出问题,不容易快速定位是哪个层级负责初始化。

预期行为

安全初始化应只有一个明确入口。

也就是说:

  • 要么由 PrepareWorkspace(...) 负责
  • 要么由 cmd/tui/main.go 负责

但不应两边同时做。

建议方案

推荐方案

把安全初始化职责统一收敛到 PrepareWorkspace(...)

原因:

  • 安全配置依赖工作区路径
  • PrepareWorkspace(...) 本身就承担“运行前环境准备”职责
  • 这样 main.go 可以只保留编排,不重复做底层初始化

对应改法

删除 cmd/tui/main.go 中重复的安全初始化逻辑,保留 PrepareWorkspace(...) 中的实现。

验收建议

修复后应满足:

  • TUI 启动时安全模块只初始化一次
  • SetSecurityChecker(...) 仍然生效
  • 启动流程保持正常
  • 相关测试通过
  • 启动链职责更清晰

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions