# KnowledgeQA **Repository Path**: wuli112/knowledge-qa ## Basic Information - **Project Name**: KnowledgeQA - **Description**: 基于ASP.NET Core 9.0和Layui构建的智能知识库问答系统,支持文档上传、智能问答和知识库管理,功能大致实现,RAG 还待优化 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-20 - **Last Updated**: 2025-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # 知识库问答系统 基于ASP.NET Core 6.0和Layui构建的智能知识库问答系统,支持文档上传、智能问答和知识库管理。 ## 🎨 界面框架 ### Layui 2.8.18 - **统一主题**: 采用Layui深色主题,界面简洁美观 - **响应式设计**: 支持桌面端和移动端自适应 - **丰富组件**: 表格、表单、模态框、分页等组件 - **动画效果**: 平滑的过渡动画和交互效果 ### 主要特性 - 🎯 **现代化界面**: 基于Layui的现代化UI设计 - 📱 **响应式布局**: 完美适配各种屏幕尺寸 - 🎨 **统一风格**: 深色主题,视觉统一 - ⚡ **高性能**: 轻量级框架,加载速度快 - 🔧 **易维护**: 模块化设计,代码结构清晰 ## 🚀 快速开始 ### 环境要求 - .NET 6.0 SDK - Visual Studio 2022 或 VS Code - 现代浏览器(Chrome、Firefox、Safari、Edge) ### 启动项目 #### 方法一:使用测试脚本 ```bash # 启动Layui界面测试 test-layui.bat # 启动知识库管理测试 test-knowledge.bat # 启动聊天界面测试(使用ApiConfig) test-chat-api-config.bat # 启动聊天界面测试(干净版本) test-chat-clean-version.bat # 启动按钮样式测试 test-buttons.bat ``` #### 方法二:手动启动 ```bash cd src/KnowledgeQA.Web dotnet run ``` ### 访问地址 - **首页**: http://localhost:5001 - **知识库管理**: http://localhost:5001/Home/Knowledge - **智能问答**: http://localhost:5001/Home/Chat - **系统设置**: http://localhost:5001/Home/Settings ## 📁 项目结构 ``` 知识问答1/ ├── src/ │ ├── KnowledgeQA.Web/ # Web前端项目 │ │ ├── Controllers/ # 控制器 │ │ ├── Views/ # 视图页面 │ │ │ ├── Home/ # 主页相关视图 │ │ │ └── Shared/ # 共享布局 │ │ ├── wwwroot/ # 静态资源 │ │ │ ├── css/ # 样式文件 │ │ │ └── js/ # JavaScript文件 │ │ │ └── api-config.js # API配置管理 │ │ └── Program.cs # 程序入口 │ ├── KnowledgeQA.Core/ # 核心业务逻辑 │ ├── KnowledgeQA.Infrastructure/ # 基础设施层 │ └── KnowledgeQA.Application/ # 应用服务层 ├── test-*.bat # 测试启动脚本 └── README.md # 项目说明 ``` ## 🔧 最新更新 ### Chat页面ApiConfig线上接口集成 (2024-12-19) #### 主要修改 1. **API调用方式升级**: - 原来:直接使用`$.ajax()`和硬编码URL - 现在:使用`ApiConfig.getQaApiUrl()`和`ApiConfig.post/get()` 2. **URL构建优化**: - 原来:`'/api/qa/sessions'`, `'/api/qa/chat'` - 现在:`ApiConfig.getQaApiUrl('sessions')`, `ApiConfig.getQaApiUrl('chat')` 3. **请求方式改进**: - 原来:`$.ajax()`的`success/error`回调 - 现在:Promise的`.then()/.catch()`方式 4. **错误处理增强**: - 原来:`error`回调函数 - 现在:`.catch()`方法 5. **配置检查完善**: - 添加了`ApiConfig`可用性检查 - 输出API配置信息到控制台 #### 使用的API接口 - **创建会话**: `POST /api/qa/sessions` - **发送消息**: `POST /api/qa/chat` - **获取会话列表**: `GET /api/qa/sessions` - **获取会话消息**: `GET /api/qa/sessions/{id}/messages` #### 测试方法 ```bash # 运行ApiConfig版本测试 test-chat-api-config.bat ``` #### 预期效果 - ✅ 页面正常加载,无JavaScript错误 - ✅ Console中显示完整的初始化信息 - ✅ 显示API配置信息 - ✅ 所有按钮都能正常点击 - ✅ 显示正确的API URL - ✅ 使用ApiConfig发送请求 ### Chat页面语法错误修复 (2024-12-19) #### 修复内容 1. **语法兼容性**: - 使用`var`替代`let/const`(避免重复声明错误) - 使用字符串拼接替代模板字符串 - 使用传统函数替代箭头函数 - 使用`for`循环替代`forEach` 2. **事件绑定优化**: - 只使用原生JavaScript事件绑定 - 移除了重复的jQuery事件绑定 - 简化了事件处理逻辑 3. **错误处理改进**: - 修复了语法错误 - 移除了可能导致冲突的代码 - 使用更兼容的JavaScript语法 #### 测试方法 ```bash # 运行干净版本测试 test-chat-clean-version.bat ``` ## 🎨 界面组件 ### 布局组件 - **顶部导航栏**: 系统标题和用户信息 - **侧边栏**: 功能模块导航 - **主体内容区**: 页面主要内容 - **底部版权**: 系统版权信息 ### 功能页面 #### 1. 首页 (Index) - **功能卡片**: 知识库管理、智能问答、系统设置 - **统计信息**: 系统使用情况统计 - **快速入口**: 各功能模块的快速访问 #### 2. 知识库管理 (Knowledge) - **文档上传**: 支持PDF、Word、Excel、TXT格式 - **文档列表**: 表格展示,支持排序和分页 - **文档操作**: 查看、删除等操作 - **搜索功能**: 文档搜索和筛选 #### 3. 智能问答 (Chat) - **聊天界面**: 实时对话界面 - **会话管理**: 多会话支持和历史记录 - **消息显示**: 用户和AI消息区分显示 - **输入区域**: 消息输入和发送 - **API集成**: 使用ApiConfig统一管理API调用 #### 4. 系统设置 (Settings) - **参数配置**: 系统参数设置 - **用户管理**: 用户权限和角色管理 - **系统监控**: 系统运行状态监控 ### Layui组件使用 #### 表格组件 ```javascript layui.use('table', function(){ var table = layui.table; table.render({ elem: '#documentsTable', cols: [[ {field: 'id', title: 'ID', width: 80}, {field: 'fileName', title: '文件名', width: 200}, {title: '操作', width: 150, toolbar: '#operationBar'} ]], data: documents }); }); ``` #### 模态框组件 ```javascript layui.use('layer', function(){ var layer = layui.layer; layer.open({ type: 1, title: '上传文档', area: ['500px', '300px'], content: $('#uploadModal') }); }); ``` #### 分页组件 ```javascript layui.use('laypage', function(){ var laypage = layui.laypage; laypage.render({ elem: 'pagination', count: totalCount, limit: pageSize, jump: function(obj, first){ if(!first){ loadDocuments(obj.curr); } } }); }); ``` ## 🔧 API配置管理 ### ApiConfig使用示例 #### 基本用法 ```javascript // 检查ApiConfig是否可用 if (typeof ApiConfig === 'undefined') { console.error('ApiConfig未加载!'); return; } // 获取API URL var sessionsUrl = ApiConfig.getQaApiUrl('sessions'); var chatUrl = ApiConfig.getQaApiUrl('chat'); // 发送请求 ApiConfig.post(sessionsUrl, sessionData) .then(function(response) { console.log('请求成功:', response); }) .catch(function(error) { console.error('请求失败:', error); }); ``` #### 带参数的请求 ```javascript // 带查询参数的GET请求 var parameters = { userId: 'user123', pageIndex: 1, pageSize: 50 }; var sessionsUrl = ApiConfig.getQaApiUrl('sessions', null, parameters); // 带占位符的请求 var messagesUrl = ApiConfig.getQaApiUrl('sessionMessages', {id: sessionId}, parameters); ``` ## 🎯 样式特点 ### 颜色主题 - **主色调**: #1E9FFF (蓝色) - **成功色**: #5FB878 (绿色) - **警告色**: #FFB800 (橙色) - **危险色**: #FF5722 (红色) - **背景色**: #f2f2f2 (浅灰) ### 交互效果 - **按钮悬停**: 轻微上移和阴影效果 - **卡片悬停**: 阴影加深效果 - **导航高亮**: 当前页面高亮显示 - **加载动画**: 旋转加载图标 ### 响应式设计 - **桌面端**: 完整功能展示 - **平板端**: 自适应布局调整 - **移动端**: 侧边栏折叠,触摸优化 ## 🔧 开发指南 ### 添加新页面 1. 在`Controllers/HomeController.cs`中添加Action方法 2. 在`Views/Home/`目录下创建对应的视图文件 3. 使用Layui组件构建界面 4. 在`Views/Shared/_Layout.cshtml`中添加导航链接 ### 自定义样式 - 主要样式文件: `wwwroot/css/site.css` - 遵循Layui的CSS命名规范 - 使用CSS变量保持颜色一致性 ### JavaScript开发 - 使用Layui的模块化加载 - 遵循Layui的事件绑定规范 - 保持代码结构清晰 - 使用ApiConfig统一管理API调用 ## 🐛 问题排查 ### 常见问题 #### Chat页面按钮不工作 1. 检查Console是否有语法错误 2. 确认jQuery和ApiConfig是否正确加载 3. 检查按钮元素是否存在 4. 查看事件绑定是否成功 5. 确认没有重复的变量声明 #### API请求失败 1. 检查ApiConfig是否正确加载 2. 确认API URL是否正确构建 3. 查看网络请求是否成功 4. 确认API服务是否正常运行 #### 语法错误 1. 检查是否有重复的变量声明 2. 确认JavaScript语法兼容性 3. 查看浏览器控制台错误信息 ### 调试方法 1. 打开浏览器开发者工具 2. 查看Console标签页的错误信息 3. 检查Network标签页的网络请求 4. 使用测试脚本验证功能 ## 📝 更新日志 ### 2024-12-19 - ✅ 修复Chat页面语法错误 - ✅ 集成ApiConfig线上接口 - ✅ 优化事件绑定机制 - ✅ 添加详细的调试信息 - ✅ 创建多个测试脚本 ### 2025-07-11 - ✅ 完成Layui界面框架集成 - ✅ 实现知识库管理功能 - ✅ 添加文档上传功能 - ✅ 创建基础测试脚本 ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request 来改进这个项目。 ## 📞 联系方式 ======= # KnowledgeQA #### 介绍 基于ASP.NET Core 9.0和Layui构建的智能知识库问答系统,支持文档上传、智能问答和知识库管理,功能大致实现,RAG 还待优化 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) >>>>>>> 8adac23ced7787b5118beb22a667dc5db57de105