export interface ReportCaseMetadata {
  module: string;
  assertions: string[];
}

const caseMetadata: Record<string, ReportCaseMetadata> = {
  'prototype-basic': {
    module: '项目创建与生成',
    assertions: [
      '可以创建 prototype 项目并进入工作区',
      '发送 prompt 后会收到 mocked artifact',
      '生成文件会出现在工作区',
      '预览 iframe 中能看到期望标题',
    ],
  },
  'deck-basic': {
    module: '项目创建与生成',
    assertions: [
      '可以通过 deck tab 创建项目',
      '发送 prompt 后会收到 deck artifact',
      'deck 文件会出现在工作区',
      '预览 iframe 中能看到期望标题',
    ],
  },
  'design-system-selection': {
    module: '项目创建与生成',
    assertions: [
      '设计系统选择器可以搜索并选中目标设计系统',
      '创建项目后项目 meta 会保留设计系统名称',
      '项目成功进入工作区而不是停留在创建页',
    ],
  },
  'example-use-prompt': {
    module: '项目创建与生成',
    assertions: [
      'Examples 页的 Use this prompt 可以直接创建项目',
      '创建后的项目标题与 meta 会带上对应 skill 名称',
      '聊天输入框会预填 example prompt',
    ],
  },
  'conversation-persistence': {
    module: '会话生命周期',
    assertions: [
      '可以创建第二个会话并发送新的 prompt',
      '刷新后当前会话消息仍然存在',
      '历史菜单中可以切回旧会话',
      '切回后旧会话内容仍然正确显示',
    ],
  },
  'conversation-delete-recovery': {
    module: '会话生命周期',
    assertions: [
      '删除当前活跃会话后不会卡死在空状态',
      '界面会回退到剩余会话',
      '被删除会话的消息不会继续显示',
    ],
  },
  'question-form-selection-limit': {
    module: '会话生命周期',
    assertions: [
      'question form 中声明 maxSelections=2 的 checkbox 题目最多只能选中两个选项',
      '达到上限后新的未选项不会被选中',
      '界面中的已选数量会保持在约束范围内',
    ],
  },
  'question-form-submit-persistence': {
    module: '会话生命周期',
    assertions: [
      '提交 question form 后会写入一条用户回答消息',
      '表单会立即进入 answered / locked 状态',
      '刷新页面后表单仍会根据历史答案正确回填并保持锁定',
    ],
  },
  'generation-does-not-create-extra-file': {
    module: '项目创建与生成',
    assertions: [
      '第一次生成后项目中只出现预期的 artifact 文件',
      '在没有发送新 prompt 的情况下刷新页面不会新增文件',
      'files API 返回的文件集合在前后两次检查中保持一致',
    ],
  },
  'file-mention': {
    module: '文件链路',
    assertions: [
      '预置文件后 mention popover 可以搜索并选中文件',
      '输入框会插入 @filename',
      'staged attachment 会显示对应文件',
    ],
  },
  'file-upload-send': {
    module: '文件链路',
    assertions: [
      '聊天区 file input 可以上传文件',
      '上传后 staged attachment 会显示文件',
      '发送消息后用户消息中会保留该附件',
    ],
  },
  'deep-link-preview': {
    module: '文件链路',
    assertions: [
      '生成 artifact 后 URL 会进入文件路由',
      '离开项目文件路由后可再次通过文件路由进入',
      '重新进入后预览 iframe 仍能恢复到正确文件',
    ],
  },
  'design-files-upload': {
    module: '文件链路',
    assertions: [
      'Design Files 面板可以真实上传图片',
      '上传后文件行会出现在 Design Files 列表',
      '右侧预览面板会显示文件信息',
      '双击文件行会把文件打开成 tab',
    ],
  },
  'design-files-delete': {
    module: '文件链路',
    assertions: [
      'Design Files 行级菜单可以触发删除',
      '删除确认后文件行会从列表消失',
      '如果文件已打开，对应 tab 也会被清理',
    ],
  },
  'design-files-tab-persistence': {
    module: '文件链路',
    assertions: [
      '多个文件 tab 可以同时打开',
      '切换 active tab 后状态会被持久化',
      '刷新页面后 tab 集合会恢复',
      '刷新前选中的 active tab 仍然保持选中',
    ],
  },
} satisfies Record<string, ReportCaseMetadata>;

export default caseMetadata;
