ccnetcore
|
343347ea11
|
feat: 新增图片广场、发布及模型查询接口
- 图片任务列表区分为“我的任务”和“图片广场(已发布)”
- 新增图片发布到广场接口,支持分类
- 新增图片模型列表查询接口
- 注释掉图片 Base64 前缀字段,统一使用 URL
- 调整相关依赖注入,支持模型仓储查询
|
2026-01-03 00:00:17 +08:00 |
|
ccnetcore
|
ba95d1798f
|
feat: 优化AI图片存储与访问流程
- 统一图片存储服务地址常量,返回完整可访问URL
- 图片上传接口支持匿名访问,并按日期创建存储目录
- ImageStoreTask 移除无用生成图片 Base64 字段,调整大字段存储配置
- 创建图片任务时补充 ModelId 信息
- 优先使用 Authorization 头部,避免覆盖已有认证信息
- 前端补充 Element Plus Descriptions 组件类型声明
|
2026-01-02 21:32:48 +08:00 |
|
ccnetcore
|
436b5b910c
|
Merge branch 'ai-agent-backend' into ai-agent
# Conflicts:
# Yi.Ai.Vue3/src/pages/console/index.vue
# Yi.Ai.Vue3/src/routers/modules/staticRouter.ts
|
2026-01-02 19:45:55 +08:00 |
|
ccnetcore
|
560a76558a
|
feat: 完成图片生成功能
|
2026-01-02 19:26:09 +08:00 |
|
ccnetcore
|
a1be2bebf7
|
feature: 优化排序
|
2026-01-02 00:51:05 +08:00 |
|
ccnetcore
|
80dcd76749
|
fix: 修复删除
|
2026-01-01 22:14:10 +08:00 |
|
ccnetcore
|
6cc0059691
|
Revert "feat: 支持尊享包渠道"
This reverts commit 70ae2fab44.
|
2026-01-01 18:53:26 +08:00 |
|
ccnetcore
|
33d28a8cb0
|
feat: 支持尊享包渠道
|
2026-01-01 18:53:26 +08:00 |
|
ccnetcore
|
953fbc043b
|
feat: 完成渠道商管理支持
|
2026-01-01 18:25:43 +08:00 |
|
chenchun
|
64bc65114a
|
feat: 完成渠道商管理+尊享模型替换+v1前缀兼容
|
2026-01-01 00:44:02 +08:00 |
|
ccnetcore
|
0c31b97824
|
Revert "feat: 支持尊享包渠道"
This reverts commit 70ae2fab44.
|
2025-12-31 00:10:44 +08:00 |
|
ccnetcore
|
70ae2fab44
|
feat: 支持尊享包渠道
|
2025-12-31 00:02:25 +08:00 |
|
ccnetcore
|
4b9f845fae
|
feat: 激活码与VIP充值支持按天计费
- 新增 VIP 天数概念,支持月数与天数组合计算过期时间
- 激活码商品新增 VipDays 配置,并新增 1 天会员试用组合包
- VIP 充值统一按天数计算(1 个月 = 31 天),兼容原有逻辑
- 激活码兑换时支持仅天数或天月组合的 VIP 充值
|
2025-12-28 17:44:33 +08:00 |
|
ccnetcore
|
047937af4c
|
feat: 完成图片异步生成
|
2025-12-26 23:46:36 +08:00 |
|
chenchun
|
34246d8a62
|
feat: 新增功能
- 移除 OpenApiService.GenerateContentAsync 的 isAsync 查询参数及其分支处理(不再在该接口直接创建并返回 ImageStore 任务 Id)。
- 保留 alt=sse 的代理处理逻辑。
- 在 ImageStoreTaskAggregateRoot 中新增字段:
- Prompt:提示词(大文本)
- ReferenceImageUrls:参考图 URL 列表(JSON 存储)
- 兼容性提示:接口去掉了 isAsync 参数,调用方需相应调整异步任务创建流程。
|
2025-12-26 18:29:47 +08:00 |
|
ccnetcore
|
599b6335d5
|
feat: 准备构建图片生成
|
2025-12-25 23:25:54 +08:00 |
|
chenchun
|
46bc48d1c1
|
feat: 新增获取指定日期各模型Token统计接口
- 在 AiAccountService 中新增 TokenStatisticsInput DTO 与 POST /account/token-statistics 接口(GetTokenStatisticsAsync),用于按模型统计指定日期的 token 使用量、调用次数并计算成本,返回文本摘要。
- 注入 MessageAggregateRoot 仓储(_messageRepository),使用 SqlSugar 聚合查询(Sum/Count),按 modelId 与日期范围过滤,并只统计 role == "system" 的记录。
- 成本计算逻辑:根据输入的模型 1 亿 token 成本与实际 token 数计算每 1 亿 token 成本;同时输出调用次数与 token(单位万)。
- 接口权限与入参校验:仅允许 CurrentUser.UserName 为 "Guo" 或 "cc" 访问;必须提供 ModelCosts 配置。
- 添加的引用:SqlSugar、System.Globalization、System.Text、Yi.Framework.AiHub.Domain.Entities.Chat。
|
2025-12-25 18:01:13 +08:00 |
|
chenchun
|
ee4cb20eef
|
feat: 完成agent功能
|
2025-12-24 14:17:32 +08:00 |
|
chenchun
|
eb6ec06157
|
feat: 完成agent接口功能
|
2025-12-24 12:18:33 +08:00 |
|
ccnetcore
|
62940ae25a
|
feat: 完成agent接口
|
2025-12-24 00:22:46 +08:00 |
|
chenchun
|
bd3a9a5ce8
|
feat: 新增功能
- ChatManager:
- 引入 System.Text.Json,用于将 agent thread 序列化与反序列化(示例:thread.Serialize(...) -> JsonSerializer.Deserialize -> agent.DeserializeThread)。
- 增加示例:创建 OpenAIClient、初始化 agent、运行流式响应并处理更新。
- 小幅格式和空行调整。
- AiChatService:
- 为 Agent 发送接口 PostAgentSendAsync 增加注释与路由标记 HttpPost("ai-chat/agent/send")。
注意:提交中出现了硬编码的 API Key,请尽快改为从配置或机密管理中读取以防泄露。
|
2025-12-23 17:29:07 +08:00 |
|
chenchun
|
ec4fdc39fe
|
feat: 新增agent接口
|
2025-12-23 17:08:42 +08:00 |
|
ccnetcore
|
81089cc058
|
feat: 新增工具调用
|
2025-12-23 00:49:17 +08:00 |
|
ccnetcore
|
8f515f76c0
|
feat: 新增tools接口
|
2025-12-22 00:17:10 +08:00 |
|
chenchun
|
4326c41258
|
fix: 为领奖与兑换流程添加分布式锁,防止并发重复操作
- 在 DailyTaskService 与 ActivationCodeService 中引入 Medallion.Threading。
- 通过 LazyServiceProvider 获取 IDistributedLockProvider(DistributedLock 属性)。
- 在 ClaimTaskRewardAsync(DailyTaskService)和 RedeemAsync(ActivationCodeService)中使用 AcquireLockAsync 加锁(基于 userId / activation code),用于自旋等待、防抖,避免并发导致的重复发放或重复兑换问题。
|
2025-12-19 16:13:23 +08:00 |
|
chenchun
|
7f0d57b311
|
feat: 完成激活码功能
|
2025-12-19 14:16:59 +08:00 |
|
chenchun
|
75c208dafc
|
feat: 完成激活码功能
|
2025-12-19 13:50:30 +08:00 |
|
chenchun
|
8021ca9eff
|
perf: 优化封装
|
2025-12-19 12:58:57 +08:00 |
|
chenchun
|
2cf06a5677
|
perf: 优化订单创建逻辑
|
2025-12-19 11:53:17 +08:00 |
|
ccnetcore
|
fcf0fd7f70
|
feat: 全面支持geminicli
|
2025-12-17 21:51:01 +08:00 |
|
chenchun
|
4e421c160c
|
feat: 新增gemini支持
|
2025-12-17 18:47:28 +08:00 |
|
ccnetcore
|
a46a552097
|
feat: 完成模型库优化
|
2025-12-11 21:12:29 +08:00 |
|
chenchun
|
f90105ebb4
|
feat: 全站优化
|
2025-12-11 17:33:12 +08:00 |
|
chenchun
|
67ed1ac1e3
|
fix: 聊天模型列表仅返回 OpenAi 类型
在 Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/Chat/AiChatService.cs 中,为查询添加了 .Where(x => x.ModelApiType == ModelApiTypeEnum.OpenAi) 过滤,确保只返回 ModelType 为 Chat 且 ModelApiType 为 OpenAi 的模型,避免将非 OpenAi 的模型纳入聊天模型列表。
|
2025-12-11 17:17:35 +08:00 |
|
ccnetcore
|
433d616b9b
|
feat: 支持codex
|
2025-12-11 01:17:31 +08:00 |
|
chenchun
|
381b712b25
|
feat: 完成模型库功能模块
|
2025-12-10 15:08:16 +08:00 |
|
ccnetcore
|
1a32fa9e20
|
feat: 支持多选模型库条件
|
2025-12-10 00:31:14 +08:00 |
|
chenchun
|
54a1d2a66f
|
feat: 完成模型库
|
2025-12-09 19:11:30 +08:00 |
|
ccnetcore
|
94c52c62fe
|
style: 修改token描述
|
2025-11-29 18:33:39 +08:00 |
|
ccnetcore
|
37b4709d76
|
feat: 新增token默认分组
|
2025-11-29 18:28:42 +08:00 |
|
ccnetcore
|
86555af6ce
|
feat: 完成token下拉框
|
2025-11-29 18:25:43 +08:00 |
|
chenchun
|
b78ecf27d5
|
feat: 完成token功能
|
2025-11-27 19:01:16 +08:00 |
|
chenchun
|
afe9c8bcae
|
feat: 新增模型列表 IsPremiumPackage 字段并在 AiChatService 中设置
- 在 Yi.Framework.AiHub.Application.Contracts.Dtos.ModelGetListOutput 中新增 bool 属性 IsPremiumPackage。
- 在 Yi.Framework.AiHub.Application.Services.Chat.AiChatService 的模型映射中设置该属性,判断逻辑为 PremiumPackageConst.ModeIds.Contains(x.ModelId)。
- 便于前端区分并展示“尊享包”模型。
|
2025-11-25 09:59:31 +08:00 |
|
ccnetcore
|
ffb2f2fb4c
|
fix: 修复尊享包查询条件并新增时间范围筛选
|
2025-11-16 21:32:41 +08:00 |
|
ccnetcore
|
4bd2fc357d
|
refactor: 邀请码逻辑调整,支持双方填写/使用邀请码统计,并移除已被邀请状态字段
|
2025-11-14 23:53:29 +08:00 |
|
chenchun
|
da23d17af8
|
feat: 为尊享包 Token 列表新增按是否免费过滤并添加请求 DTO
- 新增 PremiumTokenUsageGetListInput,包含 IsFree 过滤项并继承分页 DTO
- 修改 UsageStatisticsService.GetPremiumTokenUsageListAsync 签名为使用新的输入 DTO,并根据 IsFree 添加 WhereIF 过滤
- 微调 DTO 导入与格式化(PremiumTokenUsageGetListOutput)
|
2025-11-14 18:00:49 +08:00 |
|
chenchun
|
c1a6046107
|
feat: 完成公告、尊享记录功能
|
2025-11-14 17:54:40 +08:00 |
|
chenchun
|
1b4c3cbb8d
|
feat: 支持尊享包用量统计
|
2025-11-10 15:18:05 +08:00 |
|
chenchun
|
b7756e2112
|
feat: 新增功能
- 概要
- 重构并扩展公告相关模型、DTO、服务,新增公告类型、图片与时间字段,调整缓存与查询处理。
- 新增枚举 AnnouncementTypeEnum。
- 主要改动(简要)
- Yi.Framework.AiHub.Application.Contracts/Dtos/Announcement/AnnouncementLogDto.cs
- 新增 ImageUrl、StartTime、EndTime、Type 字段,移除 Date 字段,Title 不再默认空串。
- Yi.Framework.AiHub.Domain/Entities
- 重命名 AnnouncementLogAggregateRoot -> AnnouncementAggregateRoot
- 表名由 Ai_AnnouncementLog 改为 Ai_Announcement(SugarTable 标注)
- 新增 ImageUrl、StartTime、EndTime、Type、Remark 字段(Remark 已存在,保持)
- Yi.Framework.AiHub.Domain.Shared/Enums/AnnouncementTypeEnum.cs
- 新增枚举文件(Activity=1, System=2)
- Yi.Framework.AiHub.Application.Contracts/IServices/IAnnouncementService.cs
- GetAsync 返回类型由 AnnouncementOutput 改为 List<AnnouncementLogDto>
- Yi.Framework.AiHub.Application/Services/AnnouncementService.cs
- 使用 Mapster 进行 DTO 映射
- 查询按 StartTime 降序,返回 List<AnnouncementLogDto>,缓存结构简化
- Yi.Abp.Web/YiAbpWebModule.cs
- 改为初始化 AnnouncementAggregateRoot 的表(Ai_Announcement)
- Yi.Ai.Vue3/types/import_meta.d.ts
- 移除 VITE_BUILD_COMPRESS 环境变量声明
- 重要注意/兼容性提示
- 接口变更:IAnnouncementService.GetAsync 返回类型已改变,调用方需同步更新(之前返回 AnnouncementOutput 的代码需调整)。
- 数据库表变更:表名从 Ai_AnnouncementLog -> Ai_Announcement,若需保留历史数据,请在部署前做好数据迁移(重命名表或迁移数据到新表结构),或使用 CodeFirst 初始化新表(当前代码在启动时会 InitTables<AnnouncementAggregateRoot>())。
- 新增 Mapster 适配(确保项目有 Mapster 依赖)。
- 前端类型声明移除环境变量后,前端构建/运行脚本若依赖 VITE_BUILD_COMPRESS 需同步调整。
- 若有缓存结构(AnnouncementCacheDto)或序列化相关约定变更,确认兼容性。
- 建议操作
- 更新所有使用 IAnnouncementService 的代码(API 层/前端适配返回结构)。
- 在非生产环境先执行数据迁移验证(保留旧表数据或写迁移脚本)。
- 确认 Mapster 包已安装并编译通过。
- 前端项目检查并同步 import_meta.d.ts 变更。
|
2025-11-10 15:03:02 +08:00 |
|
chenchun
|
cb49059e84
|
feat: 翻牌与邀请码逻辑重构,新增中奖记录与前7次中奖概率
- CardFlipTaskAggregateRoot.cs
- 用 WinRecords(Dictionary<int,long>) 替代原先第8/9/10次的各自字段,且以 JSON 存库(SugarColumn IsJson)。
- 构造函数初始化 WinRecords。
- 新增 SetWinReward(int flipCount, long amount) 统一记录中奖。
- CardFlipService.cs
- 读取并展示 WinRecords,按翻牌顺序映射中奖信息(不再依赖单独的第8/9/10字段)。
- CardFlipManager.cs
- 重构中奖逻辑:
- 前7次翻牌改为 50% 概率可中奖,奖励范围 1w–3w(新增配置常量 FREE_*)。
- 统一通过 SetWinReward 记录任意次的中奖金额。
- GenerateRandomReward 根据最小值自动选单位(1w 或 100w)。
- 邀请类型翻牌校验由“仅统计被填写次数”改为“统计本周作为邀请人或被邀请人的邀请记录数量”(双方都计入),并据此判断是否可解锁邀请翻牌次数。
- InviteCodeManager.cs
- 使用邀请码时:
- 验证规则调整:一个账号只能填写别人的邀请码一次(hasUsedOthersCode 检查)。
- 邀请记录的语义变化:当使用邀请码时,邀请记录同时代表邀请人和被邀请人各增加一次翻牌机会。
- 不再将邀请码标记为单次已用;改为增加 UsedCount(一个邀请码可以被多人使用)。
- 优化日志与提示信息。
- InviteCodeAggregateRoot.cs
- 移除 IsUsed、UsedTime、UsedByUserId、MarkAsUsed 等单次使用相关字段/方法。
- 保留 IsUserInvited(被邀请后不能再作为被邀请者使用)和 UsedCount(统计多人使用次数)。
注意事项
- 这是数据结构与业务逻辑的变更,数据库表结构发生变化(新增 WinRecords JSON 字段,移除若干字段)。上线前请准备相应的迁移脚本或数据迁移方案,确保历史中奖数据平滑迁移到 WinRecords。
- 变更会影响相关单元/集成测试、前端展示字段,需同步更新对应测试与界面展示逻辑。
|
2025-11-07 21:31:18 +08:00 |
|