feat: Enhance transaction model and dashboard with Azure OAuth integration
This commit is contained in:
@@ -11,6 +11,12 @@ class Transaction(BaseModel):
|
||||
amount: float
|
||||
status: Literal["Matched", "Unmatched", "Pending"]
|
||||
flag: Literal["None", "Duplicate", "Threshold Breach", "Manual Review"]
|
||||
reference_id: str
|
||||
counterparty: str
|
||||
currency: str
|
||||
booking_date: date
|
||||
settlement_date: date
|
||||
description: str
|
||||
|
||||
|
||||
class ReconSummary(BaseModel):
|
||||
|
||||
@@ -15,6 +15,12 @@ TRANSACTIONS: list[Transaction] = [
|
||||
amount=12400.00,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0001",
|
||||
counterparty="Morgan Stanley",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 9),
|
||||
settlement_date=date(2026, 4, 12),
|
||||
description="FX Swap USD/EUR",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-002",
|
||||
@@ -23,6 +29,12 @@ TRANSACTIONS: list[Transaction] = [
|
||||
amount=3750.50,
|
||||
status="Unmatched",
|
||||
flag="Duplicate",
|
||||
reference_id="REF-2026-0002",
|
||||
counterparty="JPMorgan Chase",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 10),
|
||||
settlement_date=date(2026, 4, 13),
|
||||
description="Interest rate swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-003",
|
||||
@@ -31,6 +43,12 @@ TRANSACTIONS: list[Transaction] = [
|
||||
amount=88200.00,
|
||||
status="Unmatched",
|
||||
flag="Threshold Breach",
|
||||
reference_id="REF-2026-0003",
|
||||
counterparty="Goldman Sachs",
|
||||
currency="GBP",
|
||||
booking_date=date(2026, 4, 10),
|
||||
settlement_date=date(2026, 4, 14),
|
||||
description="Cross-currency swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-004",
|
||||
@@ -39,6 +57,12 @@ TRANSACTIONS: list[Transaction] = [
|
||||
amount=540.00,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0004",
|
||||
counterparty="Barclays",
|
||||
currency="EUR",
|
||||
booking_date=date(2026, 4, 11),
|
||||
settlement_date=date(2026, 4, 15),
|
||||
description="Bond settlement",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-005",
|
||||
@@ -47,11 +71,229 @@ TRANSACTIONS: list[Transaction] = [
|
||||
amount=21000.00,
|
||||
status="Pending",
|
||||
flag="Manual Review",
|
||||
reference_id="REF-2026-0005",
|
||||
counterparty="Deutsche Bank",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 12),
|
||||
settlement_date=date(2026, 4, 16),
|
||||
description="Equity options trade",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-006",
|
||||
date=date(2026, 4, 14),
|
||||
account="ACC-5542",
|
||||
amount=15600.00,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0006",
|
||||
counterparty="Credit Suisse",
|
||||
currency="CHF",
|
||||
booking_date=date(2026, 4, 13),
|
||||
settlement_date=date(2026, 4, 17),
|
||||
description="Repo transaction",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-007",
|
||||
date=date(2026, 4, 14),
|
||||
account="ACC-8834",
|
||||
amount=2250.75,
|
||||
status="Unmatched",
|
||||
flag="Threshold Breach",
|
||||
reference_id="REF-2026-0007",
|
||||
counterparty="Citigroup",
|
||||
currency="JPY",
|
||||
booking_date=date(2026, 4, 13),
|
||||
settlement_date=date(2026, 4, 18),
|
||||
description="Forward contract",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-008",
|
||||
date=date(2026, 4, 15),
|
||||
account="ACC-2201",
|
||||
amount=45000.00,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0008",
|
||||
counterparty="UBS",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 14),
|
||||
settlement_date=date(2026, 4, 19),
|
||||
description="Commodity swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-009",
|
||||
date=date(2026, 4, 15),
|
||||
account="ACC-7123",
|
||||
amount=8900.50,
|
||||
status="Pending",
|
||||
flag="Manual Review",
|
||||
reference_id="REF-2026-0009",
|
||||
counterparty="HSBC",
|
||||
currency="AUD",
|
||||
booking_date=date(2026, 4, 14),
|
||||
settlement_date=date(2026, 4, 20),
|
||||
description="Index futures",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-010",
|
||||
date=date(2026, 4, 16),
|
||||
account="ACC-3345",
|
||||
amount=1200.00,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0010",
|
||||
counterparty="Bank of America",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 15),
|
||||
settlement_date=date(2026, 4, 21),
|
||||
description="Interest rate cap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-011",
|
||||
date=date(2026, 4, 16),
|
||||
account="ACC-5501",
|
||||
amount=67500.00,
|
||||
status="Unmatched",
|
||||
flag="Duplicate",
|
||||
reference_id="REF-2026-0011",
|
||||
counterparty="Wells Fargo",
|
||||
currency="EUR",
|
||||
booking_date=date(2026, 4, 15),
|
||||
settlement_date=date(2026, 4, 22),
|
||||
description="Currency forward",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-012",
|
||||
date=date(2026, 4, 17),
|
||||
account="ACC-6789",
|
||||
amount=3400.25,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0012",
|
||||
counterparty="BNY Mellon",
|
||||
currency="GBP",
|
||||
booking_date=date(2026, 4, 16),
|
||||
settlement_date=date(2026, 4, 23),
|
||||
description="Bond purchase",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-013",
|
||||
date=date(2026, 4, 17),
|
||||
account="ACC-1234",
|
||||
amount=52100.00,
|
||||
status="Pending",
|
||||
flag="Threshold Breach",
|
||||
reference_id="REF-2026-0013",
|
||||
counterparty="State Street",
|
||||
currency="JPY",
|
||||
booking_date=date(2026, 4, 16),
|
||||
settlement_date=date(2026, 4, 24),
|
||||
description="Swaption settlement",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-014",
|
||||
date=date(2026, 4, 18),
|
||||
account="ACC-9876",
|
||||
amount=920.50,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0014",
|
||||
counterparty="Nomura",
|
||||
currency="CHF",
|
||||
booking_date=date(2026, 4, 17),
|
||||
settlement_date=date(2026, 4, 25),
|
||||
description="Basket trade",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-015",
|
||||
date=date(2026, 4, 18),
|
||||
account="ACC-4455",
|
||||
amount=29300.00,
|
||||
status="Unmatched",
|
||||
flag="Manual Review",
|
||||
reference_id="REF-2026-0015",
|
||||
counterparty="Mizuho",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 17),
|
||||
settlement_date=date(2026, 4, 26),
|
||||
description="Variance swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-016",
|
||||
date=date(2026, 4, 19),
|
||||
account="ACC-2288",
|
||||
amount=11500.75,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0016",
|
||||
counterparty="RBC",
|
||||
currency="CAD",
|
||||
booking_date=date(2026, 4, 18),
|
||||
settlement_date=date(2026, 4, 27),
|
||||
description="CDS contract",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-017",
|
||||
date=date(2026, 4, 19),
|
||||
account="ACC-3399",
|
||||
amount=76800.00,
|
||||
status="Unmatched",
|
||||
flag="Threshold Breach",
|
||||
reference_id="REF-2026-0017",
|
||||
counterparty="Scotiabank",
|
||||
currency="AUD",
|
||||
booking_date=date(2026, 4, 18),
|
||||
settlement_date=date(2026, 4, 28),
|
||||
description="Total return swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-018",
|
||||
date=date(2026, 4, 20),
|
||||
account="ACC-5566",
|
||||
amount=4100.25,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0018",
|
||||
counterparty="TD Bank",
|
||||
currency="USD",
|
||||
booking_date=date(2026, 4, 19),
|
||||
settlement_date=date(2026, 4, 29),
|
||||
description="Equity collar",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-019",
|
||||
date=date(2026, 4, 20),
|
||||
account="ACC-7788",
|
||||
amount=18600.00,
|
||||
status="Pending",
|
||||
flag="Manual Review",
|
||||
reference_id="REF-2026-0019",
|
||||
counterparty="MUFG",
|
||||
currency="EUR",
|
||||
booking_date=date(2026, 4, 19),
|
||||
settlement_date=date(2026, 4, 30),
|
||||
description="Volatility swap",
|
||||
),
|
||||
Transaction(
|
||||
transaction_id="TXN-020",
|
||||
date=date(2026, 4, 21),
|
||||
account="ACC-9900",
|
||||
amount=8250.50,
|
||||
status="Matched",
|
||||
flag="None",
|
||||
reference_id="REF-2026-0020",
|
||||
counterparty="Sumitomo Mitsui",
|
||||
currency="GBP",
|
||||
booking_date=date(2026, 4, 20),
|
||||
settlement_date=date(2026, 5, 1),
|
||||
description="Knock-out option",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
def list_transactions(status: StatusType | None = None, flag: FlagType | None = None) -> list[Transaction]:
|
||||
def list_transactions(
|
||||
status: StatusType | None = None, flag: FlagType | None = None
|
||||
) -> list[Transaction]:
|
||||
results = TRANSACTIONS
|
||||
if status:
|
||||
results = [item for item in results if item.status == status]
|
||||
|
||||
Reference in New Issue
Block a user