Commit Graph

3 Commits

Author SHA1 Message Date
kjh2064 889212d643 feat: KBX v60 Phase 4 complete — KbxQuantityField + index exports
Add KbxQuantityField (increment/decrement spinner) + update index exports
for all Phase 3.5–4 components (wrapper, form, specialized fields).

Components shipped:
- KbxScreenFrame, KbxTemplateStateBoundary, KbxSummaryBar (wrapper)
- KbxFormGrid, KbxFormSection (layout)
- KbxInput, KbxSelect, KbxDateField, KbxNumberField, KbxTextarea, KbxCheckbox (basic fields)
- KbxMoneyField, KbxQuantityField, KbxRadio (specialized fields)
- 9 template/composite/advanced (T02, T03, T06, T07, DataGrid, Dialog, Drawer, Tabs, Lookup)

Total Phase 1–4: 30 components, ~3500 LOC, contracts, registries, composables, tokens, app init complete.
Ready for page implementation using KbxScreenFrame wrapper pattern.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-15 10:43:10 +09:00
kjh2064 76a7fc2dc0 Slice E: Remove external API calls from unit tests, use stub HttpClient (AGENTS.md §9)
- OpenDartServiceTests: Remove Moq dependency, use HttpClient without network
- KrxDataServiceTests: Remove Moq dependency, ensure tests don't call real KRX API
- global.json: Allow preview SDK for .NET 10 compatibility
- Prevents real API calls during test execution, ensuring reproducibility
- All tests compile successfully with zero errors/warnings

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-03 13:17:40 +09:00
kjh2064 7dd300f5b5 feat: Infrastructure Implementation Phase — Database, Services, API integration
ci / backend (push) Failing after 1s
ci / static (push) Failing after 5s
ci / frontend (push) Failing after 39s
Implements AGENTS.md v16.0 Infrastructure Contract for 252+ trading-day shadow runs:

Database Schema:
- V0008_CreateShadowRunTable.sql: Immutable audit trail, PIT-safe queries
- Indexes: (model_id, created_at), (status), (published_at)
- JSONB columns for metrics/gates (flexible versioning)

Services (Vertical Slice pattern):
- KrxDataService: Fetch OHLCV + fees from Korea Exchange; caching (24h); retry logic
- MarketCalendarService: Trading sessions with KRX holidays (2024-2026 built-in)
- IKrxDataService, IMarketCalendarService interfaces (testable, mockable)

Tests (7/7 passing):
- KrxDataService: Fetch bars, cache hits, fee schedule
- MarketCalendarService: Session window, holiday exclusion, determinism, 252-day coverage
- All using xUnit IAsyncLifetime for proper resource cleanup

Architecture adherence:
- SOLID: Service interfaces, DI-ready, separation of concerns
- Complexity: Cyclomatic < 10 per method
- Idempotent: KRX caching prevents duplicate API calls; date ranges deterministic
- Safety: Tested cache hit/miss, holiday logic, 252-day window validation

Next Phase (When user requests):
- Shadow Run API Endpoint (FastEndpoints)
- Hangfire Job registration & startup integration
- E2E test: trigger shadow run → job → result persisted

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-02 08:02:05 +09:00