OpenClaw Agent
|
da12f6d163
|
fix: 修复编译错误和警告
- PortfolioFacade: 使用同步方法 GetStrategyById
- OkxMarketService: 响应模型属性改为可空类型
|
2026-03-15 13:18:24 +00:00 |
|
OpenClaw Agent
|
61e3023837
|
fix: 添加缺失的 StrategySignalResponse DTO
- 新增 StrategySignalResponse 类(策略信号响应)
- 新增 SignalAction 类(信号行动建议)
- 修正 PortfolioFacade 属性名为 PascalCase
|
2026-03-15 13:14:22 +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 |
|
niannian zheng
|
086d53f54d
|
添加单元测试项目
|
2026-03-15 20:57:10 +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
|
34f06ce941
|
perf: 优化历史价格获取,优先从缓存表查询
1. 先从 market_kline_cache 缓存表查特定日期价格
2. 缓存命中直接返回,减少 API 调用
3. 缓存未命中才调用 GetHistoricalDataAsync
4. 获取历史数据从 365 天减少到 30 天
5. 大幅减少 Tiingo API 消耗
|
2026-03-15 10:12:20 +00:00 |
|
OpenClaw Agent
|
267b0bd6ba
|
feat: 添加腾讯财经历史K线数据接口
- 新增 GetStockHistoricalFromTencentAsync 方法
- 腾讯财经历史数据免费无限制,解决 Tiingo 429 限流问题
- 获取历史数据时优先使用腾讯财经,失败后降级 Tiingo
- 支持日/周/月K线数据
- 数据格式: [日期, 开盘, 收盘, 最高, 最低, 成交量]
|
2026-03-15 10:06:14 +00:00 |
|
OpenClaw Agent
|
da86aa43e6
|
fix: 行情获取失败时不写入错误数据,添加 429 限流重试机制
1. GetHistoricalPriceAsync 返回 decimal? 而非 decimal
- 价格获取失败时返回 null 而非 0
2. BackfillNavHistoryInternalAsync 检查价格有效性
- 任何持仓价格获取失败时跳过该日期
- 不写入 totalValue=0 的错误数据
3. MarketDataService 添加 GetWithRetryAsync 方法
- 处理 429 Too Many Requests 限流
- 最多重试 3 次,指数退避
|
2026-03-15 10:02:52 +00:00 |
|
OpenClaw Agent
|
6a757f56da
|
fix: 添加 PortfolioNavHistory 到 CodeFirst 初始化,删除手动迁移脚本
- DatabaseService.InitializeDatabase() 添加 PortfolioNavHistory
- 删除 migrations/ 目录,使用 CodeFirst 自动建表
|
2026-03-15 08:29:05 +00:00 |
|
OpenClaw Agent
|
849db7d2b2
|
feat: 交易后自动触发净值历史重算
- CreateTransaction完成后删除该交易日期之后的净值记录
- 下次请求收益曲线时自动重新计算
- 修改CreateTransaction为async方法
- 注入IPortfolioNavService到PortfolioService
流程:
1. 用户买入/卖出 → 创建交易记录
2. 删除交易日期之后的净值历史
3. 下次请求收益曲线 → 自动回填缺失数据
|
2026-03-13 16:53:02 +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 |
|
niannian zheng
|
f5d693ac66
|
fix
|
2026-03-12 14:45:04 +08:00 |
|
niannian zheng
|
116216560f
|
Merge branch 'main' of https://git.jb18cm.plus/fanfpy/AssetManager.API
|
2026-03-12 14:43:01 +08:00 |
|
|
|
447eb9ef4f
|
移除无用的价格Clamp检测,仅保留8位小数截断
|
2026-03-12 06:26:57 +00:00 |
|
|
|
e7a551ea8b
|
修复decimal字段定义错误:统一价格字段为decimal(18,8),成交量为decimal(24,8)
|
2026-03-12 06:22:52 +00:00 |
|
niannian zheng
|
e4bc793452
|
Merge branch 'main' of https://git.jb18cm.plus/fanfpy/AssetManager.API
|
2026-03-12 14:13:27 +08:00 |
|
|
|
a62d892b4b
|
添加价格范围限制,确保不超过decimal(20,8)最大范围
|
2026-03-12 06:11:55 +00:00 |
|
|
|
f9d24203c6
|
修复行情缓存字段溢出问题:价格保留8位小数,字段长度扩展为20位
|
2026-03-12 06:08:57 +00:00 |
|
niannian zheng
|
fd3282881b
|
Merge branch 'main' of https://git.jb18cm.plus/fanfpy/AssetManager.API
|
2026-03-12 13:54:58 +08:00 |
|
|
|
4ce5e1b7f9
|
修复腾讯财经接口GBK编码报错问题:注册编码提供程序,手动解析GBK响应
|
2026-03-12 05:53:42 +00:00 |
|
niannian zheng
|
b5457ce05c
|
Merge branch 'main' of https://git.jb18cm.plus/fanfpy/AssetManager.API
# Conflicts:
# AssetManager.API/Properties/launchSettings.json
|
2026-03-12 13:40:11 +08:00 |
|
niannian zheng
|
1479bcad3d
|
1.本地启动环境变量
|
2026-03-12 13:39:03 +08:00 |
|
|
|
57e9c69a87
|
回滚到腾讯财经行情接口
|
2026-03-12 05:18:46 +00:00 |
|
|
|
534ba7c343
|
替换股票行情接口为东方财富:返回实际交易价格,与券商显示一致,无复权偏差
|
2026-03-12 05:11:50 +00:00 |
|
|
|
049050d88e
|
简化行情缓存策略:股票固定缓存5分钟,不再区分交易时段
|
2026-03-12 04:43:36 +00:00 |
|
|
|
f7626b1113
|
添加腾讯财经接口价格日志,方便排查当日盈亏为0问题
|
2026-03-12 04:38:39 +00:00 |
|
|
|
ff102f70da
|
修复腾讯财经接口代码大小写问题:改为大写
|
2026-03-12 04:33:08 +00:00 |
|
|
|
ece055fc10
|
替换股票行情接口为腾讯财经:免费无限制,支持盘前盘后实时价格,自动降级Tiingo
|
2026-03-12 04:24:56 +00:00 |
|
|
|
7685782bb4
|
优化行情缓存策略:美股交易时段缓存15分钟,非交易时段缓存24小时,节省API配额
|
2026-03-12 03:33:03 +00:00 |
|
|
|
9936cbc7f2
|
优化总资产接口:总收益率保留两位小数
|
2026-03-12 03:31:04 +00:00 |
|
|
|
aeb7a0a7fa
|
修复配置校验环境变量名:匹配docker-compose中的变量名(Jwt前缀小写,ConnectionStrings为Default)
|
2026-03-12 03:18:07 +00:00 |
|
niannian zheng
|
b523266d8d
|
添加引用
|
2026-03-12 11:14:08 +08:00 |
|
|
|
46e8a81346
|
修复全局异常中间件命名空间冲突:显式指定StatusCodes为Microsoft.AspNetCore.Http.StatusCodes
|
2026-03-12 03:12:32 +00:00 |
|
|
|
97efda4c2a
|
修复限流中间件编译错误:移除不存在的GetEntry方法调用,改用滑动窗口限流
|
2026-03-12 03:10:16 +00:00 |
|
|
|
34f9b623b2
|
P0 实现启动配置校验:检查必填环境变量,缺失则启动失败
|
2026-03-11 16:18:30 +00:00 |
|
|
|
e5cf289da1
|
P0 实现请求限流中间件:每分钟60次请求限制,保护第三方API配额
|
2026-03-11 16:13:27 +00:00 |
|
|
|
89244fc078
|
P0 实现全局异常处理中间件:移除所有Controller重复try-catch,统一异常响应
|
2026-03-11 07:56:58 +00:00 |
|
|
|
949fa8e85b
|
实现行情缓存系统:实时价格+历史K线双层缓存,减少API调用提升响应速度
|
2026-03-10 13:21:54 +00:00 |
|
|
|
fb5faeee81
|
修复用户本位币为空字符串时的默认值逻辑,兼容null和空两种情况
|
2026-03-10 12:48:28 +00:00 |
|
|
|
dcb80d9b85
|
添加总资产换算日志,方便排查币种转换问题
|
2026-03-10 10:18:23 +00:00 |
|
|
|
9b228e9c05
|
新增删除组合接口:支持DELETE /api/v1/portfolio/{id}
|
2026-03-10 10:02:24 +00:00 |
|
|
|
146212639b
|
增加行情接口降级机制:拉不到实时价格时使用成本价作为 fallback
|
2026-03-10 09:25:43 +00:00 |
|
|
|
1b8c98b7d6
|
fix: 更换汇率API为开放免费接口,解决403错误
|
2026-03-10 07:32:47 +00:00 |
|
|
|
1d99099fca
|
feat: 交易记录接口增加stockCode字段返回
|
2026-03-10 07:23:34 +00:00 |
|
niannian zheng
|
10132f9b82
|
添加 using Microsoft.Extensions.Logging;
|
2026-03-10 14:02:01 +08:00 |
|
|
|
7ea616c43d
|
fix: 注入ILogger解决当前上下文中不存在_logger的错误
|
2026-03-10 05:59:40 +00:00 |
|
|
|
bd7f4d2a3d
|
fix: 处理策略config字段双层转义的问题
|
2026-03-10 05:45:07 +00:00 |
|