/**
 * 回归测试：admin-web 手动执行 App 类型必须与后端 /api/admin/ai/run/{app_type} 对齐。
 *
 * 缓存类型仍使用 `*_analysis` / `*_consolidated`，但手动执行和 run log
 * 应使用 dispatcher 支持的 app_type，避免前端发出后端 400 的路径。
 */

import { describe, expect, it } from "vitest";
import { RUN_APP_TYPES } from "../api/adminAI";
import { CACHE_TYPE_OPTIONS, RUN_APP_TYPE_OPTIONS } from "../pages/AIOperations";
import { RUN_LOG_APP_TYPE_OPTIONS } from "../pages/AIRunLogs";

describe("admin AI app_type 对齐", () => {
  it("手动执行类型使用后端支持的 app_type，而不是缓存类型", () => {
    const apiTypes = [...RUN_APP_TYPES];
    const runOptionValues = RUN_APP_TYPE_OPTIONS.map((item) => item.value);

    for (const appType of ["app6_note", "app7_customer", "app8_consolidation"]) {
      expect(apiTypes).toContain(appType);
      expect(runOptionValues).toContain(appType);
    }

    for (const cacheType of ["app6_note_analysis", "app7_customer_analysis", "app8_clue_consolidated"]) {
      expect(runOptionValues).not.toContain(cacheType);
    }
  });

  it("缓存失效继续使用 cache_type，避免破坏已有缓存管理", () => {
    const cacheOptionValues = CACHE_TYPE_OPTIONS.map((item) => item.value);

    expect(cacheOptionValues).toContain("app6_note_analysis");
    expect(cacheOptionValues).toContain("app7_customer_analysis");
    expect(cacheOptionValues).toContain("app8_clue_consolidated");
  });

  it("调用记录筛选包含真实写入 ai_run_logs 的 app_type", () => {
    const runLogOptionValues = RUN_LOG_APP_TYPE_OPTIONS.map((item) => item.value);

    expect(runLogOptionValues).toContain("app6_note");
    expect(runLogOptionValues).toContain("app7_customer");
    expect(runLogOptionValues).toContain("app8_consolidate");
  });
});
