kjh2064
|
2eee44d19b
|
feat: Phase 3 VS-08 Risk Dashboard — GOV+DATA+DOMAIN+BE+FE (5/7)
- VS-08_DASHBOARD_SLICE_SPEC.md: Comprehensive dashboard specification
- VS-08_DATA_CONTRACT.md: PIT aggregation schema + caching strategy
- VS08_DashboardPolicy.cs: Aggregation logic (health score, insights, validation)
- VS08_DashboardEndpoint.cs: GET /api/dashboard/risk + cache layer
- RiskDashboard.vue: Unified portfolio view with real-time metrics
- VS08_DashboardIntegrationTests.cs: 5 core policy tests
Status: GOV+DATA+DOMAIN+BE+ASYNC+FE complete (5/7 vertical slices)
TESTOPS: In progress (test suite has minor compatibility issues with VS-04/07)
Cumulative: Phase 2 Batch 3 + Phase 3 = 27/36 components (75% COMPLETE)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-05 22:12:06 +09:00 |
|
kjh2064
|
14c5e4f668
|
feat: Phase 2 Batch 3 (VS-04~07) BE+ASYNC — Risk & Portfolio REST APIs + Hangfire Jobs
Implemented REST endpoints and async job handlers for portfolio/risk management:
✅ VS-04: Portfolio Rebalance
- POST /api/portfolio/{id}/rebalance (202 Accepted)
• Trigger rebalancing, return jobId + estimated trades
• Idempotency: by (portfolio_id, target_weights_hash, correlation_id)
- GET /api/portfolio/{id}/composition (200 OK)
• Current composition with weights
- PortfolioRebalanceJobHandler (Hangfire)
• Simulate rebalancing execution
• Publish PortfolioRebalanced event to outbox
✅ VS-05: Risk Metrics
- GET /api/portfolio/{id}/risk (200 OK)
• VAR-95, Sharpe, Sortino, volatility, concentration
• Cached < 1hr, refresh daily
- RiskCalculationJobHandler (Hangfire)
• Daily at 9:30 KST (after market open)
• Calculate metrics from price history
• Publish PortfolioMetricsCalculated event
✅ VS-06: Stress Testing
- POST /api/portfolio/{id}/stress (202 Accepted)
• Trigger scenario analysis (bull/bear/rate/vol)
• Return stressTestId
- StressTestJobHandler (Hangfire)
• Apply scenario shocks to positions
• Calculate portfolio loss
• Publish PortfolioStressTestCompleted event
✅ VS-07: Risk Alerts
- GET /api/portfolio/{id}/alerts (200 OK)
• Active alerts (Initial/Warning/Critical)
• Resolved alerts (history)
- AlertEscalationJobHandler (Hangfire)
• Run every 1 minute (after metrics update)
• Escalate: Initial (0min) → Warning (2min) → Critical (5min)
• Auto-resolve when metric back to safe
📊 Deliverables:
- 4 Endpoint classes (FastEndpoints)
- 4 Service classes (DI-injectable)
- 4 Hangfire Job handlers
- 8 DTOs (Request/Response)
- Full Npgsql integration (PIT queries)
- Outbox event publishing (async coupling)
- Idempotency enforcement (hash-based)
🏗️ Architecture:
- Endpoints: 202 Accepted (async processing)
- Jobs: Deterministic, idempotent, event-driven
- Database: PIT-compliant queries with published_at <= cutoff
- Async: Event → outbox → inbox consumers
- Error handling: Transaction rollback on failure
Phase 2 Batch 3 Progress: 4/7 (GOV+DATA+DOMAIN+BE+ASYNC complete, FE+TESTOPS pending)
Build: ✅ PASS
Tests: ⏳ Running (45 domain tests + 20 new endpoint/job tests = 65 total)
Next: FE + TESTOPS (parallel)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-08-05 21:53:08 +09:00 |
|