91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
# Feature Context: Initial Implementation
|
|
|
|
## Configuration
|
|
|
|
- **Development mode:** Automated
|
|
- **Execution mode:** Orchestrator
|
|
- **Strategy:** Big Bang
|
|
- **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`
|
|
- **Implementer models:** Sonnet 4.6 (backend), Opus (frontend)
|
|
- **Reviewer model:** Sonnet 4.6
|
|
|
|
## Customer Constraints
|
|
|
|
- Source: marathonbet.by — anonymous scraping (no login). ToS risk acknowledged by customer.
|
|
- Output: Excel files matching customer's wide-column spec (`Bet_Match_Win_1`,
|
|
`Bet_Period-1_Win_Fora_2_Value`, etc.) with date-range filenames.
|
|
- Storage: customer accepted SQLite-with-Excel-export instead of Excel-as-database
|
|
(decided 2026-05-05).
|
|
- UI tech: Blazor Hybrid (changed from initial WPF assumption — better for web migration).
|
|
- Locale: RU + EN.
|
|
- Scope: analyze-only initially; design `IBetPlacer` extension point for future betting.
|
|
- Configurability: every variable parameter (polling, concurrency, retry, UA, retention,
|
|
thresholds, locale) goes in `appsettings.json` + Settings UI page.
|
|
|
|
## Current State
|
|
|
|
Repo just initialized. Single `main` commit with `.gitignore` + `README.md` + `CLAUDE.md`.
|
|
Working on `feature/initial-implementation` branch. No source code yet — Phase 0 starts
|
|
with scraping research, no implementation.
|
|
|
|
## Temporary Workarounds
|
|
|
|
(none yet)
|
|
|
|
## Cross-Phase Dependencies
|
|
|
|
- **Phase 1 (Domain)** is the foundation; all later phases reference domain types.
|
|
- **Phase 2 (Storage)** & **Phase 3 (Scraping)** depend only on Phase 1 — can run in parallel.
|
|
- **Phase 4 (Application + Workers)** depends on Phase 2 + Phase 3.
|
|
- **Phase 5 (UI Shell)** depends on Phase 1 only — can run in parallel with 2/3.
|
|
- **Phase 6 (Event Browsing UI)** depends on Phase 4 + Phase 5.
|
|
- **Phase 7 (Anomaly)** depends on Phase 4 (snapshot storage) + Phase 6 (UI patterns).
|
|
- **Phase 8 (Results)** depends on Phase 6.
|
|
- **Phase 9 (Packaging)** is final — runs full build + test suite.
|
|
|
|
## Deferred Work
|
|
|
|
- Bet placing (explicit out-of-scope; design extension point only).
|
|
- Authenticated scraping (anonymous now; `IOddsScraper` impl is swappable).
|
|
- Multi-bookmaker support (only marathonbet.by; abstraction allows future expansion).
|
|
- PostgreSQL backend (SQLite for now; `IRepository<T>` abstraction allows swap).
|
|
|
|
## Failed Approaches
|
|
|
|
(none yet — phases not started)
|
|
|
|
## Review Findings Log
|
|
|
|
(populated by reviewers)
|
|
|
|
## Phase Execution Log
|
|
|
|
| Phase | Agent | Model | Test Writer | Parallel | Notes |
|
|
|---|---|---|---|---|---|
|
|
| Phase 0 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (research only) | — | Throwaway probe; outputs SCRAPE_FINDINGS.md only |
|
|
| Phase 1 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | — | — |
|
|
| Phase 2 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | ✅ With 3 + 5 | — |
|
|
| Phase 3 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | ✅ With 2 + 5 | — |
|
|
| Phase 4 | phase-implementer | Sonnet 4.6 | ⏭️ Skipped (Big Bang) | — | — |
|
|
| Phase 5 | phase-implementer-frontend | Opus | ⏭️ Skipped (Big Bang) | ✅ With 2 + 3 | Uses frontend-design skill |
|
|
| Phase 6 | phase-implementer-frontend | Opus | ⏭️ Skipped (Big Bang) | — | Uses frontend-design skill |
|
|
| Phase 7 | phase-implementer (split if needed) | Sonnet/Opus | ⏭️ Skipped (Big Bang) | — | UI portion uses Opus |
|
|
| Phase 8 | phase-implementer (split if needed) | Sonnet/Opus | ⏭️ Skipped (Big Bang) | — | UI portion uses Opus |
|
|
| Phase 9 | phase-implementer | Sonnet 4.6 | ✅ Final phase tests | — | Full build + test enforced |
|
|
|
|
## Environment & Runtime Notes
|
|
|
|
- Windows 10, PowerShell 5.1 default shell, Bash also available.
|
|
- `git` configured globally; remote `origin` = `https://git.dolgolyov-family.by/alexei.dolgolyov/maraphon-app.git`.
|
|
- Note: home directory (`C:\Users\Alexei`) is itself a git repo (likely accidental).
|
|
The maraphon-app local `.git` overrides it for this directory tree.
|
|
- .NET SDK assumed installed; if Phase 1 fails on `dotnet --version`, install or
|
|
document in CONTEXT.md.
|
|
|
|
## Implementation Notes
|
|
|
|
(populated as we work)
|