summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Lock external flows vs internal trade ledger sources against net inflow (3d-36)Somhairle H. Marisol12 days1-0/+71
|
* Prove manual stock sells credit cash with a single ledger event (3d-35)Somhairle H. Marisol12 days1-0/+44
|
* Debit available cash on manual stock and bond buys with ledger events (3d-34)Somhairle H. Marisol12 days8-67/+264
|
* Document clean Release publish command for fund-lab deployment (3d-33)Somhairle H. Marisol12 days1-3/+3
|
* Backfill cash ledger from historical transactions and add reconciliation QA ↵Somhairle H. Marisol12 days4-0/+184
| | | | (3d-32)
* leader fix continuation: FS3511 release publish regression (3d-31 continuation)Somhairle H. Marisol13 days3-151/+200
|
* Add cash ledger event-source breakdown and reconciliation API/UI (3d-31 B4c)Somhairle H. Marisol13 days9-2/+997
|
* Supervisor log: 3d-31 B4a/B4b leader acceptance approvedSomhairle H. Marisol13 days1-0/+7
|
* Add stock assets to rebalance with stock buy/sell legs (3d-31 B4b)Somhairle H. Marisol13 days3-84/+402
|
* Supervisor log: 3d-31 hang aborted, B4a FK fix in new sessionSomhairle H. Marisol13 days1-0/+8
|
* Fix stock sip plan instrument FK (3d-31 B4a)Somhairle H. Marisol13 days4-97/+544
|
* Supervisor log: 3d-31 dispatchedSomhairle H. Marisol13 days1-0/+6
|
* Supervisor log: 3d-30 leader acceptance approvedSomhairle H. Marisol13 days1-0/+30
|
* Add stock cashflow ledger with buy/sell events and idempotent dividend ↵Somhairle H. Marisol13 days4-0/+629
| | | | recording (3d-30 B3)
* Add stock probe market/adjust/suspension fields and StockRules (3d-30 B1-B2)Somhairle H. Marisol13 days12-17/+297
|
* Add bond sell/redemption ledger, bond cashflow events and maturity calendar ↵Somhairle H. Marisol13 days5-5/+1156
| | | | (3d-30 A)
* Supervisor log: 3d-29 leader acceptance approved after leader fix 8cbb327Somhairle H. Marisol13 days1-0/+29
|
* Leader fix: BoundaryTests RawBondQuote literals missing new bond-profile ↵Somhairle H. Marisol13 days1-1/+18
| | | | fields; 3d-29 (b05e728) does not build from a clean checkout without this
* Add bond full milestone: profile probe, coupon/accrual rules, ledger and ↵Somhairle H. Marisol13 days13-72/+1398
| | | | point-in-time valuation (3d-29)
* Supervisor log: 3d-29 bond milestone in flightSomhairle H. Marisol13 days1-0/+6
|
* Supervisor log: 3d-29 bond milestone dispatchedSomhairle H. Marisol13 days1-0/+6
|
* Supervisor log: leader acceptance of 3d-28 (approved)Somhairle H. Marisol13 days1-0/+8
|
* Add fund-lab production systemd --user units and gateway config (3d-28)Somhairle H. Marisol13 days5-0/+203
|
* Record 3d-27 public deployment blocker: cloudflared restart needs root, ↵Somhairle H. Marisol13 days1-0/+9
| | | | origin port conflict
* Supervisor log: dispatch 3d-27 public deployment slice (team)Somhairle H. Marisol13 days1-0/+827
|
* Add stock sell vertical slice with cash recovery and snapshot pricing (3d-26)Somhairle H. Marisol13 days8-2/+1033
|
* Add daily market refresh endpoint, snapshot-first valuation and UI refresh ↵Somhairle H. Marisol13 days6-18/+697
| | | | (3d-25)
* Add SIP plan pause/resume and rebalance plan archive lifecycle (3d-24)Somhairle H. Marisol13 days9-6/+894
|
* Integrate bond and stock positions into fund valuation (3d-23)Somhairle H. Marisol13 days8-1/+633
|
* Add bond buy to holdings minimal vertical slice (3d-22)Somhairle H. Marisol13 days9-1/+1172
|
* Add stock buy to holdings minimal vertical slice (3d-21)Somhairle H. Marisol13 days9-1/+1199
|
* Add multi-source bond quote probe fields and daily fallback (3d-20)Somhairle H. Marisol13 days9-37/+279
|
* Add real AKShare stock daily history probe slice (3d-19)Somhairle H. Marisol13 days19-11/+751
|
* Add stocks probe panel with live stock quote flow (3d-18)Somhairle H. Marisol13 days6-0/+280
|
* Add real AKShare stock quote probe slice (3d-17)Somhairle H. Marisol13 days12-8/+444
|
* Add bonds probe panel with live bond quote flow (3d-16)Somhairle H. Marisol13 days6-0/+284
|
* Fix bond quote probe to use live convertible-bond spot data (3d-15)Somhairle H. Marisol13 days2-9/+61
|
* Add real AKShare bond quote probe slice (3d-14)Somhairle H. Marisol13 days11-6/+410
|
* Add real NAV series multi-day returns (3d-13)Somhairle H. Marisol13 days12-12/+714
|
* Add real AKShare NAV-date probe slice (3d-12)Somhairle H. Marisol13 days13-16/+675
|
* Add rebalancing execution slice (3d-11)Somhairle H. Marisol13 days12-141/+1343
|
* Add scheduled investment plans (3d-10)Somhairle H. Marisol13 days13-2/+1798
|
* Add returns and charts slice (3d-9b)Somhairle H. Marisol13 days9-7/+981
|
* Add dividend history visibility (3d-9a)Somhairle H. Marisol13 days8-1/+348
| | | | 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 dividend slice (3d-8)Somhairle H. Marisol13 days9-4/+1036
| | | | Book cash dividends to available cash exactly once and reinvest dividends through the shared subscription pipeline, with deterministic scheme idempotency and cross-position isolation.
* Add rebalance first slice (3d-7)Somhairle H. Marisol13 days6-1/+790
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | First vertical slice for portfolio rebalancing. Domain gains RebalancePolicy: target-allocation validation (non-empty, per-code shares positive two-decimal, sum exactly 100); diff computation over the union of target and held codes (held without target = full exit) producing BUY amount diffs and SELL unit diffs priced at the current valuation NAV, clamped to available units, with no orders when a weight already balances; and the deterministic idempotency key set (rebalance:{plan}:{date}:{code} plus confirm/redeem counterparts). Rebalance plans persist as rebalance_plans + rebalance_targets with rebalance_idempotencies under the shared replay/conflict contract. ExecuteRebalancePlan snapshots cash plus holdings valued at each position's latest valuation NAV, then walks the diffs SELL-first through the same Create/Confirm pipeline used by manual orders, redemptions and SIP (nothing bypasses confirmation; a held code without a valuation is skipped with an explicit marker; insufficient cash/units fail the period visibly instead of silently trimming). API exposes POST/GET /funds/{id}/rebalance/plans and POST .../plans/{id}/execute. The frontend adds an 08/REBALANCE panel with target editing (two codes, sum must equal 100), a plan list with a manual execute button and post-run outcome rows; executing refreshes orders/positions so the new orders are immediately visible. Domain tests cover split validation, diff orders, exit/clamp logic, key determinism; API tests cover create/execute end-to-end; Web tests cover decoding and stale-execution protection.
* Leader fix: annotate rebalance target rows for F# record ambiguity in ↵Somhairle H. Marisol13 days1-30/+99
| | | | parseRebalancePlanCommand (3d-7)
* Add rebalance execution through shared order pipeline (3d-7)Somhairle H. Marisol13 days5-3/+816
|
* Drive SIP plans through the shared order pipeline (3d-6)Somhairle H. Marisol13 days8-6/+859
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Add SIP plan first slice (3d-5)Somhairle H. Marisol13 days9-0/+1071
| | | | | | | | | | | | | | | | | | | | | Introduce scheduled-investment plans as a schedule-only slice with no cash, position or NAV side effects. Domain gains SipPolicy: amount validation (positive, two-decimal, overflow-checked), frequency parsing/round-trip (weekly/biweekly/monthly), nextTradeDate generating the next due trade date off the plan anchor with month-end clamping and weekend roll-forward, plus the isDue/executionNetAmount contract the future executor will implement (execution itself stays unimplemented and is marked as such; nothing debits cash in this slice). Persistence stores plans in sip_plans with anchor/next trade dates and sip_plan_idempotencies under the shared replay/conflict contract; the API exposes POST/GET /funds/{id}/sip/plans behind the bearer token. The frontend adds a 07/SIP panel (code, amount, frequency select, plan list with next debit date) and Web tests cover decoding, validation, in-flight guards and stale completions. Choice note: first debit is scheduled strictly after the anchor date (creating a plan today never debits today).