88 lines
4.3 KiB
Markdown
88 lines
4.3 KiB
Markdown
# Feature: Initial Implementation (maraphon-app)
|
||
|
||
**Branch:** `feature/initial-implementation`
|
||
**Base branch:** `main`
|
||
**Created:** 2026-05-05
|
||
**Status:** 🟡 In Progress
|
||
**Strategy:** Big Bang
|
||
**Mode:** Automated
|
||
**Execution:** Orchestrator
|
||
**Implementer models:** Sonnet 4.6 (backend) · Opus (frontend, with frontend-design skill)
|
||
**Reviewer model:** Sonnet 4.6
|
||
|
||
## Summary
|
||
|
||
Build the maraphon-app end-to-end: a Blazor Hybrid (.NET 8 + WPF) sports-betting odds
|
||
analyzer that scrapes marathonbet.by, persists snapshots in SQLite, exports to Excel
|
||
matching the customer spec, and detects coefficient-flip anomalies. Architecture is
|
||
Clean Architecture with all UI in a Razor Class Library so the host can later swap to
|
||
ASP.NET Core Blazor Server with no UI rewrite. RU + EN localization, every variable
|
||
parameter configurable.
|
||
|
||
## Build & Test Commands
|
||
|
||
- **Build:** `dotnet build Marathon.sln`
|
||
- **Test:** `dotnet test Marathon.sln`
|
||
- **Lint:** `dotnet format Marathon.sln --verify-no-changes`
|
||
- **Run:** `dotnet run --project src/Marathon.Hosts.WpfBlazor`
|
||
|
||
> **Big Bang strategy:** Build/tests are NOT run for intermediate phases (Phases 0–8).
|
||
> The full build + test suite must pass at Phase 9 before final review.
|
||
> An exception: a `dotnet build` *compile-only smoke check* is allowed after each
|
||
> phase to catch syntax/type errors early — this is faster than running tests and
|
||
> consistent with Big Bang ("we don't run tests until the end").
|
||
|
||
## Phases
|
||
|
||
- [ ] Phase 0: Scraping spike (research, throwaway) [domain: backend] → [subplan](./phase-0-scraping-spike.md)
|
||
- [ ] Phase 1: Solution skeleton + Domain model [domain: backend] → [subplan](./phase-1-solution-and-domain.md)
|
||
- [ ] Phase 2: Infrastructure — Storage [domain: backend] → [subplan](./phase-2-storage.md)
|
||
- [ ] Phase 3: Infrastructure — Scraping [domain: backend] → [subplan](./phase-3-scraping.md)
|
||
- [ ] Phase 4: Application layer + Background workers [domain: backend] → [subplan](./phase-4-application-and-workers.md)
|
||
- [ ] Phase 5: Blazor Hybrid host + Theme + i18n [domain: frontend] → [subplan](./phase-5-host-theme-i18n.md)
|
||
- [ ] Phase 6: Event browsing UI [domain: frontend] → [subplan](./phase-6-event-browsing-ui.md)
|
||
- [ ] Phase 7: Anomaly detection [domain: fullstack] → [subplan](./phase-7-anomaly-detection.md)
|
||
- [ ] Phase 8: Results loader [domain: fullstack] → [subplan](./phase-8-results-loader.md)
|
||
- [ ] Phase 9: Packaging + polish (final phase — full build + tests required) [domain: fullstack] → [subplan](./phase-9-packaging-polish.md)
|
||
|
||
## Parallelization Plan (Orchestrator mode)
|
||
|
||
| Round | Phases | Notes |
|
||
|---|---|---|
|
||
| 1 | Phase 0 | Spike — gating research, no parallelism |
|
||
| 2 | Phase 1 | Domain — must finish before Phases 2/3/5 |
|
||
| 3 | **Phases 2, 3, 5 in parallel** | Storage, Scraping, UI Shell — disjoint files |
|
||
| 4 | Phase 4 | Application + Workers — depends on 2 + 3 |
|
||
| 5 | Phase 6 | Event UI — depends on 4 + 5 |
|
||
| 6 | Phase 7 | Anomaly detection — depends on 6 |
|
||
| 7 | Phase 8 | Results loader — depends on 6 |
|
||
| 8 | Phase 9 | Packaging — final, runs full build + tests |
|
||
|
||
## Phase Progress Log
|
||
|
||
| Phase | Domain | Status | Review | Build | Committed |
|
||
|---|---|---|---|---|---|
|
||
| Phase 0: Scraping spike | backend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
|
||
| Phase 1: Solution + Domain | backend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
|
||
| Phase 2: Storage | backend | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 3: Scraping | backend | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 4: Application + Workers | backend | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 5: Host + Theme + i18n | frontend | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 6: Event browsing UI | frontend | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 7: Anomaly detection | fullstack | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 8: Results loader | fullstack | ⬜ Not Started | ⬜ | ⏭️ Big Bang | ⬜ |
|
||
| Phase 9: Packaging + polish | fullstack | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
|
||
|
||
## Final Review
|
||
|
||
- [ ] Comprehensive code review (final-reviewer agent)
|
||
- [ ] Security review (auth N/A, but covers scraping HttpClient, file I/O, user input)
|
||
- [ ] Full build passes
|
||
- [ ] Full test suite passes
|
||
- [ ] User merge approval
|
||
- [ ] Merged to `main`
|
||
|
||
## Amendment Log
|
||
|
||
(empty)
|