summaryrefslogtreecommitdiff
path: root/src/FundLab.Domain/FundLab.Domain.fsproj
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-21 12:03:39 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-21 12:03:39 +0800
commitf4ab0b08d7648914f6fd049fa1887c0422f69318 (patch)
treec2dc484ed97bd0dc573986318cce921340fbd783 /src/FundLab.Domain/FundLab.Domain.fsproj
parent205e2a592bf781f08fe23f3577cdfe74ff9a076a (diff)
downloadfund-lab-f4ab0b08d7648914f6fd049fa1887c0422f69318.tar.gz
Add SIP plan first slice (3d-5)
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).
Diffstat (limited to 'src/FundLab.Domain/FundLab.Domain.fsproj')
-rw-r--r--src/FundLab.Domain/FundLab.Domain.fsproj1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/FundLab.Domain/FundLab.Domain.fsproj b/src/FundLab.Domain/FundLab.Domain.fsproj
index 0daf3ea..5027edd 100644
--- a/src/FundLab.Domain/FundLab.Domain.fsproj
+++ b/src/FundLab.Domain/FundLab.Domain.fsproj
@@ -10,6 +10,7 @@
<Compile Include="Ledger.fs" />
<Compile Include="Redemption.fs" />
<Compile Include="Capital.fs" />
+ <Compile Include="Sip.fs" />
<Compile Include="Performance.fs" />
</ItemGroup>
</Project>