From ac966af3d126d59081d119e05ba02f946257f669 Mon Sep 17 00:00:00 2001
From: ai_xiaopei <xiaopei@aisim.cn>
Date: Sun, 26 Jul 2026 23:22:36 +0800
Subject: [PATCH] fix: 移除所有help中的等号格式

---
 cmd/reorg.go |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/cmd/reorg.go b/cmd/reorg.go
new file mode 100644
index 0000000..1aae59d
--- /dev/null
+++ b/cmd/reorg.go
@@ -0,0 +1,71 @@
+package cmd
+
+import (
+	"fmt"
+
+	"github.com/aisim/kb-cli/internal/classify"
+	"github.com/spf13/cobra"
+)
+
+var reorgCmd = &cobra.Command{
+	Use:   "reorg",
+	Short: "根据分类结果重组知识库目录",
+	Long:  `# reorg - 目录重组
+kb-cli reorg [--plan <文件>] [--dry-run] [--execute] # 根据分类结果重组知识库目录`,
+	RunE: runReorg,
+}
+
+var (
+	reorgPlan    string
+	reorgDryRun  bool
+	reorgExecute bool
+)
+
+func init() {
+	rootCmd.AddCommand(reorgCmd)
+	reorgCmd.Flags().StringVar(&reorgPlan, "plan", "classification.json", "分类结果文件")
+	reorgCmd.Flags().BoolVar(&reorgDryRun, "dry-run", false, "仅生成迁移计划,不执行移动")
+	reorgCmd.Flags().BoolVar(&reorgExecute, "execute", false, "执行迁移(需要明确确认)")
+}
+
+func runReorg(cmd *cobra.Command, args []string) error {
+	vaultPath := cmd.Flag("vault").Value.String()
+
+	fmt.Println("步骤 1/3: 读取分类结果...")
+	classification, err := classify.LoadClassification(vaultPath, reorgPlan)
+	if err != nil {
+		return fmt.Errorf("读取分类结果失败: %w", err)
+	}
+	fmt.Printf("✓ 读取 %d 个文档分类\n", len(classification.Items))
+
+	fmt.Println("\n步骤 2/3: 生成迁移计划...")
+	plan, err := classify.GenerateMigrationPlan(vaultPath, classification)
+	if err != nil {
+		return fmt.Errorf("生成迁移计划失败: %w", err)
+	}
+
+	if err := classify.SaveMigrationPlan(vaultPath, plan); err != nil {
+		return fmt.Errorf("保存迁移计划失败: %w", err)
+	}
+	fmt.Printf("✓ 已生成 migration-plan.json(%d 个文件)\n", len(plan.Migrations))
+
+	if reorgDryRun {
+		fmt.Println("\n[DRY-RUN] 迁移计划已生成,未执行移动")
+		fmt.Println("使用 --execute 执行迁移")
+		return nil
+	}
+
+	if !reorgExecute {
+		fmt.Println("\n警告: 未指定 --execute,迁移未执行")
+		fmt.Println("请检查 migration-plan.json,然后使用 --execute 执行")
+		return nil
+	}
+
+	fmt.Println("\n步骤 3/3: 执行迁移...")
+	if err := classify.ExecuteMigration(vaultPath, plan); err != nil {
+		return fmt.Errorf("执行迁移失败: %w", err)
+	}
+	fmt.Printf("✓ 迁移完成(%d 个文件)\n", len(plan.Migrations))
+
+	return nil
+}

--
Gitblit v1.9.1