Skip to content

feat: 增加交互式问答能力 - #4

Merged
maluQxzh merged 1 commit into
mainfrom
feature/interactive-qa
May 30, 2026
Merged

feat: 增加交互式问答能力#4
maluQxzh merged 1 commit into
mainfrom
feature/interactive-qa

Conversation

@maluQxzh

Copy link
Copy Markdown
Owner

变更内容

为 AI PR Review 增加交互式问答能力,用户可以在报告页面内追问 PR 问题、请求修复代码或生成测试用例。

新增功能

  • 聊天面板 — 报告下方出现追问区域,支持对话式交互
  • 三种 QA 模式 — 追问(qa)、修代码(fix_request)、写测试(test_gen),一键切换
  • 代码行级追问 — 点击 Finding 上的按钮自动带上 file:line 上下文
  • 建议问题 — 基于报告数据自动生成可点击的建议问题(不调 LLM)
  • Markdown 渲染 — AI 回答支持代码块、列表、粗体等格式化
  • 对话持久化 — 刷新页面后历史自动恢复
  • 多模态支持 — 可传入图片 URL 切换到 vision 模型

改动文件

文件 改动
backend/app/config.py 新增 llm_model_multimodal, llm_qa_temperature, llm_max_context_messages
backend/app/db/models.py 新增 ChatMessageRecord
backend/app/models/schemas.py 新增 QaType, QaRequest, QaResponse, ChatHistoryItem
backend/app/llm/openai_provider.py 新增 qa() 方法,支持追问/修代码/写测试三种模式 + 多模态
backend/app/api/routes_qa.py 新文件 — 3 个 Q&A API 端点
backend/app/main.py 注册 qa_router
frontend/src/types/report.ts 新增 Q&A 相关 TypeScript 类型
frontend/src/api/client.ts 新增 askQuestion, getQaHistory, getQaSuggestions
frontend/src/main.tsx 新增 ChatPanel、ChatBubble、MarkdownText 组件;FindingCard/FileRiskRow 增加追问按钮
frontend/src/styles.css 新增聊天面板全套样式

验证

  • 后端测试 48/48 通过
  • 前端 TypeScript 零错误编译
  • FastAPI 应用加载正常

- 新增 ChatPanel 聊天面板,支持在报告页面内追问 PR 问题
- 三种 QA 模式:追问(qa)、修代码(fix_request)、写测试(test_gen)
- FindingCard 增加追问/修代码/写测试快捷按钮,自动带上 file:line 上下文
- FileRiskRow 增加追问此文件按钮
- 基于报告数据自动生成建议问题(不调 LLM,零延迟)
- AI 回答支持 Markdown 渲染(代码块、列表、粗体等)
- 对话持久化到 SQLite chat_messages 表,刷新后历史恢复
- LLM provider 新增 qa() 方法,支持多模态图片问答
- 新增 POST /api/reports/{id}/qa、GET /qa/history、GET /qa/suggestions 端点
@maluQxzh
maluQxzh merged commit 697f3bd into main May 30, 2026
1 check failed
@maluQxzh
maluQxzh deleted the feature/interactive-qa branch May 31, 2026 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant