8.1 KiB
8.1 KiB
AGENTS.md
项目定位
这是“物业AI人力资源系统”一期 MVP 版工程。目标是用 RuoYi-Vue-Plus + plus-ui 跑通本地账号登录、可演示业务路径和 AI HR 的最小英雄路径。
工程边界
backend/是dromara/RuoYi-Vue-Plus的5.X分支检出。frontend/是CrazyLionCat/plus-ui的5.X分支检出,只承载管理端。mobile/是独立移动端工程,承载员工端、候选人端、主管端;当前是 Vue/Vite H5,三端首页按docs/prototypes/*端-首页.png实现,后续确定小程序技术栈后再迁移到 uni-app/Taro。- 本项目自己的本地编排放在根目录:
docker-compose.dev.yml、scripts/;运行说明在docs/DEV_SETUP.md。 - 除非确实要接业务模块,不要改上游框架默认配置;本地端口和开关优先放根目录脚本里覆盖。
本地运行
- MySQL:
127.0.0.1:13306,库ry-vue,账号root/root。 - Redis:
127.0.0.1:16379,密码ruoyi123。 - MinIO:API
127.0.0.1:9000,Console127.0.0.1:9001,账号ruoyi / ruoyi123,bucketruoyi。 - Qdrant:REST
127.0.0.1:6333,默认 collectionaihr_knowledge;可用AIHR_QDRANT_URL、AIHR_QDRANT_COLLECTION、AIHR_QDRANT_API_KEY覆盖。 - 资料导入根目录:默认
./.data/import,由scripts/dev-backend.sh传入aihr.import.root;也可用AIHR_IMPORT_ROOT覆盖。 - 本地私密配置:根目录
.env.local已被.gitignore忽略,scripts/dev-backend.sh会自动加载;阿里云短信密钥只放这里或外部环境变量,不写入application-*.yml。 - 后端:
./scripts/dev-backend.sh,端口8080。 - 管理端前端:
./scripts/dev-frontend.sh,端口5173。 - 移动端前端:
./scripts/dev-mobile.sh,端口5174。 - 重置数据:
./scripts/reset-dev-db.sh,会删除并重建本地ry-vue。
导入 SQL 必须带 --default-character-set=utf8mb4,否则中文昵称可能按错误字符集导入并触发字段长度问题。
验证口径
- 前端首页:
http://127.0.0.1:5173/ - 移动端首页:
http://127.0.0.1:5174/h5/user - 租户接口:
http://127.0.0.1:5173/dev-api/auth/tenant/list - 验证码接口:
http://127.0.0.1:5173/dev-api/auth/code - 默认登录:租户
000000,管理员admin / admin123。
品牌入口
- 页面标题在
frontend/.env.development与frontend/.env.production。 - 侧栏 logo 在
frontend/src/assets/logo/logo.png。
MVP 管理端前端边界
- 首页:
frontend/src/views/index.vue,路由/index。 - AI 面试:
frontend/src/views/recruit/interview.vue,路由/recruit/interview。 - 三角色对练:
frontend/src/views/train/practice.vue,路由/train/practice。 - 案例沉淀:
frontend/src/views/knowledge/cases.vue,路由/knowledge/cases。 - SOP 知识库:
frontend/src/views/knowledge/sop.vue,路由/knowledge/sop。 - 资料处理:
frontend/src/views/knowledge/processing.vue,路由/knowledge/processing。 - 模型配置:
frontend/src/views/system/model/index.vue,路由/system/model。 - MVP 阶段侧栏只保留“首页 / AI面试 / 三角色对练 / 案例沉淀 / SOP知识库 / 资料处理 / 系统设置-模型配置”。过滤逻辑在
frontend/src/layout/components/Sidebar/index.vue,不要在未明确要求时恢复若依默认全量菜单。 - 移动端三端首页:
mobile/src/App.vue,路由/h5/user、/h5/candidate、/h5/supervisor,分别对应用户/员工端、候选人端、主管端;兼容/h5/employee、/h5/admin,但移动端不要把主管端等同后台系统管理员。 - 移动端首页接口:
GET /api/aihr/mobile/home/{role},当前@SaIgnore公开只读 seed,用于 H5 首屏 API 优先 + 本地 fallback;后续确定小程序登录后再接移动端 token,不复用管理后台登录态。 - 移动端手机号登录:验证码发送走
GET /resource/sms/code?phonenumber=...,登录走POST /auth/mobile/sms-login;短信发送复用sms.blends.config1阿里云配置。手机号不存在时自动注册app_user,备注为“移动端短信自动注册”。模板 ID 用AIHR_SMS_LOGIN_TEMPLATE_ID,AccessKey/Secret/签名用ALIYUN_SMS_ACCESS_KEY_ID、ALIYUN_SMS_ACCESS_KEY_SECRET、ALIYUN_SMS_SIGN_NAME,本地放.env.local。 - 移动端员工训练闭环:员工端首页“开始训练”复用
POST /api/train/practice/start、/turn、/finish,请求必须带移动端登录返回的Authorization与clientid;mode=mobile完成后写入aihr_practice_session,并更新主管端首页完训率、“待复盘对练”、员工训练历史和能力画像。主管端复盘详情查GET /api/aihr/mobile/practice/reviews/{id},标记复盘用POST /api/aihr/mobile/practice/reviews/{id}/reviewed。 - 当前业务页已用 seed 数据跑通可演示闭环;后端 API 对接先看
docs/API_INTEGRATION.md。 - 后端业务代码不要塞进上游
ruoyi-demo;自有 API 放在backend/ruoyi-modules/ruoyi-aihr,再接入ruoyi-admin。 - AI 面试页、三角色对练页、案例沉淀页、SOP 知识库页和移动端三端首页已是 API 优先 + 本地 fallback;SOP 知识库优先查
aihr_knowledge_fragment的 MySQL Fulltext,并在 vector 模型和 Qdrant 可用时做混合召回;支持.txt/.md/.markdown/.pdf/.doc/.docx/.xls/.xlsx/.ppt/.pptx及图片.jpg/.jpeg/.png/.gif/.webp/.bmp上传解析入库。 - SOP 上传接口是
POST /api/knowledge/doc/upload,表单字段为file和category;当前限制 100MB 内,支持 txt/md/PDF/Word/Excel/PPT 及图片,先写 MinIO/sys_oss再绑定aihr_knowledge_attach.oss_id,同一知识库同名文件会替换旧 fragment。若数据库启用category=vector的模型配置,会同步调用 OpenAI-compatible/embeddings,写入embedding_json并尽力 upsert 到 Qdrant;配置缺失或外部 embedding 失败才用local-hash-v1兜底,Qdrant 不可用时保留 MySQL Fulltext/seed fallback。 - 图片视觉 OCR:上传图片时经
visionRuntime()找启用模型(优先aihr_model_config.category='vision',无则回退category='chat'),把图片编码成 base64 data URL 调 OpenAI-compatible/chat/completions提取文字再切分入库;无视觉模型返回空正文、fragment 为 0,不报错。资料处理页“图片 OCR”开关读imageOcrEnabled = visionRuntime().isPresent(),未配置时灰显“即将支持”。不依赖 Tesseract。 - 向量库状态接口是
GET /api/knowledge/doc/vector-index-status,重建接口是POST /api/knowledge/doc/rebuild-vector-index;外部 embedding 成功但 Qdrant collection 维度不一致时不要静默降级,走状态提示和重建。 - 资料处理接口是
GET /api/knowledge/processing/overview,直接聚合aihr_knowledge_attach、aihr_knowledge_fragment和sys_oss.ext1;POST /api/knowledge/doc/import-local保留同步导入,POST /api/knowledge/doc/import-local-task+GET /api/knowledge/doc/import-tasks用于页面启动后台目录导入和轮询进度。目录只能是aihr.import.root下的相对路径,逐文件复用上传解析链路。 - seed service 阶段已完成;后续按
docs/RUOYI_AI_INCREMENTAL_MIGRATION.md分片迁移ruoyi-ai的知识库、文档解析、RAG、chat 能力。 - 迁移时不要整包搬
ruoyi-chat;优先在ruoyi-aihr内吸收必要表、service、loader 和检索接口,并保留 seed fallback。 - 已落地的 seed 演示流不要退回静态壳:AI 面试、三角色对练、案例沉淀、SOP 知识库、移动端三端首页。
- 本项目 AI 表前缀用
aihr_*:知识库是aihr_knowledge_info/attach/fragment,模型配置是aihr_model_provider/config,移动端训练记录是aihr_practice_session。
业务文档
- 总入口:
README.md - 文档索引:
docs/README.md - MVP 范围和止损线:
docs/AI人力资源系统一期MVP版作战清单.md - 后端 API 对接:
docs/API_INTEGRATION.md - 业务需求:
docs/物业AI人力资源系统业务需求文档BRD.md - 开发规格:
docs/物业AI人力资源系统开发规格TechSpec.md