summaryrefslogtreecommitdiff
path: root/qa/driver
Commit message (Collapse)AuthorAgeFilesLines
* Add bonds probe panel with live bond quote flow (3d-16)Somhairle H. Marisol13 days1-0/+70
|
* Add real NAV series multi-day returns (3d-13)Somhairle H. Marisol13 days1-0/+62
|
* Add real AKShare NAV-date probe slice (3d-12)Somhairle H. Marisol13 days1-1/+62
|
* Add rebalancing execution slice (3d-11)Somhairle H. Marisol13 days1-0/+139
|
* Add scheduled investment plans (3d-10)Somhairle H. Marisol13 days1-0/+111
|
* Add returns and charts slice (3d-9b)Somhairle H. Marisol13 days1-1/+53
|
* Add dividend history visibility (3d-9a)Somhairle H. Marisol13 days1-0/+70
| | | | Expose a deterministic source key on booked dividend records and surface a read-only dividend history panel with empty state, backed by API tests and browser QA assertions.
* Add additional capital deposit flow (3d-4)Somhairle H. Marisol14 days1-1/+62
| | | | | | | | | | | | | | | | | | Deposits credit a fund's available cash directly: Domain gains CapitalPolicy (positive, two-decimal, overflow-checked amounts plus a settle function that never touches units, NAV or realized P&L). Persistence records deposits in fund_capital_deposits with a fund_capital_idempotencies table, crediting cash and the deposit row atomically under the same replay/conflict semantics as orders. The API exposes POST /funds/{id}/capital/deposit and GET /funds/{id}/capital/deposits behind the bearer token and idempotency keys. The frontend adds an '追加资金' entry on the fund cash card with in-place balance refresh, and repeats of the same amount reuse the idempotency key so double submits credit cash exactly once. Browser QA extends the J-series (J12-J18): invalid-amount rejection without POST, single credited deposit with a 32-hex key, instant balance refresh, unchanged units/cost proving no realized-income impact, and same-key replay crediting only once.
* Add redemption order minimal closed loop (3d-3)Somhairle H. Marisol14 days1-2/+122
| | | | | | | | | | | | | | | | | | | | | Redeem confirmed holdings end to end with exact decimal semantics: submission freezes position units (reserved_units) after an available-units check without touching cash, confirmation settles at the trade-date NAV with evidence and deferral rules identical to subscriptions, credits the fund with proceeds net of the stated fee, and writes off position cost pro rata (full redemption removes the position row). Cash conservation holds at every step: frozen shares and receivable cash never appear as available cash before settlement. Domain gains RedemptionPolicy (request validation plus proceeds/fee/ cost-release computation) with unit tests. Persistence adds redemption_orders, idempotency tables, reserved_units on positions and Create/Confirm repository members; the API exposes POST/GET /funds/{id}/redemptions and POST .../confirm. The frontend adds a 06/REDEEM panel (submit, confirm, pending reasons, confirmed proceeds/cost display), frozen-share display on the holdings panel, and refresh wiring. Browser QA gains a K-series covering freeze, settlement, cash accounting, replay and over-redemption rejection.
* Add confirmation status and holdings UI (3d-2c)Somhairle H. Marisol14 days1-4/+158
| | | | | | | | | | | | | | | | | | | Wire the subscription confirmation and positions endpoints into the frontend: order rows show per-order trade date and confirmed outcome (NAV, units, NAV date, invested cash, residual) or pending_nav reason, each confirmable order gets a confirm action posting to the existing confirm endpoint with an idempotency key and request-sequence guard, and a new holdings panel renders available/reserved cash plus per-code positions (units, cost, latest valuation NAV with date, or an explicit '估值待更新' when no valuation exists). Orders list/create responses now return the full detail shape so pending reasons and confirmation results survive refresh. The optional text decoder accepts the current plain-value/null wire format alongside the legacy case/fields envelope, restoring fund type and daily return display. Browser QA gains a J-series covering the real confirm flow, holdings rendering and cash accounting; Web tests cover decoders, confirm guard, stale-response protection and token invalidation.
* fix(api,web): 下单/读取请求身份隔离与零手续费支持(3d-1 ↵Somhairle H. Marisol14 days1-3/+96
| | | | | | | | 评审修正) - Web: orderSeq 拆分为 orderCreateSeq/orderReadSeq,并发刷新不再丢弃在途下单结果;换基金/换 token 双序列失效并携带 fundId 双重守卫 - 零手续费:DB CHECK fee_amount >= 0(幂等迁移),校验改为拒绝负数,UI 提示与占位符同步 - 测试:API 增加零手续费回放与 DB 负手续费约束回归(43/43),浏览器新增 H 系列延迟 POST 并发刷新/失败恢复/换基金隔离(78/78)
* feat(api,web): 模拟认购订单创建/读取,幂等与预留现金(3d-1)Somhairle H. Marisol2026-09-211-3/+154
| | | | | | | | | | - API: POST/GET /api/funds/{fundId}/orders,advisory lock + 行级锁事务预留现金, 幂等键重放/冲突/校验/目录缺失错误码齐全,基金响应新增 reservedCash - Persistence: subscription_orders 与幂等表 + 保留现金列迁移 - Web: 认购表单与待确认订单列表(已提交·待确认),失败重试复用幂等键, token 轮换隔离延迟响应 - 测试: API 41(含并发不足/回滚/真实宿主重启回归)、Web 17、Domain 19; 浏览器 QA 58 项全过
* feat(web): 基金创建/读取界面与仓库内浏览器 QASomhairle H. Marisol2026-09-213-0/+317
[变更性质] - 本提交完成 3c-1 切片:Web 端基金建档(创建/重读)表单接入既有幂等 API,并提供仓库内可复现的端到端 QA 入口与生命周期回归。 [新增功能] - 前端新增 03 / CREATE 面板:名称与初始现金(decimal 字符串)输入、创建/重新读取按钮、服务端返回的基金档案行(份额诚实显示 0、来源标注真实建档/合成标记);移动端单列布局。 - 创建请求携带 32 位十六进制 Idempotency-Key;网络失败重试复用同一 key,输入变更或成功后换新 key;token 变更清空档案并按序列号拒绝过期响应。 [实现方案] - 金额全程 decimal 字符串,不经 JS float;update 层 fundSeq 守卫 FundCreate/FundRead 完成消息;BoundaryTests 新增 FundBoundaryTests 9 项(幂等键长度/复用、token 失效、stale 读取拒绝等)。 - qa/run.sh 一次性拉起非默认端口 Postgres/API/Vite(桩行情,_synthetic 标记),清理仅限本次创建的容器(ID+名称归属校验);临时目录 mktemp 隔离;qa/lifecycle-test.sh 验证拒绝路径不破坏既有资源。 [影响范围] - Web 测试增至 17 项,全套 56 项通过;浏览器 QA 30/30 通过;README 更新阶段描述。本提交不包含 docs/overnight-progress.md 的现有修改。