Add pensions module and integrate with tax report

Adds a full pensions feature: SIPP/workplace DC/LISA account metadata,
contribution recording with relief-at-source/net-pay/salary-sacrifice
gross calculations, state pension tracker, annual allowance monitor,
and LISA summary. Pension contributions feed into the tax report
(RAS gross totals, allowance used). Includes two Alembic migrations,
backend service/schema/API, and full frontend pensions page with
cards for allowance, state pension, LISA, and retirement projection.

Also fixes CSRF cookie secure flag (must be false for HTTP deployments)
and extends tax schemas/service to expose pension data in the report.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
megaproxy 2026-04-28 09:59:01 +00:00
parent b30e8e577b
commit 1a2c8efd01
30 changed files with 3537 additions and 8 deletions

View file

@ -203,6 +203,17 @@ class IncomeSummary(BaseModel):
payslips: list[dict[str, Any]]
class PensionTaxSummary(BaseModel):
net_pay_total: str
salary_sacrifice_total: str
ras_gross_total: str
higher_rate_claimable: str
additional_rate_claimable: str
annual_allowance_used: str
annual_allowance_remaining: str
standard_allowance: str
class TaxReportResponse(BaseModel):
tax_year: int
tax_year_display: str
@ -212,4 +223,5 @@ class TaxReportResponse(BaseModel):
ni: NISummary
cgt: CGTSummary
dividends: DividendSummary
pensions: PensionTaxSummary | None
summary: TaxReportSummary