Files
pj0235-eai_agentplatform/docs/08_Design_Rules/DR03_Interaction_Rules.md
T
eaiadminandClaude Code 6194c4733e docs: CODING_RULES 更名为 TOP_CODING_RULES 并补齐通用规则与踩坑清单
改名(对齐 pj0034 的 TOP_ 前缀):
- CODING_RULES.md → TOP_CODING_RULES.md,同步 5 处引用
  (CLAUDE.md 目录树与启动仪式、PROJECT_STATE.md 三处、DR03、DR04、文件内 G06 自引用)

补齐通用部分 G09–G18(承接 pj0034 同名文件的通用规则,按本项目
Go / Vue3 / SQLite / Ubuntu 技术栈改写):
- G09 登录态与接口必须无状态化
- G10 配置化优先,禁止写死环境细节
- G11 素材必须可追溯,不可静默修改
- G12 长耗时任务必须异步化
- G13 先跑通主线,再细化和优化
- G14 Git 不抢戏 — 收工时统一提示一次
- G15 禁止通用名启动入口文件,启动逻辑必须在 start_dev_10231_10232.sh
- G16 Windows 侧 .ps1 脚本统一 UTF-8 with BOM
- G17 脚本内禁止兼容式依赖回退,必须固定单一工具链
- G18 仓库应尽量支持拷贝后直接运行
不抄的(逐条判断本项目不适用):Python 虚拟环境、Playwright/clickflow E2E、
OSS 多租户、Amazon 平台规范检测;该判断已写进文件头说明。

G04 补第 6–10 条:全绿≠跑通、报告事实而非意图、读清用户的 bug 描述、
修 UI bug 追完整渲染链、跨区移动数据后验另一端完整性。

新增 P06 常见技术陷阱清单(11 条,全部来自本项目真实事故或核过代码的事实):
AutoMigrate 只加不删、探测脚本用完即删、worker_run.status 恒为 done、
seed 只补空字段、禁止按进程名模糊匹配杀进程、Element Plus persistent
留隐藏 DOM、动用户数据前先备份再列清单、hash 路由改 hash 不重载、
gofmt 不要整个目录 -w、git remote 禁嵌明文凭据、禁引第三方受限素材。

顺手修三处不一致:P01 索引名过时(培训平台→通用数字员工平台)、
DR03 引用的编号在重组后指向了错规则(第 6 条→G07)、第二部分标题层级。

版号 V1.0 → V1.1。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-17 22:59:17 +08:00

4.4 KiB
Raw Blame History

DR03 — 交互规范

版本:V1.1 | 框架:Element Plus


1. 按钮状态规范

场景 样式 色值 说明
主操作(提交/保存/开始) el-button type="primary" #1677ff 页面中的主要行动点
次要操作(取消/返回) el-button(默认) #ffffff / #606266 非主要行动点
危险操作(删除/驳回) el-button type="danger" #ff4d4f 不可逆操作
文字操作(编辑/查看) el-button text #1677ff 表格中操作列
禁用态 el-button disabled 灰底 #cbd5e1 + 灰字 #64748b 不可点击状态
快捷按钮(AI 侧栏) el-button size="small" 默认样式 3 个快捷入口

关键规则(TOP_CODING_RULES.md 的 G07):

  • 所有可点击的关键交互按钮必须使用蓝色底 #1677ff
  • disabled 状态变化后,底色必须立即同步变化
  • 不可用按钮保持 cursor: not-allowed

2. 加载与反馈

场景 组件 行为
页面加载 v-loading 全屏或区域加载遮罩
表单提交 el-button loading 状态 按钮显示转圈,禁止重复点击
表格查询 el-table v-loading 表格区域加载
操作成功 ElMessage.success 顶部轻提示,2s 自动消失
操作失败 ElMessage.error 显示错误信息
确认操作 ElMessageBox.confirm 弹窗确认(删除/驳回等)

3. 弹窗使用规范

类型 组件 场景
表单弹窗 el-dialog 新增/编辑 CRUD
确认弹窗 el-message-box 删除/禁用确认 + 驳回理由输入
素材提交 el-dialog 员工提交素材建议(MaterialSuggestUpload)
预览弹窗 el-dialog + iframe PDF 预览 / 视频播放
选择器弹窗 el-dialog + el-tree 绑定产品/课程选择

4. 表单交互规则

// 通用规则
- 必填字段标红色 *
- 提交前校验(el-form :rules)
- 提交按钮 disable 直到表单合法
- 提交中按钮 loading,禁止重复点击
- 成功后关闭弹窗 + 刷新表格
- 失败后保持弹窗,显示错误信息

5. 表格交互规则

// 通用规则
- 支持分页(el-pagination)
- 支持筛选栏(过滤条件)
- 操作列放最右侧,统一宽度
- 表格行 hover 高亮
- 长文本省略显示(show-overflow-tooltip)
- 空数据展示「暂无数据」

6. AI 聊天框交互规则

场景 行为
展开/收起 点击右上角 ✕ 收起,底部显示 [🤖 展开AI] 按钮
发送消息 Enter 键或点击发送按钮
流式响应 SSE 实时流式显示,打字机效果
上下文切换 切换页面时自动清理旧上下文,注入新页面上下文
快捷动作 点击快捷按钮触发对应的 API
窗口切换 页面路由变化不清空对话历史(全局常驻)

7. 错误处理交互

HTTP 状态 用户看到 行为
400 参数错误 ElMessage.warning + 字段标红 表单校验错误
401 未认证 跳转到登录页 清除 token 并跳转
403 无权限 ElMessage.warning + 跳转首页 前端+后端双重拦截
404 资源不存在 ElMessage.error + 提示 —
500 服务器错误 ElMessage.error「系统异常,请稍后重试」 —
网络断开 ElMessage.error「网络连接异常」 —

8. 页面间跳转逻辑

来源页面 目标页面 传递参数 方式
产品详情 对应课程 courseId <router-link>
课程详情 对应产品 productId <router-link>
产品详情 向 AI 提问 productId + page: "product_detail" 展开 AI 侧栏 + 自动注入
课程详情 向 AI 提问 courseId + page: "course_detail" 同上
考试列表 考试封面 paperId router.push
考试封面 答题页面 paperId router.push
考试结果 考试记录 recordId router.push

9. 素材提交入口(弹窗而非独立页面)

素材提交仅在以下页面以弹窗形式出现:
- 公司介绍培训页面 → 点击「提交素材建议」
- 产品详情页面 → 点击「提交素材建议」
- 课程详情页面 → 点击「提交素材建议」

弹窗内容:
  文件上传 + 备注说明
  不提供独立页面访问