Commit Graph

141 Commits

Author SHA1 Message Date
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
02c0864393 feat: 创建组合选择策略时自动带入策略配置的标的作为初始持仓 2026-03-10 05:42:45 +00:00
1a529387e7 fix: 修复变量名冲突错误 CS0136 2026-03-10 03:57:59 +00:00
a23937eac8 feat: 增加组合币种校验,交易币种必须和组合本位币一致 2026-03-10 03:41:41 +00:00
35222fbf26 feat: 组合详情页支持多币种实时汇率换算,统一转换为组合本位币显示 2026-03-10 03:33:58 +00:00
ba60dbc72c feat: 后端增加卖出操作校验,只能卖出已有持仓且数量不超过持仓 2026-03-10 02:48:55 +00:00
c2ed8266cf feat: 支持transactionDate字段,前端传入的交易日期会自动赋值给TransactionTime 2026-03-10 02:17:36 +00:00
658cfe90e1 fix: 移除所有IConfiguration依赖,完全从环境变量读取配置,解决编译错误 2026-03-09 09:39:02 +00:00
9be6521fd0 refactor: docker-compose.yml从.env读取配置,支持默认值 2026-03-09 09:30:52 +00:00
19e53bd86e feat: 添加.env示例文件,更新.gitignore忽略.env和appsettings文件 2026-03-09 09:24:21 +00:00