summaryrefslogtreecommitdiff
path: root/tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj
Commit message (Collapse)AuthorAgeFilesLines
* Add stock sell vertical slice with cash recovery and snapshot pricing (3d-26)Somhairle H. Marisol13 days1-0/+1
|
* Add SIP plan pause/resume and rebalance plan archive lifecycle (3d-24)Somhairle H. Marisol13 days1-0/+2
|
* Integrate bond and stock positions into fund valuation (3d-23)Somhairle H. Marisol13 days1-0/+1
|
* Add bond buy to holdings minimal vertical slice (3d-22)Somhairle H. Marisol13 days1-0/+1
|
* Add stock buy to holdings minimal vertical slice (3d-21)Somhairle H. Marisol13 days1-0/+1
|
* Add real AKShare stock daily history probe slice (3d-19)Somhairle H. Marisol13 days1-0/+1
|
* Add real AKShare stock quote probe slice (3d-17)Somhairle H. Marisol13 days1-0/+1
|
* Add real AKShare bond quote probe slice (3d-14)Somhairle H. Marisol13 days1-0/+1
|
* Add real NAV series multi-day returns (3d-13)Somhairle H. Marisol13 days1-0/+1
|
* Add real AKShare NAV-date probe slice (3d-12)Somhairle H. Marisol13 days1-0/+1
|
* Add rebalancing execution slice (3d-11)Somhairle H. Marisol13 days1-0/+1
|
* Add scheduled investment plans (3d-10)Somhairle H. Marisol13 days1-0/+1
|
* Add returns and charts slice (3d-9b)Somhairle H. Marisol13 days1-0/+1
|
* Add dividend slice (3d-8)Somhairle H. Marisol13 days1-0/+1
| | | | Book cash dividends to available cash exactly once and reinvest dividends through the shared subscription pipeline, with deterministic scheme idempotency and cross-position isolation.
* Drive SIP plans through the shared order pipeline (3d-6)Somhairle H. Marisol14 days1-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Advance executes due periods as real subscription orders: each due trade date claims a sip_executions row (PRIMARY KEY plan_id+trade_date makes same-plan same-day runs atomic), places the order through CreateSubscriptionOrder with a deterministic idempotency key (sip:{plan}:{date}) and the period's trade date, then confirms through the shared ConfirmSubscriptionOrder pipeline with key sip-confirm:{plan}:{date} — identical freeze/fee/units math as manual orders, nothing bypasses confirmation. Outcomes: succeeded, pending_nav (cash stays frozen; later drives retry the confirmation once the NAV lands), insufficient_cash (no order placed, period fails visibly, reruns keep the marker), failed. Plans roll their next_trade_date past the processed window and repeats of the same endDate replay recorded executions instead of re-debiting. Domain adds SipPolicy.advancePlan (due-date enumeration; weekends-only trading-calendar approximation, noted in code). POST /funds/{id}/sip/advance {endDate?, limit?} drives execution on demand (no daemon). Plan responses/rows now carry last execution status/date; front-end shows 已执行/待净值/现金不足 per plan. Optional tradeDateOverride/anchorOverride keep manual flows untouched.
* feat(api,web): 模拟认购订单创建/读取,幂等与预留现金(3d-1)Somhairle H. Marisol2026-09-211-0/+1
| | | | | | | | | | - API: POST/GET /api/funds/{fundId}/orders,advisory lock + 行级锁事务预留现金, 幂等键重放/冲突/校验/目录缺失错误码齐全,基金响应新增 reservedCash - Persistence: subscription_orders 与幂等表 + 保留现金列迁移 - Web: 认购表单与待确认订单列表(已提交·待确认),失败重试复用幂等键, token 轮换隔离延迟响应 - 测试: API 41(含并发不足/回滚/真实宿主重启回归)、Web 17、Domain 19; 浏览器 QA 58 项全过
* fix(api): ↵Somhairle H. Marisol2026-09-211-0/+1
| | | | | | | | | | | 加固行情采集子进程超时、取消与进程组清理并脱敏错误 - MarketDataService: setsid 独立会话启动采集器,硬超时覆盖子进程退出与管道 EOF 两个阶段;超时、取消与异常路径按进程组杀灭(含持有管道的后台子进程),不遗留孤儿进程 - App.ts/Search/RefreshNav 传入 ctx.RequestAborted,客户端断开即取消采集 - 对外错误仅返回统一短消息(503 MARKET_DATA_UNAVAILABLE 等),不泄露路径、stderr 或密钥;stderr 仅记录服务端日志 - 新增 9 项子进程回归(成功/stderr 洪泛/超时杀灭/取消杀灭/孤儿管道恢复/畸形载荷/非零退出/启动失败/缺脚本)与 HTTP 脱敏回归;全文套件 66 通过(Domain 19 / Web 17 / API 30) - 实机验证:挂起采集器 503 2.4s 无进程残留;真实 akshare 1.18.96 搜索 000001 返回 200,净值刷新持久化 6010 条观测 - README 与 qa/README 补充环境变量、回归命令、G1 过滤断言口径与真实建档标签辨析
* feat(api): 接入基金 PostgreSQL 持久化与幂等接口Somhairle H. Marisol2026-09-211-0/+2
| | | | | | | | | | | | | | | | | [变更性质] - 本提交新增基金创建与读取的 PostgreSQL 持久化能力,并完成 3a API 收口验证。 [新增功能] - 提供带事务和幂等键的基金创建、重放、冲突检测及基金读取接口。 - 覆盖认证、JSON 输入、数值边界、进程重启持久化和 SQL 故障回滚测试。 [实现方案] - 使用 Npgsql 建立 `funds` 与 `fund_idempotencies` 表,并以 advisory lock 串行化同一幂等键。 - 通过真实 Kestrel 子进程和临时 PostgreSQL 验证 HTTP 行为;同步更新环境、构建和交接文档。 [影响范围] - API 新增 PostgreSQL 配置要求 `FUND_LAB_DATABASE_URL`,前端构建入口和本地验证命令同步明确。 - 本提交不包含 `docs/overnight-progress.md` 的现有 Hermes 修改。
* feat(core): 建立 fund-lab 可运行基线Somhairle H. Marisol2026-09-201-0/+25
[变更性质] - 本提交冻结当前可构建、可测试的应用基线,不包含 PostgreSQL 持久化。 [新增功能] - 建立 F# Domain、API、Worker、Web 及测试项目。 - 增加 Bearer 认证、健康检查、账本领域模型和中文空状态页面。 [实现方案] - 使用环境变量模板注入认证配置,并排除数据、凭证和构建产物。 - 保留 19 个 Domain 测试和 5 个 API 测试作为后续变更基准。 [影响范围] - 为后续 3a PostgreSQL FOF 创建/读取切片提供可回滚基线。 - 当前仍不接入真实基金数据、真实交易或数据库。