# req-defect-platform **Repository Path**: aiagentdemo/req-defect-platform ## Basic Information - **Project Name**: req-defect-platform - **Description**: 基于大模型的需求质量分析与代码缺陷扫描平台。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-24 - **Last Updated**: 2026-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI 需求分析 · 代码缺陷扫描平台 基于大模型的需求质量分析与代码缺陷扫描平台。前后端分离:**FastAPI (Python) + Vue3 (Element Plus)**,整站蓝白科技风。分析时自动加载相应 Skill 作为大模型指令。 ## 界面预览 ![AI 需求分析 · 代码缺陷扫描平台](./screenshot.png) ## 功能 1. **任务管理(新建分析任务)** — 支持三种任务: - 需求问题分析:上传 `.docx / .md / .txt` 或粘贴需求,按完整性 / 一致性 / 可测性 / 非功能性等维度找问题,输出给产品的澄清问题清单。 - 代码缺陷扫描:输入**本地路径**或 **Git 仓库地址**,扫描 Java Spring / Python 缺陷(事务、并发、N+1、资源泄漏、吞异常等)。 - 需求↔代码一致性:对照需求与代码逐条核对,标记实现正确 / 偏差 / 缺失 / 多余。 2. **任务列表** — 记录每次分析,状态实时刷新,点击进入结果页(需求结果 / 缺陷结果 / 一致性表)。 3. **Skill 管理** — 内置三个 Skill(`requirement-doc-review`、`spring-python-code-review`、`requirement-code-consistency`),可启用/禁用、编辑、新增自定义 Skill。分析时自动加载对应类别中「已启用」的 Skill 作为 system prompt。 4. **知识库管理(RAG)** — 上传 `docx / md / json / txt`,系统自动**切片**并建索引;分析需求/代码时按类别**自动检索 Top-K 相关切片注入大模型**,提升判断准确度,并在结果中标注引用了哪些知识来源。 - 按类别分库:需求知识 / 代码知识 / 通用知识(通用对所有分析生效)。 - **混合检索**:配置 `EMBEDDING_MODEL` 则走向量语义检索;未配置自动回退 **BM25 关键词检索**(离线可用、中文友好)。 - 提供检索测试页,可预览某段查询会命中哪些切片。 - 旧版 `.doc` 不支持,请另存为 `.docx`。 5. **大模型配置** — 按场景(需求分析 / 缺陷扫描)配置模型,留空回落到默认模型。**默认模型采用 `smart-test-platform/backend/.env.example` 中的公司私有大模型**。 ## 目录结构 ``` req-defect-platform/ ├── backend/ # FastAPI │ ├── main.py # 入口,启动时建表 + seed 三个 Skill │ ├── config.py # 默认模型 = 公司私有大模型;embedding 配置 │ ├── models.py # Task / Skill / LlmConfig / KnowledgeDoc / KnowledgeChunk │ ├── seed.py # 三个内置 Skill 内容 │ ├── routers/ # tasks / skills / llm_config / knowledge │ └── services/ │ ├── llm.py # OpenAI 兼容网关封装(对话 + embedding) │ ├── knowledge.py# 抽取/切片/混合检索(向量+BM25) │ └── analyzer.py # 需求抽取 + 代码采集(本地/git) + 检索注入 + 调用大模型 └── frontend/ # Vue3 + Element Plus + Pinia └── src/views/ # Workbench / TaskNew / TaskList / TaskDetail / Skills / Knowledge / LlmConfig ``` ## 知识库检索模式 默认(不配置 embedding)使用 **BM25 关键词检索**:零外部依赖、离线可跑、中文做了分字+bigram 处理。若公司网关或本地模型提供 embedding 接口,在 `.env` 配置 `EMBEDDING_MODEL`(及可选的 `EMBEDDING_BASE_URL` / `EMBEDDING_API_KEY`)即可自动切换为**向量语义检索**,已上传文档的新切片会被向量化。 ## 启动 ```bash # 后端 (端口 8008) ./start-backend.sh # 前端 (端口 5180) ./start-frontend.sh ``` 浏览器打开 http://localhost:5180 ## 说明 - 后端首次启动自动从 `.env.example` 生成 `.env` 并建库、注入三个内置 Skill。 - 代码缺陷扫描为控制 prompt 体积,仅纳入常见代码后缀文件并有总量上限(见 `analyzer.py`)。 - 部分企业网关不接受 `temperature / max_tokens`,默认置空不发送,最兼容。