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
|
3fb2403e85
|
fix: 增强价格获取稳定性和日志追踪
问题排查:
1. 缓存命中时验证价格有效性(Price > 0)
2. 外部 API 返回无效价格时拒绝写入缓存
3. 缓存查询层添加详细日志
4. 捕获缓存查询异常并返回 null
改进:
- 缓存价格 <= 0 时忽略缓存重新获取
- 外部 API 价格 <= 0 时抛出异常,避免污染缓存
- 详细日志追踪价格获取全流程
|
2026-03-24 09:35:50 +00:00 |
|
OpenClaw Agent
|
625bfa1624
|
fix: 修复编译错误
- PortfolioRepository: Date -> NavDate 属性名修正
- MarketDataRepository: 修复 TiingoTicker.Ticker 空引用警告
|
2026-03-15 13:07:40 +00: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 |
|