@startuml docs-command-logic
title /aide:docs 命令执行逻辑（改进版）

start

:触发 aide skill;
:获取文档配置;
note right: docs.path, docs.block_plan_path

if (文档目录存在?) then (是)
  :进入【更新流程】;
else (否)
  :进入【创建流程】;
endif

partition "创建流程" {
  :=== 阶段 1: 完整目录扫描 ===;

  :读取 .gitignore 规则;
  :递归遍历项目所有目录;
  note right
    包括空目录
    记录每个文件/目录
    标记 [ignored] 项
  end note

  :生成完整目录树结构;
  note right: 类似 tree 命令输出

  :统计文件信息;
  note right
    文件数量、类型
    代码行数、大小
  end note

  :=== 阶段 2: 初步区块划分 ===;

  :按目录结构划分区块;
  :按功能模块聚合;
  :生成区块计划文档;

  :=== 阶段 3: 区块验证 ===;

  :浅层探索验证区块划分;
  :调整区块边界（如需要）;

  :=== 阶段 4: 完全深度探索 ===;

  while (还有未处理区块?) is (是)
    :选择下一个区块;

    partition "处理单个区块" {
      :【完全阅读】区块内所有文件;
      note right
        每个文件从头到尾
        不遗漏任何一行
      end note

      if (是二进制文件?) then (是)
        :根据上下文推断概括;
        note right
          文件名、大小
          关联文件信息
        end note
      else (否)
        :分析文件内容;
        :提取关键信息;
      endif

      :生成文件概括;
      :生成区块内完整 tree 结构;
      :生成子区块文档;
    }

    :更新区块计划进度;
  endwhile (否)

  :=== 阶段 5: 生成总导览 ===;

  :整合所有区块信息;
  :生成简化版目录结构;
  note right: 总导览用前两层结构
  :生成总导览文档;
}

partition "更新流程" {
  :读取区块计划;

  while (还有区块?) is (是)
    :对比文档与代码;

    if (有变化?) then (是)
      :【完全重读】区块内文件;
      :更新区块文档;
      :更新区块内 tree 结构;
    endif
  endwhile (否)

  :更新总导览（如需要）;
  :更新区块计划时间戳;
}

:汇报完成情况;

stop
@enduml
