OpenClaw Agent
|
cbe0ac9f4a
|
fix: 每次写入创建新 SqlSugarClient 实例
根因分析:
- MarketDataRepository 使用注入的 ISqlSugarClient(Scoped)
- 多个 Task.Run 并发调用 SavePriceCacheAsync
- Storageable 操作使用同一个 SqlSugarScope 实例
- 连接在 await 边界被复用 → 冲突
正确方案:
- SavePriceCacheAsync 每次创建新的 SqlSugarClient 实例
- MySQL 连接池会复用底层 TCP 连接,性能开销很小
- 不再需要 SemaphoreSlim 锁
优点:
- 完全避免连接冲突
- 代码更简洁
- 并发写入无限制
|
2026-03-25 02:37:18 +00:00 |
|
OpenClaw Agent
|
51b7372d81
|
fix: 优化 MySQL 连接池配置
问题:Cannot Open when State is Connecting
分析:
- SqlSugarScope 是线程安全的,使用 AsyncLocal 隔离上下文
- Singleton 注册符合官方建议
- 问题可能出在 MySQL 连接池配置
修复:
添加连接池参数:
- Pooling=true(开启连接池)
- MaximumPoolSize=100(最大连接数)
- MinimumPoolSize=5(最小连接数)
- ConnectionTimeout=30(连接超时)
- ConnectionIdleTimeout=180(空闲连接超时,避免使用陈旧连接)
配合内存缓存层,减少数据库查询次数
|
2026-03-24 10:08:35 +00:00 |
|
OpenClaw Agent
|
8d7e62f8af
|
fix: SqlSugar 注册改为 Scoped 避免并发冲突
问题:
- ISqlSugarClient 注册为 Singleton
- 多个请求共享同一个 SqlSugarScope 实例
- Task.WhenAll 并发查询时连接状态冲突
修复:
- Singleton → Scoped
- 每个 HTTP 请求独立的 SqlSugarScope 实例
- 避免跨请求共享连接对象
配合内存缓存层,双重保障:
1. 内存缓存:减少数据库查询次数
2. Scoped:隔离请求间的连接对象
|
2026-03-24 09:59:30 +00:00 |
|
OpenClaw Agent
|
3fb2403e85
|
fix: 增强价格获取稳定性和日志追踪
问题排查:
1. 缓存命中时验证价格有效性(Price > 0)
2. 外部 API 返回无效价格时拒绝写入缓存
3. 缓存查询层添加详细日志
4. 捕获缓存查询异常并返回 null
改进:
- 缓存价格 <= 0 时忽略缓存重新获取
- 外部 API 价格 <= 0 时抛出异常,避免污染缓存
- 详细日志追踪价格获取全流程
|
2026-03-24 09:35:50 +00:00 |
|
OpenClaw Agent
|
6b50d7fc50
|
refactor: SqlSugarScope注册为Singleton实现线程安全,移除手动信号量限制
|
2026-03-17 09:26:26 +00:00 |
|
OpenClaw Agent
|
625bfa1624
|
fix: 修复编译错误
- PortfolioRepository: Date -> NavDate 属性名修正
- MarketDataRepository: 修复 TiingoTicker.Ticker 空引用警告
|
2026-03-15 13:07:40 +00:00 |
|
niannian zheng
|
33392c4524
|
添加缺失的引用
|
2026-03-15 20:59:46 +08:00 |
|
OpenClaw Agent
|
4ce29a1036
|
refactor: 架构优化 P0-P3
P0 - 安全修复:
- 移除硬编码 API Key,启动时校验必填环境变量
P1 - 高优先级:
- Entity 拆分:Position.cs, Transaction.cs 独立文件
- Controller Facade 封装:IPortfolioFacade 减少依赖注入
P2 - 中优先级:
- Repository 抽象:IPortfolioRepository, IMarketDataRepository
- MarketDataService 拆分:组合模式整合 Tencent/Tiingo/OKX
P3 - 低优先级:
- DTO 命名规范:统一 PascalCase
- 单元测试框架:xUnit + Moq + FluentAssertions
|
2026-03-15 12:54:05 +00:00 |
|
OpenClaw Agent
|
abcdc7110b
|
refactor: 后端架构优化 P0-P1
P0: 移除硬编码 API Key
- MarketDataService Tiingo Key 改为强制环境变量
P1: 拆分 Entity 文件
- 从 Portfolio.cs 提取 Position.cs
- 从 Portfolio.cs 提取 Transaction.cs
- 每个实体独立文件,符合单一职责原则
|
2026-03-15 11:44:06 +00:00 |
|
OpenClaw Agent
|
6a757f56da
|
fix: 添加 PortfolioNavHistory 到 CodeFirst 初始化,删除手动迁移脚本
- DatabaseService.InitializeDatabase() 添加 PortfolioNavHistory
- 删除 migrations/ 目录,使用 CodeFirst 自动建表
|
2026-03-15 08:29:05 +00:00 |
|
OpenClaw Agent
|
1977dd609d
|
fix: 请求收益曲线时自动回填历史数据
- GetNavHistoryAsync现在会自动检查是否有历史数据
- 无历史数据时自动调用BackfillNavHistoryInternalAsync
- 拆分内部回填方法,避免重复验证权限
|
2026-03-13 16:21:31 +00:00 |
|
OpenClaw Agent
|
05ca501f40
|
feat: 新增组合净值历史功能
后端实现:
- 新增PortfolioNavHistory实体,记录每日净值、成本、收益率
- 实现IPortfolioNavService接口,支持净值计算和历史回填
- 支持基于交易记录完整计算历史净值(买入卖出都会更新)
- 计算统计指标:最大回撤、夏普比率、波动率
新增API:
- GET /api/v1/portfolio/{id}/nav-history - 获取净值曲线
- POST /api/v1/portfolio/{id}/nav-history/backfill - 回填历史净值
- POST /api/v1/portfolio/{id}/nav-history/calculate - 计算当日净值
数据库:
- 新增portfolio_nav_history表迁移脚本
- 支持组合级别的净值历史记录
|
2026-03-13 16:08:59 +00:00 |
|
|
|
e7a551ea8b
|
修复decimal字段定义错误:统一价格字段为decimal(18,8),成交量为decimal(24,8)
|
2026-03-12 06:22:52 +00:00 |
|
|
|
f9d24203c6
|
修复行情缓存字段溢出问题:价格保留8位小数,字段长度扩展为20位
|
2026-03-12 06:08:57 +00:00 |
|
|
|
949fa8e85b
|
实现行情缓存系统:实时价格+历史K线双层缓存,减少API调用提升响应速度
|
2026-03-10 13:21:54 +00:00 |
|
niannian zheng
|
52af47b41e
|
build: 更新 Microsoft.Extensions.Configuration.Abstractions 依赖版本
将 AssetManager.Data 和 AssetManager.Services 项目中的 Microsoft.Extensions.Configuration.Abstractions 包版本统一更新至 10.0.3,以保持依赖一致性
|
2026-03-09 17:07:25 +08:00 |
|
|
|
f2d4351145
|
refactor: 所有配置优先从环境变量读取,完全支持Docker环境变量注入
|
2026-03-09 08:56:26 +00:00 |
|
|
|
739a37f24d
|
refactor: 所有配置改为从appsettings.json/环境变量读取,移除硬编码
|
2026-03-09 08:49:31 +00:00 |
|
虾球
|
86e073add7
|
feat: TiingoTicker 预留 Name 字段,支持中文名搜索
|
2026-03-06 09:50:27 +00:00 |
|
niannian zheng
|
0a053906ef
|
Merge branch 'main' of https://git.jb18cm.plus/fanfpy/AssetManager.API
# Conflicts:
# AssetManager.Data/TiingoTicker.cs
|
2026-03-06 17:42:08 +08:00 |
|
虾球
|
0f7213cab8
|
feat: 删除 TiingoTicker 的 StartDate/EndDate 字段
|
2026-03-06 09:33:49 +00:00 |
|
niannian zheng
|
95a29cf86a
|
删除股票字典表时间字段
|
2026-03-06 17:33:39 +08:00 |
|
虾球
|
ebdc704819
|
fix: TiingoTicker CreatedAt/UpdatedAt 改为可空
|
2026-03-06 09:23:42 +00:00 |
|
虾球
|
7a808a1465
|
feat: 添加 TiingoTicker 股票代码字典实体
|
2026-03-06 08:40:00 +00:00 |
|
niannian zheng
|
b5499ef7fe
|
refactor: 将模型属性改为可为空类型以增强健壮性
- 修改ApiResponse、RiskParityConfig等DTO类的属性为可空类型
- 在策略计算器中添加空值检查逻辑
- 更新服务层代码处理可能的空值情况
- 添加发布配置文件FolderProfile.pubxml
|
2026-03-06 15:51:59 +08:00 |
|
fanfpy
|
1ec23bef3d
|
feat(币种): 支持CNY/USD/HKD,添加用户默认本位币、币种枚举和入参校验
|
2026-03-05 10:36:46 +00:00 |
|
fanfpy
|
f442f0cd1b
|
feat(策略引擎): 实现技术指标库、Mock市场数据、吊灯止损/双均线策略、策略信号API
|
2026-03-05 09:46:33 +00:00 |
|
niannian zheng
|
fe781db417
|
refactor(策略): 将标签存储格式从JSON数组改为逗号分隔字符串
修改策略标签的存储格式,从JSON数组序列化改为简单的逗号分隔字符串,简化数据存储和处理逻辑。同时更新相关控制器和服务层的代码以适应这一变更。
|
2026-03-02 17:29:56 +08:00 |
|
niannian zheng
|
31c598c4bc
|
feat(策略): 添加策略描述、标签和风险等级字段
扩展策略模型,新增描述、标签(JSON数组)和风险等级字段
更新策略服务以处理新增字段
修改策略DTO和控制器返回更详细的策略信息
更新API文档示例
|
2026-03-02 17:13:16 +08:00 |
|
niannian zheng
|
09bd91e686
|
refactor(数据库): 优化数据模型并移除初始化脚本
- 删除 InitDatabase.cs 文件,将数据库初始化逻辑移至其他位置
- 为 Portfolio、Position 和 Transaction 类添加索引
- 添加 AssetType 字段以支持多种资产类型
- 将 Shares 和 Amount 字段类型从 int 改为 decimal(18,8)
|
2026-02-28 16:58:04 +08:00 |
|
niannian zheng
|
d39a6347cd
|
feat: 实现微信登录和用户信息管理功能
- 添加微信登录功能,支持通过微信小程序登录
- 实现用户信息管理接口,包括获取用户信息和统计数据
- 新增投资组合列表和总资产统计接口
- 完善JWT令牌生成逻辑,支持可选用户名
- 添加数据库初始化配置和连接字符串
- 移除传统登录和注册功能,专注微信登录方案
|
2026-02-26 11:56:14 +08:00 |
|
niannian zheng
|
2fe0b0c134
|
Remove bin and obj directories from Git tracking
|
2026-02-24 19:25:28 +08:00 |
|
niannian zheng
|
a1cec21ea1
|
chore: 更新项目构建缓存文件和.gitignore配置
更新各项目的构建缓存文件,包括assets.cache和AssemblyInfo相关文件
添加.gitignore文件以忽略常见的构建输出和开发环境文件
|
2026-02-24 17:10:48 +08:00 |
|
|
|
cd5c3aedbe
|
feat: 初始化项目结构并添加基础功能
- 创建解决方案及各项目层
- 添加API基础控制器和DTO定义
- 实现JWT认证服务和微信登录服务
- 添加Swagger文档支持
- 配置项目依赖和构建文件
|
2026-02-18 20:36:09 +08:00 |
|