develop
main
已经实现全部需求的功能
- 聊天消息处理服务 (ai/chat/service.py) - 会话管理API (api/v1/endpoints/chat.py, sessions.py) - Pydantic数据模型 (ai/chat/schemas.py) - 完整的API路由配置 - 可运行的服务器配置 提供完整的自然语言转SQL功能,支持: - 用户消息处理 - 对话会话管理 - 消息历史记录 - AI SQL生成
- 合并main.py配置,集成队友的服务器设置 - 使用队友的数据库配置 - 保留聊天API功能
Reviewed-on: #5
## 核心功能 - 聊天消息处理服务 (ai/chat/service.py) - 会话管理API端点 (api/v1/endpoints/chat.py, sessions.py) - 数据模型定义 (ai/chat/schemas.py) - 完整的API路由配置 ## 技术特性 - 自然语言消息解析和处理 - 对话会话生命周期管理 - 消息历史记录持久化 - AI SQL生成服务框架 - 完整的RESTful API设计 - 自动Swagger文档生成 ## 测试验证 - 本地服务器运行成功 - 所有API端点测试通过 - 返回格式符合前端要求 Ready for frontend integration! 🚀
- 更新docker-compose配置 - 集成前端环境配置 - 更新前端依赖包 - 合并聊天后端模块
- 实现完整的聊天API端点 - 集成Docker容器化部署 - 添加会话管理和消息处理 - 提供完整的API文档 - 验证所有接口功能正常 测试通过: ✅ 聊天消息处理 ✅ 会话管理功能 ✅ Docker环境运行 ✅ 数据库连接配置 ✅ API文档生成
Reviewed-on: #8
This reverts commit df12bc3c6a.
df12bc3c6a
# Conflicts: # src/frontend/README.md # src/frontend/package-lock.json # src/frontend/package.json
# Conflicts: # src/frontend/index.html
修改页面缩放bug
# Conflicts: # docker-compose.yml
Reviewed-on: #19
对话与消息管理,会话管理,管理员对接真实数据库
Reviewed-on: #23
Reviewed-on: #24
Reviewed-on: #25
# Conflicts: # src/backend/app/api/v1/endpoints/auth.py
Reviewed-on: #28
# Conflicts: # src/backend/app/service/project_service.py
完善用户认证系统,修复Token验证逻辑 区分管理员与普通用户权限,新增管理员端点 重构公告系统,支持管理员发布/管理公告 增强聊天功能,完善用户会话管理 优化报告生成逻辑,修复数据查询问题 重构项目与会话模型,改进数据结构 更新配置文件,调整系统参数 加强API端点权限控制,防止未授权访问 新增Token和Session相关Schema与服务
Reviewed-on: #29
Reviewed-on: #30
# Conflicts: # src/backend/app/service/chat_service.py # src/backend/app/service/mysql_service.py
- 新增数据库用户创建、权限授予和认证插件管理功能 - 实现用户存在性检查和权限验证逻辑 - 添加SQL执行前的安全校验和用户引擎初始化机制 - 支持sha256_password和mysql_native_password双插件兼容 - 完善SQL转义和安全执行流程,防止注入攻击 - 增加用户缓存管理和引擎状态检查功能 - 添加完整的单元测试覆盖核心业务逻辑
# Conflicts: # src/backend/app/mysql/mysql_database.py # src/backend/app/service/mysql_service.py
Reviewed-on: #31
# Conflicts: # src/backend/app/crud/crud_announcement.py
Reviewed-on: #32
Reviewed-on: #34
Reviewed-on: #35
- 新增PostgreSQL模块初始化文件 - 添加PostgresConfig配置类,支持数据库连接参数配置 - 在配置文件中添加PostgreSQL数据库配置项 - 修改数据库实例模型以支持PostgreSQL连接URL生成 - 在数据库执行器服务中集成PostgreSQL DDL部署功能 - 添加PostgreSQL转换器,支持SQLite到PostgreSQL的SQL语句转换 - 实现PostgreSQL数据库管理器,支持连接池和权限管理 - 添加PostgreSQL数据库容器配置到docker-compose文件 - 重命名MySQL服务中的SQL执行函数以明确区分数据库类型
- 实现SQLite数据库配置类,支持文件路径管理和用户隔离 - 添加SQLite连接管理器,提供异步引擎初始化和资源释放功能 - 集成SQL方言转换器,支持PostgreSQL到SQLite的深度转换 - 实现SQLite执行器,提供DQL、DML和DDL操作的安全执行 - 配置YAML文件中添加SQLite相关配置项 - 更新依赖文件,添加aiosqlite支持 - 创建SQLite模块初始化文件
- 重命名 redis 模块为 redis_client - 移除 admin API 端点中的 try-catch 异常处理包装 - 移除 auth 端点中的 try-catch 异常处理包装 - 移除 chat 端点中的 try-catch 异常处理包装 - 移除 database 端点中的 try-catch 异常处理包装 - 移除 announcement 端点中的 HTTPException 直接抛出 - 在多个端点中引入自定义异常类型替代 HTTPException - 移除多余的 status import 依赖 - 移除 _init_.py 文件的创建和删除操作
- 将 chat_service.py 中的错误消息翻译为中文 - 将 deps.py 中的认证相关错误消息翻译为中文 - 将 exceptions.py 中的业务异常消息翻译为中文 - 将 report_service.py 中的错误消息翻译为中文 - 统一错误消息的中文表达方式 - 保持原有的错误处理逻辑不变
- 将所有API端点的响应模型修改为UnifiedResponse格式 - 为用户管理、公告管理、黑名单、知识库等所有模块添加统一响应包装 - 修改异常处理器以返回统一的错误响应格式 - 为分页数据添加PageData结构支持 - 更新所有端点的返回值为UnifiedResponse.success()格式 - 为删除操作等端点添加成功消息返回
- 在 admin.py 中为 max_databases 和公告标题添加长度验证器 - 在 auth.py 中为邮箱、用户名、密码等字段添加长度验证器并修复导入错误 - 在 chat.py 中为消息内容添加非空验证器 - 在 knowledge.py 中为术语长度添加验证器 - 在 project.py 中为项目名称和描述添加长度验证器 - 在 query.py 中为会话名称添加长度验证器 - 在 session.py 中为项目ID添加正数验证器 - 在 user.py 中为用户名和密码添加长度验证器 - 优化异常处理器中的错误信息格式化和日志记录 - 更新 docker-compose.yml 中的 redis 容器名称配置
- 移除验证码验证代码的注释以启用功能 - 添加邮箱验证码验证逻辑 - 实现验证码无效时抛出异常机制
- 创建RedisKeyManager类统一管理所有Redis键的生成 - 实现环境隔离前缀支持,增强多环境部署能力 - 重构公告缓存服务使用统一的键生成方法 - 更新令牌管理服务使用新的键管理器 - 优化Redis连接配置,添加密码和超时设置 - 改进过期键监听器的键前缀处理逻辑 - 重构安全模块的频率限制键生成方式 - 统一验证码和密码重置相关键的命名规范
# Conflicts: # src/backend/app/redis_client/expiration_listener.py # src/backend/app/redis_client/redis.py
- 将所有f-string日志记录改为安全的格式化方式 - 引入自定义异常类替换HTTPException - 添加错误代码常量定义和异常处理器 - 重构依赖注入中的异常处理逻辑 - 统一SQL转换和执行的异常处理机制
- 将REDIS_HOST从redis_client更新为redis - 修正Celery的Redis连接URL配置 - 统一Redis服务地址为标准格式
- 在配置文件中添加哨兵模式、SSL和连接重试配置选项 - 实现统一缓存服务接口,支持缓存穿透、雪崩、击穿防护 - 添加Redis键管理器,提供标准化的键生成方法 - 实现项目服务中的缓存逻辑,提高数据访问性能 - 添加Redis连接重试机制和健康检查功能 - 更新日志记录方式,使用f-string格式化 - 创建应用实例的工厂函数,提升代码结构 - 添加缓存服务的单元测试用例
- 移除多个模块中直接导入和抛出HTTPException的做法 - 添加BusinessException和AppException到chat_service异常导入 - 在chat_service中使用hasattr检查error属性而非直接类型判断 - 从deps.py中移除HTTPException异常传递的冗余代码 - 在postgresql_service中统一异常处理逻辑并使用自定义异常类型 - 从多个API端点文件中移除HTTPException导入以减少依赖 - 在deps.py中移除不必要的except HTTPException块 - 统一数据库操作异常处理流程并改进错误信息格式
# Conflicts: # src/backend/app/api/v1/endpoints/project.py # src/backend/app/service/project_service.py
# Conflicts: # src/backend/app/service/chat_service.py
- 将httpx从0.25.2更新到0.28.1 - 添加chromadb依赖包,版本为0.5.23 - 保持openai版本2.12.0不变 - 更新requirements.txt中的依赖列表
- 在AI生成任务中添加缓存清除失败的警告日志 - 修改_invalidate_project_cache函数返回布尔值并添加详细日志 - 在schema、ER图和DDL生成任务完成后添加缓存清除逻辑 - 优化cache_service的delete和delete_pattern方法添加连接重试机制 - 在项目服务中统一使用_invalidate_project_cache函数清除缓存 - 将项目列表和详情缓存的TTL从300秒调整为10秒 - 添加Redis连接未初始化时的自动重连机制
会话名称持久化 取消操作集成到sql,不作为单独消息 修复取消按钮的频繁出现
- 在 chat_service.py 中添加 'doesn't have a default value' 错误处理逻辑 - 在 mysql_service.py 中添加 'doesn't have a default value' 错误处理逻辑 - 在 postgresql_service.py 中添加 'doesn't have a default value' 错误处理逻辑 - 提供清晰的错误信息提示用户检查必需字段值 - 统一数据库服务的错误处理机制
历史对话只拼接用户提问消息,未拼接执行结果和报错信息
- 在 .gitignore 中添加 mcp/ 目录忽略规则 - 在 docker-compose.yml 中添加 MySQL 和 PostgreSQL 用户数据库配置 - 修改 mysql_service.py 中的 build_mysql_url 调用以支持 host 和 port 参数 - 配置 MySQL 服务使用新的主机和端口配置
- 添加 CREATE 和 DDL 类型到需要确认的 SQL 类型列表 - 新增 _is_forbidden_sql_type 函数用于判断被禁止的 DDL 操作 - 新增 _normalize_sql_type_for_db 函数将 SQL 类型标准化为数据库允许的类型 - 在保存 AI 响应时使用标准化的 SQL 类型存储到数据库 - 对于被禁止的 DDL 操作返回错误信息而不是执行 - 在 PostgreSQL 数据库模块中添加异步锁防止并发授权导致的更新错误 - 在 PostgreSQL 服务模块中实现授权锁机制避免并发问题 - 优化用户引擎初始化逻辑,使用锁防止并发初始化冲突 - 快速路径检查引擎是否存在以避免不必要的锁操作
- 后端支持编辑模式下使用已保存的 API 密钥进行连接测试 - 前端在编辑模式下允许留空密钥字段以使用已保存的密钥 - 添加 config_id 参数支持通过配置 ID 获取已存储的密钥 - 重构管理员用户列表页面的用户状态操作界面 - 移除用户操作下拉菜单,统一使用按钮进行封禁/解封操作 - 更新 API 密钥验证逻辑,仅在新建模式或输入新密钥时进行格式校验
- 移除后端术语导出接口及相关服务逻辑 - 前端实现客户端Excel导出功能,使用xlsx库处理文件生成 - 添加选择性导出支持,可导出选中术语或当前页面全部术语 - 优化导出数据格式,包含术语、定义、示例和创建时间字段 - 设置Excel列宽并添加导出成功提示信息 - 更新前端依赖,添加xlsx库支持
- 添加前端校验防止新用户名与当前用户名相同 - 实现后端逻辑避免用户名无变化时的重复更新 - 优化用户名重复检查逻辑,提升用户体验 - 修复用户名更新流程中的异常处理机制
- 修正 postgresql 数据卷路径从 /var/lib/postgresql_user/data 到 /var/lib/postgresql/data - 移除未使用的 app-network 网络配置 - 添加 MySQL 用户数据库配置环境变量 (MYSQL__HOST, MYSQL__PORT) - 添加 PostgreSQL 用户数据库配置环境变量 (POSTGRESQL__HOST) - 移除未使用的 POSTGRESQL__PORT 环境变量 - 为数据库配置添加 Docker 内部网络注释说明
- 将默认 host 和 port 参数设为 None,允许从配置文件读取 - 添加逻辑从配置文件获取数据库主机地址和端口 - 更新文档字符串说明 None 值的处理方式 - 保持向后兼容性的同时提供更灵活的配置选项
- 详细说明本地开发与 Docker 部署的环境配置差异 - 提供数据库连接配置的完整对照表 - 添加 PostgreSQL 数据查看的多种方法和常用命令 - 包含网络架构图和常见问题解答 - 说明配置加载优先级和环境变量覆盖机制
Reviewed-on: #36
- 将远程背景图片URL替换为本地SVG文件 - 添加新的background.svg到public目录 - 优化登录页面背景加载性能
- 添加error_message参数用于传递执行失败时的错误信息 - 根据执行状态构建不同的回复内容,失败时显示错误详情 - 仅对执行失败的SQL进行向量索引以帮助AI避免类似错误 - 从data中提取执行失败时的错误信息并传递给保存函数 - 改进错误响应格式,添加执行失败前缀 - 在处理执行错误时更新数据库状态并索引错误案例 - 降低RAG服务中领域知识检索数量从5到3以优化性能
- 添加_build_ddl_from_rag_results函数构建RAG检索的DDL文本 - 集成项目信息获取和数据库类型识别逻辑 - 实现基于表数量阈值的DDL分片检索开关(超过5个表启用) - 在RAG服务中添加外键关联表扩展功能 - 添加外键引用表自动检索和权重提升机制 - 更新RAG检索参数配置和日志记录 - 优化DDL检索的相似度阈值和最大表数限制 - 实现外键引用表名提取的正则表达式匹配
- 移除了表格头部中多余的 uppercase 类 - 保持了表格头部的粘性定位和其他样式属性
Reviewed-on: #37
Reviewed-on: #38
- 添加 normalizeStatus 函数处理用户状态标准化 - 实现用户状态标签的动态颜色和文本显示 - 集成用户详情页面的状态展示逻辑 - 支持 normal、suspended、banned 三种状态的正确映射 - 优化用户状态标签的样式和可读性
- 在项目删除时清除用户信息缓存(包含 used_databases 项目计数) - 更新管理数据查询以排除已删除项目并修正项目计数统计 - 添加临时数据库引擎获取方法支持特定数据库操作 - 优化 PostgreSQL 服务中临时引擎的资源释放机制
# Conflicts: # src/frontend/src/pages/Admin.tsx
- 在用户模型中添加 avatar_url 字段 - 在管理员用户列表界面显示用户头像 - 实现头像的默认显示逻辑(首字母缩写) - 添加更新当前用户信息的方法 - 将头像更新回调传递给个人资料页面 - 在修改用户名和头像时同步更新全局用户状态 - 更新类型定义以包含可选的头像URL字段
- 在用户模型中添加 avatar_url 字段 - 更新后端服务以返回用户头像URL信息 - 修改前端管理页面显示用户头像 - 为管理员状态页面添加头像显示逻辑 - 更新前端类型定义支持头
- 将验证码有效期从 60 秒调整为 300 秒 - 修复邮件模板中验证码有效期显示的浮点数问题,添加 int 类型转换
- 为用户名输入框添加必填验证 - 为邮箱地址输入框添加必填验证 - 为验证码输入框添加必填验证 - 为密码输入框添加必填验证 - 为确认密码输入框添加必填验证
- 在 Input 组件中添加密码可见性切换按钮 - 引入 Eye 和 EyeOff 图标用于密码显示控制 - 实现密码输入框的显示/隐藏切换逻辑 - 添加 CSS 样式隐藏浏览器默认密码显示按钮 - 为密码输入框添加右侧内边距以容纳切换按钮
- 明确多记录插入时必须使用单个INSERT语句配合多个VALUES子句 - 移除生成多个INSERT语句的错误做法说明 - 添加多记录插入的正确示例格式 - 强调INSERT语句中VALUES部分的元组格式要求
- 为邮箱地址输入框添加必填验证并更新占位符文本 - 为验证码输入框添加必填验证 - 为新密码输入框添加必填验证 - 为确认新密码输入框添加必填验证
- 将 service_login 重命名为 service_login_with_record 并集成登录日志记录功能 - 在 swagger_login 接口中添加 Request 参数以获取客户端信息 - 实现登录成功和失败时的详细日志记录,包括 IP、用户代理和设备信息 - 修复密码错误异常消息逻辑,根据失败次数显示不同提示 - 更新用户不存在异常的消息内容,区分用户不存在和密码错误 - 在用户登录时处理旧的未登出会话记录 - 完善登录历史查询条件,只查询未登出的记录 - 添加登出时间校验,确保登出时间不早于登录时间 - 集成登录失败原因记录和异常处理机制
- 修改后端查询逻辑,包含所有登录相关记录(success, failed, expired, forced_logout) - 更新前端Profile页面的登录状态标签显示,支持四种状态的正确展示 - 调整UserProfile页面的登录历史列表,正确显示各种登录状态的文本 - 修复前端状态判断逻辑,确保失败状态正确高亮为红色 - 添加对forced_logout和expired状态的前端文本翻译支持
- 在设置用户离线状态后添加了缓存删除逻辑 - 使用 redis_key_manager 获取用户信息缓存键 - 通过 cache_service 删除对应的用户信息缓存 - 确保用户状态变更时缓存数据的一致性
- 将字段验证器改为模型验证器 - 从单独字段验证改为批量验证密码长度 - 统一处理旧密码、新密码和确认密码的长度验证 - 保持6到50字符的密码长度限制不变
- 实现 API URL 智能修正功能,自动为 /v1 结尾的 URL 添加 /chat/completions 路径 - 移除前端 API 密钥显示切换功能,统一使用密码类型输入 - 简化后端 URL 清理逻辑,提升配置流程的智能化水平 - 移除前端多余的图标导入和状态管理代码
- 删除了自动追加 /chat/completions 的智能修正功能 - 移除了基于 /v1 结尾的 URL 自动补全逻辑 - 简化了 URL 清理流程,保持原始处理逻辑不变
- 将背景图片路径从远程URL改为本地资源路径 - 保持原有的背景样式和布局属性不变
- 将邮箱字段类型从 EmailStr 改为 str - 为用户模型添加邮箱格式验证器 - 为更新邮箱请求添加邮箱格式验证器 - 为更新邮箱确认添加邮箱格式验证器 - 保留邮箱格式验证功能同时提高字段灵活性
- 替换所有 request.client.host 为 get_client_ip 函数以正确获取真实客户端IP - 新增 get_client_ip 工具函数,支持从 X-Forwarded-For 和 X-Real-IP 头获取真实IP - 将用户请求频率限制阈值从 20 次调整为 200 次 - 在认证、密码重置、依赖注入和用户服务模块中统一使用新的IP获取方式
- 添加 proxy_headers=True 参数以信任代理头 - 配置 forwarded_allow_ips="*" 允许所有来源转发头 - 修复 X-Forwarded-For 等头信息的正确解析 - 为生产环境提供代理服务器 IP 限制建议
- 在uvicorn命令中添加--proxy-headers和--forwarded-allow-ips参数 - 配置前端代理转发真实客户端IP到后端服务 - 添加X-Forwarded-For和X-Real-IP请求头设置 - 实现客户端IP地址解析和转发功能
- 添加 force_logout_user_sessions 函数用于强制登出用户会话 - 实现删除用户信息缓存和设置用户离线状态功能 - 在用户封禁逻辑中集成强制登出功能 - 通过权限检查机制确保被封禁用户无法继续访问系统
- 在用户状态更新时保存原始状态用于后续判断 - 将频率限制器重置方法改为异步以支持并发操作 - 修复频率限制阈值注释错误问题 - 在用户被封禁时强制登出其所有活跃会话 - 移除封禁用户时的重复会话登出逻辑 - 优化用户登出时的IP地址获取方式 - 实现通过SCAN命令安全删除用户所有JWT令牌 - 改进强制登出逻辑以处理大量用户令牌的场景
- 将开发环境JWT访问令牌有效期从3小时延长至2周 - 将生产环境JWT令牌有效期从3小时延长至2周 - 更新注释说明过期时间计算方式为2周时长
- 将IP变更检测阈值从15次调整为3次 - 移除三击机制的自动异常标记功能 - 直接使用违规事件描述标记用户为异常 - 强制登出被封禁用户的所有活跃会话 - 修复自动封禁逻辑中的条件判断问题
- 添加 _is_ai_service_error 函数检测AI服务调用错误 - 优化 _is_meta_sql 函数排除AI服务错误的处理 - 新增 _handle_ai_service_error_response 函数处理AI服务错误响应 - 实现 _get_ai_service_friendly_error 函数转换错误详情为用户友好消息 - 前端移除重复的错误消息显示逻辑,统一使用全局提示处理网络异常
- 后端添加 Request 依赖以获取原始请求体进行验证 - 实现科学计数法格式检测,防止用户输入 e 格式数值 - 添加小数验证,确保额度必须为整数类型 - 前端增加科学计数法和整数格式的输入检查 - 添加调整后额度不能小于当前项目数的验证逻辑 - 修复前端重复设置错误信息的问题 - 更新后端导入以支持 root_validator 使用
- 移除了网络错误时的重复全局提示 - 统一使用全局错误处理器处理错误情况 - 简化了错误处理逻辑,避免重复提示用户
- 添加超时错误检测逻辑,当出现连接超时错误时自动刷新消息列表 - 实现延迟1秒后重新获取会话消息,确保后端有足够时间处理 - 修复会话消息状态更新机制,同步最新消息到前端状态 - 保持原有的全局错误处理机制,避免重复提示用户 - 优化会话自动重命名逻辑,在超时后仍能正确更新会话名称
- 无论何种错误都尝试刷新消息列表,确保后端处理完成的消息能够显示 - 增加等待时间从1秒调整为3秒,给后端更充分的处理时间 - 添加详细的日志输出,便于调试消息刷新过程 - 移除仅针对超时错误的特殊处理逻辑,统一错误处理流程
- 立即清除处理中标记,停止显示"思考中"状态 - 无论什么错误,都立即刷新消息列表,因为后端已经处理完成并保存了消息(包括错误消息) - 移除不必要的延时等待逻辑 - 仅在请求成功时才清除处理中标记,确保错误状态正确显示
- 配置细粒度超时参数:连接10秒、读取120秒、写入30秒、连接池10秒 - 添加针对不同异常类型的专门处理:连接错误、连接超时、读取超时、HTTP状态错误 - 在前端API调用中设置120秒超时以匹配后端处理时间 - 优化错误消息的前端显示,添加短暂延迟确保后端完成错误消息持久化 - 改进空错误详情的处理逻辑,提供更友好的用户提示
- 后端查询逻辑从按创建时间排序改为按最后活动时间排序 - 前端会话列表显示时间优先使用最后活动时间,回退到创建时间 - 更新注释说明排序规则为按最后活动时间降序排列
- 更新会话消息和时间戳,并重新排序使当前会话置顶 - 按 updated_at 降序排序,最近活跃的会话在前 - 确保会话列表按最新活动时间正确排序显示
- 添加BusinessError类型导入用于错误类型判断 - 修改保存模型时的错误处理,避免BusinessError重复弹窗 - 修改删除模型时的错误处理,避免BusinessError重复弹窗 - 实现全局错误处理器与局部错误提示的协调机制
- 移除了 types.ts 中未使用的 BusinessError 导入 - 简化了保存模型时的错误处理,统一使用全局错误处理器 - 简化了删除模型时的错误处理,移除重复的错误提示逻辑 - 添加注释说明错误处理由全局拦截器统一处理 - 保持错误日志记录但避免用户界面重复弹窗
- 添加模型名称重复检查逻辑 - 在更新时验证新名称是否与其他配置冲突 - 防止相同模型名称的重复创建 - 抛出验证异常以提供清晰错误信息
e70859a655
No due date set.
No dependencies set.
Deleting a branch is permanent. It CANNOT be undone. Continue?
已经实现全部需求的功能
## 核心功能 - 聊天消息处理服务 (ai/chat/service.py) - 会话管理API端点 (api/v1/endpoints/chat.py, sessions.py) - 数据模型定义 (ai/chat/schemas.py) - 完整的API路由配置 ## 技术特性 - 自然语言消息解析和处理 - 对话会话生命周期管理 - 消息历史记录持久化 - AI SQL生成服务框架 - 完整的RESTful API设计 - 自动Swagger文档生成 ## 测试验证 - 本地服务器运行成功 - 所有API端点测试通过 - 返回格式符合前端要求 Ready for frontend integration! 🚀e70859a655into main 7 days agoe70859a655.