Files
pj0235-eai_agentplatform/eai_agentplatform/CLAUDE.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

86 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# eai_agentplatform EAI 数字员工平台(AI Agent Platform)
纯内网本地化的企业 AI 数字员工平台。
围绕数字员工(专员)、知识库底座、自动化工坊、考试评估与系统管理组织业务能力。
配套全局 AI 助手,提供答疑、知识查询、任务拆解与业务工具。
## 技术栈
| 层级 | 技术 |
|------|------|
| 前端 | Vue3 + Vite + Element Plus |
| 后端 | Go + Gin + GORM + SQLite(modernc 纯Go驱动) |
| 认证 | JWT(golang-jwt)+ bcrypt |
| 文档转换 | LibreOffice + pdftotext(裸进程) |
| AI 底座 | 内网 OpenAI 兼容接口(Ollama:LLM + bge-m3 embedding) |
| 部署 | 裸进程 + systemd + Clonezilla 整盘克隆,单二进制交付 |
## 目录结构
```
pj0235-eai_agentplatform-ubu/ # 工作区根(仓库根)
├── TOP_CODING_RULES.md # 编码与调试最高准则
├── start_dev_10231_10232.sh # 开发启动脚本
├── docs/ # 设计文档(项目级,与代码分离)
│ ├── 00_AI_Context/ # AI 协作上下文
│ ├── 01_System_Overall/ # 系统总览(SY 前缀)
│ ├── 02_Architecture/ # 架构设计(AR 前缀)
│ ├── 04_Backend/ # 后端设计与 API(BE 前缀)
│ ├── 06_Product_Lines/ # 产品线与前端设计(PL 前缀)
│ ├── 08_Design_Rules/ # UI/UX 设计规范(DR 前缀)
│ ├── PRD.md # 产品需求文档(V1.1)
│ ├── db_schema.md # 数据库 Schema
│ ├── api.md # API 文档
│ ├── deploy.md # 部署文档
│ ├── changelog.md # 变更日志
│ ├── eaisalestrain_app设计稿.md # 完整 PRD 中文原稿
│ └── 博昇产品与渠道合作表.md # 知识源权威数据
└── eai_agentplatform/ # 应用代码
├── backend-go/ # Go 后端(正式,唯一后端)
│ ├── cmd/ internal/ # Go 源码
│ ├── knowledge_source/ # 知识源 Markdown(运行时数据)
│ ├── data/ # 运行时数据(db+media,git 忽略)
│ └── deploy/ # 交付物(systemd/env/清理脚本/DELIVERY.md)
├── frontend/ # 前端完整代码
├── CLAUDE.md # AI 协作锚点
├── PROJECT_STATE.md # 项目全局状态
└── .gitignore
```
## 新对话启动仪式(强制)
你是一个新对话,没有任何历史记忆。响应用户的任何请求**之前**,按顺序执行:
1. 确认你的角色:后端(backend)/ 前端(frontend)/ 全栈
2. 读 `PROJECT_STATE.md`(本目录)—— 项目当前全局状态与已拍板决策
3. 读 `../TOP_CODING_RULES.md`(工作区根)—— 编码与调试最高准则
完成以上步骤,才开始响应用户。
## 核心业务模块
| 模块 | 说明 |
|------|------|
| 公司介绍培训 | 纯阅读页面,可绑定 PPT/视频课件 |
| 产品知识 | 四大产品分类,固定字段(编号/佣金/规则等) |
| 产品销售培训 | 四大课程,话术/流程/异议处理 |
| 考试系统 | 自测(不限次/即时反馈)+ 正式考(永久存档) |
| AI PathCoach | 右侧常驻面板,自动上下文,3 个快捷按钮 |
| 知识管理【管理员】 | 素材审批,课件 CRUD,绑定课程/产品 |
| 系统管理【管理员】 | 用户管理,成绩查询,系统参数配置 |
| 内容管理【管理员】 | 产品/课程/题库的录入编辑 |
## 设计原则(强制执行)
- **100% 本地化部署**:不上云、无 OSS、无 MinIO、不依赖公网云服务
- **功能克制**:功能以业务价值为准、杜绝为加而加的冗余功能;权限保持精简(employee/admin 两级)
- **学情/成长为已决策边界(D18/D19)**:学员自助视角的学习档案/能力雷达、积分/排行榜、证书、部门学情统计均已拍板纳入;全站拒绝「社交社区/讨论区」类功能(D19)
- **审批前置**:所有上传素材必须审批通过才可生效、进入知识库、页面展示
- **视频仅预览**:MP4 不做转码、不做 ASR、不进 AI 知识库
- **混合检索**:AI 知识检索 = 向量(brute-force 余弦)+ 关键词兜底,数据量小无需 ANN 向量库
## AI 配置
- **LLM 适配器**:Go net/http 实现(无 openai SDK 依赖),支持 SSE 流式 + 非流式调用
- **配置优先级**:system_config 数据库表 → .env 文件,缺任何配置 Fail Fast 抛 501
- **知识检索**:混合检索(向量 brute-force + 关键词),embedding 走 Ollama bge-m3