Commit Graph

75 Commits

Author SHA1 Message Date
d11933bccd 调整 AI_BASE_URL 和 AI_BACKUP_BASE_URL 配置 2026-06-03 16:22:55 +08:00
b24e3b5983 更新 AI_BASE_URL 和 AI_BACKUP_BASE_URL 配置 2026-06-03 16:20:33 +08:00
3d479c52e7 ```
feat(api): 新增AI生成内容检测功能

- 添加aigc-detect路由接口,用于检测图像是否为AI生成内容
- 集成阿里云AIGC检测服务,配置相关API参数
- 实现积分扣除机制,每次检测消耗1积分

feat(frontend): 前端集成AI生成检测UI组件

- 添加formatAigcDetectionResult函数用于格式化检测结果显示
- 实现detectAigcImage函数处理检测请求和响应
- 在图片展示区域添加AI生成检测按钮和结果展示框
- 更新图片容器布局,优化下载按钮显示效果

refactor(service): 优化积分管理逻辑

- 新增try_deduct_points函数实现积分预检查和扣除
- 改进错误处理机制,确保数据库事务安全

refactor(history): 过滤AI检测记录

- 在历史记录查询中排除AI生成检测类型的数据
- 使用image_urls字段过滤检测相关的记录
```
2026-05-16 23:11:08 +08:00
2bcb53e2eb ```
feat(config): 更新AI备份API配置和密钥

- 添加AI_BACKUP_BASE_URL配置项,设置为"https://ai.comfly.chat"
- 更新多个API的备用密钥,包括TRIAL、PREMIUM、VIDEO和GEMINI_FLASH_IMAGE等服务
- 确保系统拥有有效的备份API端点和认证密钥

fix(utils): 改进备份API密钥获取逻辑

- 修改get_backup_api_key函数,当未找到对应的备份密钥时返回None而不是原密钥
- 更新get_api_candidates函数,添加backup_key存在性检查以避免使用空密钥
```
2026-05-14 22:41:07 +08:00
cf9100fcc3 ```
feat(api): 统一图像生成功能至generations接口

- 将gpt-image-2模型统一使用AI_BASE_URL下的generations接口,
  不再区分有无参考图走不同接口
- 在payload中添加response_format字段并移除output_format字段
- 更新图像数据处理逻辑,将image_data转换为image数组格式

refactor(config): 更新图像生成API配置

- 将GPT_IMAGE_GENERATION_API从硬编码URL改为使用AI_BASE_URL动态构建

refactor(generation_service): 简化图像生成请求验证逻辑

- 移除has_reference_images判断逻辑,统一使用generations接口
- 积分模式下gpt-image-2改用PREMIUM_KEY而非专用编辑key
- 移除不必要的image_data变量声明

refactor(task_service): 移除废弃的图像处理函数

- 删除_base64相关处理函数(_decode_base64_image等)
- 移除_minio上传相关函数(_upload_image_bytes_to_minio等)
- 移除gpt-image-2特定处理逻辑(_process_gpt_image_edit)
- 简化图像生成任务处理流程
```
2026-05-14 12:30:10 +08:00
43474c4395 ```
feat(app): 添加数据库重试机制提高定时任务稳定性

- 引入run_db_operation_with_retries函数处理临时性数据库错误
- 在定时任务中对订单查询操作添加重试逻辑
- 对数据库连接参数进行优化配置
- 增加适当的日志记录便于问题排查
```
2026-05-08 10:28:25 +08:00
c0a0db4142 Add admin usage audit for generation records 2026-05-02 11:45:44 +08:00
c8d9a7b51c ```
feat(config): 更新AI API配置和密钥

- 更改AI_BASE_URL从https://ai.comfly.chat到https://api.bltcy.ai
- 移除AI_BACKUP_BASE_URL配置
- 更新所有API密钥为新的安全密钥
- 同步更新前端config.js中的API_URL配置
```
2026-04-26 23:32:04 +08:00
4b9f152aea ```
feat(js): 简化图片下载逻辑并移除文件类型检测功能

- 移除 getImageExtension 函数和相关的内容类型映射逻辑
- 修改 buildImageFilename 函数,不再依赖内容类型参数,默认使用 .png 扩展名
- 将图片下载方式从 fetch + blob 改为 iframe 方式
- 添加 iframe 自动清理机制,默认延迟 60000ms 后移除
- 移除 Blob URL 创建和手动清理逻辑
- 优化下载成功提示信息
```
2026-04-26 10:53:23 +08:00
4ece904c25 ```
feat(api): 添加 MinIO 文件下载支持并优化流处理

添加了对 MinIO 存储文件的直接下载支持,包括:
- 新增 urlparse 和 Config 导入用于 URL 解析和配置读取
- 集成 s3_client 扩展用于 MinIO 对象存储操作
- 实现同源文件检测逻辑,判断是否为 MinIO 存储的文件
- 添加 MinIO 文件流式下载功能,支持大文件处理
- 优化流处理过程中的资源管理,确保请求和文件对象正确关闭
- 增强安全性,验证同源策略防止任意 URL 访问
```
2026-04-26 10:39:46 +08:00
bdbec1a310 ```
feat(js): 改进图片下载功能并添加文件名处理

- 添加downloadFilenameSerial变量用于生成唯一的下载文件名序列号
- 实现getImageExtension函数来根据content-type获取正确的文件扩展名
- 创建buildImageFilename函数来构建安全的文件名,支持从URL解析原始名称
- 实现buildDownloadProxyUrl函数来构建下载代理URL
- 重构downloadImage函数,增加错误处理和进度提示
- 添加静默下载选项,避免批量下载时重复显示提示
- 改进批量下载逻辑,统计成功和失败数量并显示相应提示
- 增强文件名安全性,过滤特殊字符和路径遍历字符
```
2026-04-26 10:21:43 +08:00
3df902963d ```
feat(api): 移除gpt-image-2参考图强制验证并优化图像处理逻辑

移除对gpt-image-2模型的参考图上传强制验证,支持无参考图时调用生成接口,
同时优化图像URL提取和处理逻辑以支持不同响应格式

BREAKING CHANGE: gpt-image-2不再强制要求上传参考图
```
2026-04-26 09:49:31 +08:00
3610bedb39 ```
feat(admin): 系统通知功能增加图片支持

- 在SystemNotification模型中添加image_urls字段用于存储图片URL列表
- 实现通知图片的上传、保存和展示功能
- 前端模板增加图片预览模态框和图片上传组件
- 优化通知管理页面的UI布局,支持多图展示
- 完善图片相关的前后端交互逻辑和错误处理
```
2026-04-24 23:42:12 +08:00
dfcd4fcc56 ```
feat(api): 将默认图片尺寸从2160x3840调整为2048x2048

- 修改blueprints/api.py中的默认size参数从2160x3840改为2048x2048
- 更新static/js/main.js中GPT_IMAGE_EDIT_MODEL对应的默认尺寸值
- 调整templates/mobile.html中移动端页面的默认尺寸配置
```
2026-04-24 23:20:28 +08:00
0adabaa235 ```
feat(api): 新增gpt-image-2编辑模型支持

- 添加gpt-image-2模型的专门接口配置和API密钥
- 实现gpt-image-2编辑模式的完整处理流程,包括Base64图片解码、
  图片验证和MinIO上传功能
- 更新前端界面以支持gpt-image-2的特定参数(如尺寸选项)
- 修复prompt不能为空的校验逻辑
- 优化图片上传处理,支持编辑模式下的参考图必需校验
- 更新视频生成任务状态消息文案
```
2026-04-24 23:17:10 +08:00
fec3426bad ```
feat(config): 添加API备用地址和密钥配置

- 新增 AI_BASE_URL 和 AI_BACKUP_BASE_URL 配置项
- 为试用、高级、视频和Gemini Flash等API添加备用密钥
- 使用f-string格式化API端点URL以支持动态基地址
- 统一API端点构建方式,提高配置灵活性

feat(services): 实现API故障自动切换机制

- 在聊天生成服务中集成多线路候选和故障转移逻辑
- 重构图像和视频生成服务以支持备用API线路
- 实现智能路由,根据状态码自动切换到备用线路
- 增强错误处理和日志记录功能

feat(utils): 新增API线路管理和切换工具函数

- 实现 get_backup_api_url() 函数用于URL备用地址转换
- 创建 get_backup_api_key() 函数管理备用密钥映射
- 开发 get_api_candidates() 函数生成主备线路候选列表
- 添加 should_switch_to_backup() 函数判断是否需要切换线路

refactor(services): 优化视频生成任务的API密钥配置

- 将视频生成任务独立使用VIDEO_KEY而非通用密钥
- 确保视频服务使用专门的API密钥进行身份验证
```
2026-04-22 11:53:00 +08:00
99583289ba ```
feat(config): 添加Gemini Flash Image Premium密钥配置

添加GEMINI_FLASH_IMAGE_PREMIUM_KEY配置项用于支持新的AI模型

feat(generation): 增强图片生成功能以支持Gemini Flash Image模型

- 添加对gemini-3.1-flash-image-preview模型的支持
- 实现基于模型类型的API密钥动态选择逻辑
- 支持字符串类型布尔值转换处理

fix(mobile): 修复移动端页面初始化时成本预览更新问题

在页面加载完成后调用updateCostPreview函数确保成本预览正确显示
```
2026-04-13 11:50:32 +08:00
3f3067d584 Merge branch 'main' of http://331002.xyz:8418/240241002/ai_v 2026-04-12 21:46:28 +08:00
fea892b335 ```
feat(js): 更新模型大小配置

修改SIZE_MODELS数组中的模型名称,
将'nano-banana-2'替换为'nano-banana-pro'
```
2026-04-12 21:46:23 +08:00
dd6d095e08 123 2026-03-31 08:58:28 +08:00
fbdb232502 ```
feat(app): 添加移动端检测和配置优化

- 添加request和redirect导入以支持移动端检测
- 实现用户代理检测逻辑,自动重定向移动设备到/mobile页面
- 优化mobile.html模板中的UI布局和标签文本
- 移动端特定功能:调整尺寸选择器显示逻辑,仅在特定模型时显示
- 添加fillSelect工具函数统一处理下拉选项填充
- 集成用户收藏提示词功能,合并系统预设和用户自定义模板
- 改进错误处理机制,在配置加载和历史记录加载中添加try-catch
- 优化历史记录数据显示,适配新的数据结构字段
- 增强成本预览功能,实时计算积分消耗并在UI上展示
```
2026-03-13 22:28:20 +08:00
b515bdaed1 ```
feat(app): 添加移动端图片生成页面路由

新增移动端专用的图片生成页面,为移动设备用户提供优化的用户体验。
页面通过 /mobile 路由访问,使用 mobile.html 模板渲染。

docs(README): 完善项目文档和API端点说明

更新 README.md 文件,添加详细的项目功能特性和技术栈介绍,
补充完整的 API 端点概览表格,以及支持的 AI 模型列表。
```
2026-03-13 22:16:08 +08:00
158ba123b1 ```
feat(task_service): 增强任务服务的错误处理和重试机制

- 添加了 _extract_error_detail 函数,用于从 API 响应中智能提取详细的错误信息,
  支持多种常见的错误字段格式,提高错误诊断准确性

- 集成 requests 异常处理,区分连接超时、连接错误和读取超时等不同类型的网络异常,
  实现更精确的重试策略,避免因响应丢失导致的任务重复提交

- 在图像和视频生成流程中统一使用新的错误提取函数替代原有的简单错误字段获取,
  提升失败任务的错误信息详细程度

- 优化异常处理逻辑,对不同类型的异常采用相应的处理策略,包括安全重试和终止重试
```
2026-03-12 23:25:46 +08:00
5793a659a9 ```
feat(config): 添加尺寸模型常量配置

- 将尺寸模型数组定义为全局常量 SIZE_MODELS
- 在模型选择变更时使用常量进行判断
- 初始化页面时检查默认模型并相应显示/隐藏尺寸选择器
- 支持 nano-banana-2 和 gemini-3.1-flash-image-preview 模型的尺寸选项
```
2026-02-27 10:46:14 +08:00
bc2fa7f908 ```
feat(api): 支持新模型gemini-3.1-flash-image-preview的图片尺寸设置

支持gemini-3.1-flash-image-preview模型使用图片尺寸参数,
同时在前端界面中为该模型显示尺寸选择选项。
```
2026-02-27 10:44:01 +08:00
6c3731097a Merge branch 'main' of http://331002.xyz:8418/240241002/ai_v 2026-02-27 10:36:11 +08:00
4a892f391c ```
feat(api): 添加模型类型判断逻辑以排除图像模型

- 提取model_value.toLowerCase()到变量model_lower中以避免重复计算
- 在判断聊天模型时增加对'image'关键词的检查,排除图像模型
- 修复了原有逻辑中可能将图像模型误判为聊天模型的问题
```
2026-02-27 10:36:08 +08:00
dd140d88d7 ```
docs(README): 更新启动服务文档并添加生产环境部署说明

- 添加了开发环境启动说明
- 新增生产环境 Gunicorn 部署指南
- 包含 Gunicorn 安装和配置参数说明
```
2026-02-15 10:07:38 +08:00
bd80414c4d ```
feat(admin): 添加订单详情页面和API接口

- 新增 `/admin/orders/<int:order_id>` 路由用于显示订单详情页面
- 在管理后台的订单列表中添加查看操作按钮
- 实现 `get_order_detail` API 接口,提供订单详细信息
- 添加权限控制,确保只有管理员或订单所有者可访问
- 在充值历史页面也增加订单详情查看功能
- 更新表格布局以适应新增的操作列
```
2026-02-08 20:39:35 +08:00
5e1f037d4c ```
feat(task-service): 增强视频生成任务失败处理机制

支持 FAILURE 状态识别并添加循环结束时的状态检查,
防止极端情况下失败状态未被正确抛出异常的问题
```
2026-02-05 20:58:25 +08:00
6cb6f9fc65 ```
feat(api): 添加Base64图片处理功能

- 在后端API中添加Base64图片处理逻辑,自动去除data URL头部信息
- 处理前端传来的包含header的Base64图片数据

refactor(video.js): 优化图片上传处理流程

- 将图片上传逻辑改为纯前端Base64处理,移除对后端上传接口的依赖
- 实现图片压缩功能,限制最大尺寸为2048像素
- 支持PNG和JPEG格式的图片压缩处理
- 移除原有的文件上传FormData方式,改用直接处理Base64数据
```
2026-02-05 20:47:14 +08:00
85fb484bfa ```
feat(task-service): 支持异步任务模式进行图片生成

- 实现异步任务提交机制,添加 async=true 参数启用异步模式
- 增加重试机制,最多重试3次任务提交
- 实现轮询机制监控异步任务状态,最大轮询600次(30分钟超时)
- 支持多种响应结构的数据解析,增强兼容性
- 优化状态更新逻辑,提供更准确的任务进度反馈
- 调整超时配置,使用不同的超时时间适应不同场景

fix(ui): 修复保存提示词模态框显示问题

- 修改事件处理器阻止默认行为和事件冒泡
- 改进登录状态检查逻辑,通过CSS类判断可见性
- 优化模态框显示/隐藏的过渡动画效果
- 添加内联样式兜底方案确保正确显示
- 修复页面布局相关的位置偏移问题
```
2026-02-04 23:55:42 +08:00
4431a558f9 ```
fix(config): 更新代理URL配置

将代理URL从旧地址 https://nas.4x4g.com:10011/api/tool/proxy/?url=
更换为新地址 https://127007.xyz/,以确保代理服务正常工作
```
2026-02-03 21:24:31 +08:00
7172f3ab04 ```
feat(config): 添加代理超时配置选项

添加了多种场景的代理超时配置:
- 默认超时:60秒
- 短任务超时:30秒(轮询、小图片下载)
- 长任务超时:300秒(视频下载、大文件)
- 生成任务超时:600秒(AI生成请求)

refactor(services): 统一使用配置化的代理超时参数

将硬编码的超时值替换为配置文件中的常量:
- 文件服务使用默认超时
- 聊天生成功能使用长任务超时
- 图片下载使用短任务超时
- 视频生成功能使用相应的默认、短、长超时配置
```
2026-02-02 17:05:31 +08:00
1b7fcd603c Merge branch 'main' of http://331002.xyz:8418/240241002/ai_v 2026-02-02 12:54:46 +08:00
1ab7d94660 ```
feat(config): 添加代理配置选项

添加USE_PROXY和PROXY_URL配置项以支持请求代理功能

feat(utils): 新增代理URL获取工具函数

引入get_proxied_url工具函数用于处理代理请求

refactor(services): 将所有外部API请求通过代理转发

修改file_service、generation_service和task_service中的requests.get/post调用,
统一使用get_proxied_url包装URL以支持代理访问外部API服务
```
2026-02-02 12:54:43 +08:00
a092cdfb4c ```
fix(admin): 修复邀请排行榜查询逻辑错误

- 引入SQLAlchemy别名机制区分邀请人和被邀请人表
- 修正JOIN查询中表关联关系避免自关联问题
- 优化GROUP BY子句包含必要的字段确保数据准确性
- 调整查询结构提升代码可读性和维护性
```
2026-01-23 22:09:45 +08:00
2ea495721c ```
feat(payment): 添加邀请奖励功能并重构订单支付处理逻辑

- 引入InviteReward模型用于记录邀请奖励
- 新增_process_success_order内部函数统一处理订单成功逻辑
- 实现邀请奖励机制:被邀请人前3次充值时,邀请人获得10%积分奖励
- 在支付回调、主动查询和异步通知中统一调用新的处理函数
- 改进代码结构,消除重复的订单处理逻辑
```
2026-01-23 21:58:37 +08:00
0164140c39 ```
feat(app): 添加定时任务检查待支付订单状态

- 集成 APScheduler 背景任务调度器,每分钟检查一次30分钟内
  的待支付订单
- 实现 sync_pending_orders 函数,主动查询支付宝订单状态,
  防止异步回调丢失导致订单状态不更新
- 添加 Redis 分布式锁机制,防止并发处理同一订单
- 在应用启动时自动启动定时任务调度器

fix(alipay): 修复支付宝签名验证和订单查询功能

- 修复签名验证时遗漏 sign_type 字段的问题
- 新增 query_order_status 方法,支持主动查询支付宝订单状态
- 更新支付宝回调和通知URL地址

feat(task): 优化异步任务状态跟踪和图片压缩功能

- 集成 Redis 存储任务状态,实时跟踪生图和视频任务进度
- 添加图片自动压缩功能,超过2K分辨率的图片自动压缩
- 优化任务状态更新,提供更准确的进度反馈

chore(config): 更新支付宝回调地址配置
```
2026-01-23 21:47:01 +08:00
0da71bc439 ```
feat(admin): 添加积分发放管理和邀请奖励功能

- 新增积分发放相关模型 PointsGrant 和 InviteReward
- 实现管理员积分发放接口(单个、批量、全员发放)
- 添加积分发放记录查询和统计功能
- 集成邀请奖励机制,在用户充值时自动发放邀请奖励
- 在用户注册流程中集成邀请码功能
- 扩展用户信息返回积分和创建时间字段
- 添加前端邀请码处理和邀请统计功能
```
2026-01-23 21:46:08 +08:00
a812e18e63 feat(images): 添加图片分辨率检测与自动压缩功能
- 增加图片分辨率检测,提示用户图片超过2K分辨率
- 对大于2K分辨率图片进行自动缩放压缩,确保宽高不超过2048
- 在生成Base64时保持图片原格式,非PNG格式转为JPEG并设定压缩质量为0.9
- 优化上传流程,避免因大图影响性能和加载速度
- 提示文字及状态更新,提升用户体验
2026-01-23 18:34:42 +08:00
a2f357a8f6 feat(task): 增加 Redis 状态缓存支持异步任务进度跟踪
- 在图像生成异步任务开始时设置 Redis 状态为队列中,提示任务已提交等待处理
- 在视频生成异步任务开始时设置 Redis 状态为队列中,提示视频任务已提交准备开始导演
- 图片生成处理函数开始时更新 Redis 状态为处理中,并显示绘制进度提示
- 视频生成轮询过程中定期更新 Redis 状态及进度提示,避免任务超时认为失败
- 增加心跳机制,保持任务活跃状态信息,提升用户体验
2026-01-23 18:01:54 +08:00
05eba467b4 feat(payment): 在订单处理流程中新增Redis分布式锁机制防止并发问题
- 在定时任务同步订单状态时使用Redis锁,避免并发导致重复处理
- 同步回调接口中添加分布式锁,确保订单状态更新的原子性
- 主动查询订单支付状态接口增加Redis锁,防止重复发放积分
- 异步通知处理逻辑引入锁机制,处理锁定失败时适当重试或记录日志
- 捕获并区分锁定异常,避免错误日志泛滥,提升系统稳定性
- 保留数据库行级锁作为数据库层并发控制的保障措施
2026-01-23 17:55:33 +08:00
93d5c503b2 fix(app): 修复定时任务同步待支付订单的上下文问题
- 将 sync_pending_orders 增加 app 参数以使用 Flask 应用上下文
- 在函数内部使用 app.app_context() 包裹数据库操作,避免上下文错误
- 保持原有逻辑查询并更新30分钟内的待支付订单状态
- 增加日志记录和异常捕获,确保任务稳定运行
- 调度器调用时传入 app 作为参数以支持上下文执行
2026-01-23 17:46:22 +08:00
1196809c6a feat(payment): 添加订单状态同步功能和主动查询接口
- 在 app.py 中集成定时任务,每分钟同步最近30分钟内待支付订单状态
- 定时任务调用支付宝接口更新订单状态及用户积分,记录日志
- payment.py 新增主动查询订单接口,支持用户手动触发订单状态同步
- 添加订单简单查询API,返回订单当前状态信息
- 支付异步通知日志记录优化,改为系统日志记录
- 配置文件中调整支付宝回调地址使用 HTTPS 协议
- alipay_service.py 增加支付宝订单状态查询方法,支持主动轮询订单状态
2026-01-23 17:40:23 +08:00
ccc5a057e3 fix(payment): 改进支付宝异步通知日志记录方式
- 将日志记录由系统日志改为写入本地文件notify.log
- 记录接收到的支付宝异步通知数据内容
- 优化日志信息的持久化存储方式
2026-01-23 17:12:36 +08:00
30105c685a fix(payment): 修复支付宝通知签名验证问题
- 在支付通知日志中添加接收到的支付宝数据记录
- 移除签名验证参数中的 sign_type,避免验证错误
- 优化支付宝服务签名验证逻辑,提高兼容性和准确度
2026-01-23 15:10:16 +08:00
ecccdbc84d fix(config): 修正支付宝回调地址去除端口号
- 删除支付宝回调地址中的端口号2010
- 修正支付成功跳转地址ALIPAY_RETURN_URL
- 修正支付异步通知地址ALIPAY_NOTIFY_URL
2026-01-23 15:06:23 +08:00
8a107ee575 fix(payment): 同步回调中处理订单状态,防止异步延迟
- 同步回调中加锁查询订单,防止并发导致重复发放
- 将订单状态从PENDING更新为PAID,并记录支付交易号和支付时间
- 支付成功时增加用户积分,记录日志
- 异常时回滚事务并记录错误日志
- 异步通知加锁查询订单,确保并发安全
- 更新支付宝支付跳转和通知地址配置
2026-01-23 15:00:34 +08:00
2ef673d0d6 feat: Implement a new API blueprint for core application functionalities including generation, history, notifications, user stats, and saved prompts, along with a new SavedPrompt model and supporting frontend. 2026-01-21 20:43:46 +08:00