Түншүүд

Бидэнтэй хамт

Монголын сагсан бөмбөгийн 7-р улирлын албан ёсны түншүүд

Monlive Sports
BATAAR
Virtual Print — Хэвлэлийн газар
Space Basketball — Season 7

Автоматаар эргэнэ • нэг баннер нэг удаа

Нэмэлт түншүүд

ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
ХасБанкМобиком Корпораци
Үндсэн агууламж руу шилжих
  • Нүүр
  • Тоглолтууд
  • Тоглогчид

Баримт бичиг

Хэсгээс сонгож шууд шилжинэ.

Эхлэх

  • Ерөнхий танилцуулга
  • Бүтээгдэхүүний алсын хараа
  • Архитектур
  • Замын зураг

Дизайн систем

  • Брэнд ба дизайн систем
  • Дизайн ассетын техник үзүүлэлт

Фичерүүд

  • Фичерийн бүртгэл

description: >- English summary: Onoo commercial roadmap. Phase 1 ✅ — Trusted data foundation (games, box scores, standings). Phase 2 ✅ — Player profiles (hero, charts, stats). Phase 3 ✅ — Discovery (search, game pages, leaders, awards). Phase 4 🟡 — Academy management (student profiles, payments, group management). Phase 5/6 planned: public API, enterprise features, mobile app. Revenue model: league subscription (paid pilot) + per-game fees. Non-goals: streaming, fantasy, consumer analytics.

Оноо — Сагсан бөмбөгийн үйлдлийн системийн замын зураг

Арилжааны босго (paid pilot)

Одоогийн бизнес загвар дээр суурилсан босго. Шаардлагатай бол өөрчилж болно:

GateOutcome
DiscoveryContracted pilot, 1,000,000 MNT deposit, нэг улирлын гэрээ
Paid proof100% final-score accuracy, 0 сэргээшгүй event, whistle-to-recap < 5 минут
Full seasonSatisfaction ≥8/10 ба улирлын гэрээ 14 хоногийн дотор
ExpansionNative mobile, follows/push, claims — full-season renewal-ын дараа л

Horizon A — Лиг эхлэсэн paid proof

Phase 1–7 нь Оноо-ийн одоогийн хэрэгжих замын зураг. Эдгээр нь trusted records, public athlete value, league renewal-ийг батална.

AI хэрэгжүүлэгчдэд: үе шат бүрийн execution spec нь docs/plans/ дотор байна. Энэ roadmap нь юу/яагаад, spec-үүд нь яаж гэдгийг харуулна. Эхлээд docs/plans/00-conventions.md, дараа нь тухайн phase-ийн spec-ийг унш.

Phase 1 — Trusted data foundation (ажиллаж буй)

Execution spec: plans/phase-1-trusted-foundation.md

  • stat_events journal, ruleset vocabulary, projection rebuild command, authorization cutover.
  • Submission review UI, journal durability tests, handoff UI.
  • Ops console, integration tests, chaos tests, venues CRUD, seasons CRUD.

Phase 2 — Player profile as showcase

Execution spec: plans/phase-2-player-showcase.md

  • Roster onboarding kit, consent & takedown, hero identity card, social links.
  • Season story arc, shooting profile, career highs & milestones.
  • Radar chart, recent games strip, plain-language summaries.
  • Report-error intake, season selector & career view, box score below fold.

Phase 3 — Final-Whistle Pack

Тоглолт дууссанаас 5 минутын дотор бүх publishable asset бэлэн болно.

  • Game recap pages — final score, top performers, lead-change flow.
  • Shareable stat cards — тоглогчийн game/season line-ийн зураг.
  • Sponsor placements — "presented by" slots.
  • Awards & MVP races — shareable award graphics.
  • Provisional-final publication — "Урьдчилсан" badge бүхий snapshot.
  • Auto Mongolian recap text — deterministic narrative.
  • One-click share/download — бүх asset дээр.

Phase 4 — League proof & renewal

  • Embeddable widgets — standings, leaders, schedule.
  • English profile view/export — scout-facing toggle.

Phase 5 — Discovery & organic growth

  • Standings redesign — zebra rows, sticky header, team color accent, playoff line, streak/last-10 dots
  • Awards & MVP races — cmd_grant_award SECURITY DEFINER function, admin awards page with grant Dialog + list, getMvpRace / getPlayerAwards in data.ts, MvpRace card on leaders, AwardsShelf on player page
  • Qualification rules
  • Home: tonight's games — live/today/yesterday/standings sections with GameCard components and 20s live polling
  • Search & browse — player/team/league-ийг хурдан олох.
  • Search expansion — ⌘K palette + /search page cover shop products, games, competitions (season reports), with integration + E2E coverage
  • SEO basics — sitemap, metadata, indexable public pages.

Phase 6 — Live experience

  • Public visibility for provisional games — getGamesByDate/getGameById now read from v_public_live_games UNION with v_public_games. Provisional games show with amber "Урьдчилсан" badge. Live games show scores.
  • Live game center — realtime score, on-fire indicator, play-by-play.
  • Live-updating player stat lines — Supabase Realtime.

Phase 7 — Team insights (design-partner beta)

  • Efficiency metrics — ORtg, DRtg, NETRTG, PIE, Four Factors, pace.
  • Team performance dashboard — offense/defense trends, Four Factors, efficiency chart, per-game advanced stats.
  • Player development timeline — month-over-month stat progression (MonthlyProgression on player page).
  • Opponent scout card — дараагийн өрсөлдөгчийн нэг хуудас profile (teams/[slug]/scout).

Horizon B — Баг ба академийн ажиллагаа

Эдгээр нь стратегийн дараагийн үе шат. Лигийн paid-proof gate ба домайн бүрийн paid discovery pass-ыг давсны дараа л эхэлнэ.

Phase 8 — Shared basketball organization foundation

  • Canonical identity for leagues, clubs, teams, academies, guardians.
  • Official roster snapshots, eligibility, transfers, identity disputes.
  • One account + least-privilege org roles.
  • Private storage, audit, retention, consent, break-glass support, dark theme.

Phase 9 — Team operations

  • Team staff and role administration.
  • Roster intent, availability, transfer requests.
  • Training schedule, attendance, facilities.
  • Team dues and expense workflows.
  • Basketball-specific performance and opponent prep.

Phase 10 — Academy operations

Product architecture and delivery plan: features/academy-management.md

Phase 10a нь deliberately minimal: admin dashboard дахь academy info, existing-auth access, basic payments, read-only program/trainer/location display. Enrollment, attendance, consent, offline workflow-ууд дараа орно.

  • Academy info in admin dashboard: name, logo, contact, timezone, settings.
  • People auth: existing accounts-аар нэвтрээд nav-д "Academy" харагдана.
  • Basic payments through shop QPay.
  • Read-only program, trainer, location display.
  • No enrollment, no attendance, no consent, no offline.

Phase 10b — Student & enrollment

  • Student profiles with guardian info, medical essentials, photo upload.
  • Enrollment management: registration, program assignment, dates.
  • Attendance, consent, waivers.
  • Multiple children per guardian.
  • CSV import/export.

Phase 10c — Full operations

  • Offline-safe attendance with IndexedDB queue.
  • Attendance reports by student, offering, coach, date range.
  • Payment history and receipts per student.
  • Ordered waitlist with promotion rules.

Phase 10d — Advanced

  • Guardian OTP, multi-child dashboard.
  • Verified QPay callbacks.
  • Private message threading.
  • Extended reporting: attendance analytics, financial summaries.
  • Private identity-link record.

Phase 11 — Guardian self-service and commerce experience

  • Guardian self-service, multi-child access, consent history.
  • Registration, invoice/payment history, receipts, refunds, reconciliation.
  • Basketball-specific announcements and reminders.
  • Subscription and entitlement model.

Phase 11b — Public news (2026-08-07)

  • News articles: admin CRUD with draft/publish lifecycle, public listing + detail pages, home latest-news strip, RLS + RPCs, tests (T-11b.1).

Phase 12 — Web performance & PWA

Lighthouse-based performance pipeline (mobile/desktop budgets), JS bundle trimming, data-layer caching, deploy-safe service worker. See tasks/T-12.1-web-performance-pwa.md.

  • Lighthouse tooling: configs, budgets, npm scripts, README docs.
  • JS trim: Sentry lazy-load, chart out of UI barrel, dnd-free loading skeleton, Oswald weights.
  • CLS fix: hero-height-mirroring skeleton (desktop 0.276 -> 0.02).
  • Data caching: getGamesByDate cacheLife("realtime") — warm requests 1490ms -> 456ms.
  • PWA service worker: network-first navigations, cache-first hashed assets, production registration, offline E2E.
  • Mobile home perf 78 -> 84, LCP 5.9s -> 4.5s, CLS 0; desktop home 98.
  • Home critical path: box-score query parallelized (T-12.2). Polyfill trimming and hero-first streaming investigated — not shipped (evidence in task spec).
  • Production-readiness verification: complete unit, integration, E2E, typecheck, lint, and production-build gates.

Phase 13 — Public Basketball Intelligence

Official-record-first public analytics across home, game, player, team, leaders, standings, search, comparison, and saved preferences.

  • Public contract, curated views, official-source evidence, and private-note isolation (T-13.1).
  • Canonical player/team metrics and reusable intelligence primitives (T-13.2).
  • Evidence-backed Game Recap Lab with accessible momentum tables (T-13.3).
  • Player Intelligence Lab with approved-record trends, insights, and favorites (T-13.4).
  • Team Dossier, competition-scoped benchmarks, and public scout (T-13.5).
  • League Pulse, leaders filters, standings race, and global search (T-13.6).
  • Competition-scoped compare, favorites API, interaction analytics, and release proof (T-13.7).

Phase 14 — Platform hardening

Improvement-plan P0 batch from features/feature-map-gaps-improvement-plan.md: trust & hygiene before further features.

  • Retire stale derive-game / broken notify-game-events edge functions; in-DB command path is authoritative (T-14.1).
  • Sponsor placements wired end-to-end (public slots read v_public_sponsor_slots) (T-14.1).
  • CI pipeline: lint/typecheck/unit/integration on PR; build + e2e on main (T-14.1).
  • Dead code + duplicate generated types removed; tests repointed at real components (T-14.1).

Phase 15 — Improvement plan P1/P2 (half-built surfaces + parity)

Completing the remaining half-built surfaces and STAT.mn-parity gaps from features/feature-map-gaps-improvement-plan.md §6 P1–P2.

  • Quick Shot / shot-location capture in the tracker — one-tap shots with optional court coordinates; heatmap/live-court/shot-chart data path (T-15.1).
  • Clutch stats derivation from the journal (close games, margin ≤ 5) wired into the player page (T-15.2).
  • Tournament model (rounds/groups) + FIBA-style hub: group tables, knockout + classification brackets, leaders, games by round (T-15.3).
  • Real /teams/vs matchup hub + series pages (record, trend chart, meetings, season breakdown) + team-page opponents (T-15.4).
  • Realtime home/scorebar via shared postgres_changes hook; 20s polling and TODO(5.1) removed (T-15.5).
  • Verified QPay callbacks: server-side checkPayment, immutable payment_events ledger, exactly-once settlement, admin reconciliation (T-15.6 / T-10d.2).
  • Offline attendance: IndexedDB journal, idempotent replay, staff reports + financial analytics, deterministic check-in codes (T-15.7 / T-10c.1 / T-10d.4).
  • Auto-award RPC (period MVP, player-of-week from qualified leaders) with propose/approve/reject lifecycle (T-15.8).
  • Lineup +/- analysis surface on team analytics (minutes, NETRTG, top/bottom lineups) (T-15.9).
  • csv_import_log + waitlist_history wired into import/promotion flows (T-15.10).
  • Season/competition selector (shareable URL), all-time record boards, home leader strips, zone standings for grouped competitions (T-15.11).
  • White-label tenant theming: tenant_config, admin branding CRUD, subdomain shell branding (T-15.12).
  • Quick check-in attendance with 6-digit codes (T-15.13).
  • Sitemap/SEO completeness — records, awards, academy, shop routes (T-15.14).

Phase 16 — Production readiness

Closing the gaps found in the 2026-08-06 admin coverage audit.

  • FastGate widened: test:all runs typecheck + lint + unit + integration; broken types can no longer ship past the local gate (T-16.1).
  • Route-level tests for every previously untested admin API route (products/orders, competitions/venues, sports, team-seasons, catalog/reference, link-student-to-player, teams availability/training/context, org reference/break-glass, branding, audience, dashboard, players [id]/photo, submissions evidence, sponsors + logo + placements) (T-16.1).
  • E2E runs on pull requests, not just main push (T-16.1).
  • Remote admin credential restored (admin@onoo.mn password reset via GoTrue admin API, sign-in verified) (T-16.1).
  • Gate 3 decision record drafted for Phase 11 — awaiting owner approval (T-16.1).

Phase 17 — Scoresheet analytics & continuous uploads

Turning every FIBA Official Statistics PDF upload into public analytics and making the admin upload path safe for continuous season-long updates.

  • Game score-flow chart: cumulative home/away scores from FIBA 5-minute checkpoints with Q1–Q4 boundaries + accessible table (T-17.1).
  • Team scoring-source chart (paint / 2nd-chance / fast-break / TO points / bench per game) + flow columns in the per-game table (T-17.1).
  • Player shot-distribution heatmap (court zones + scatter) wired into the player Distribution tab; starter badge + FIBA fouls C/D in the game log (T-17.1).
  • Upload hardening: PDF team-code validation, cmd_seed_game_rosters auto-seed, name-based player identity fallback (T-17.1).
  • Anonymous-read grant fix for FIBA-derived analytics tables (checkpoints/periods/summary were 42501-hidden) (T-17.1).
  • Game Intelligence Lab: lead-differential momentum chart, game-control panel (time leading / biggest lead / longest run / lead changes / times tied), point-source breakdown (paint / fast-break / 2nd-chance / TO points / bench) on the game page (T-17.4).
  • Per-game EFF column on the player game log via @onoo/core computeEfficiency (T-17.4).
  • FIBA checkpoint parser fix: merged-header extraction and flow-line guard produce correct 5-minute checkpoint values for real PDFs (T-17.4).
  • Scoresheet evidence review UI: admin parses a FIBA PDF, previews every value (players/flow/checkpoints/warnings), then explicitly confirms before publish — review-gated path shared with the instant upload (T-17.2).
  • Season-long flow trends: per-game chart of the 5 FIBA flow categories + time-leading on team analytics, with accessible table and empty state (T-17.3).
  • Game-page milestones: @onoo/core detectGameMilestones (double-double / triple-double / 20+) badges on recaps (T-17.5).
  • Recap v2 lab story: run / biggest-lead / time-leading sentences in the recap; momentum share card gains a Тоглоомын хяналт facts row (T-17.5).
  • Live momentum chart in the live game center, derived from stat_events via deriveBoxScore semantics (T-17.5).
  • Player dossier rewired: league-overlay radar, stat-card flips (season vs career), milestones, recent games, monthly progression, career timeline; trend brush-range summary badges + cross-tab highlight (T-17.5).
  • Leaders: 13-stat sortable tabs, 8-category leader strips (eff/+/−/TS added), drag-to-compare to the live compare page (T-17.5).
  • Standings: inline single-expand row expansion (last-5, top scorers, next game, diff bars) replacing the drawer (T-17.5).
  • Historical import: shared reviewed pipeline in scripts/lib/fiba-import.ts + manifest CLI scripts/import-official-stats.ts; BUBL seed refactored onto it (T-17.5).

Phase 18 — Performance & hardening

Search and core surfaces stay fast as data grows; repeat work is cached instead of recomputed.

  • Search performance: searchAll/searchPlayersAndTeams cached server-side (use cache + cacheLife("realtime")) via the cookieless anon client; /api/search + /api/search/quick responses cached 60 s (browser/CDN) with stale-while-revalidate (T-18.1).
  • Admin search: pg_trgm GIN indexes on players.canonical_name/name_latin + teams.name/short_code (base-table ILIKE); deterministic ORDER BY canonical_name on /admin/api/players (T-18.3).

Phase 19 — UX audit fixes

2026-08-06 live audit (VERDICT: FAIL — 3 Critical, 5 High, 8 Medium) on onoo.zuiiotech.com.

  • Canonical base: SITE_URL constant (env + onoo.zuiiotech.com fallback) wired through sitemap, robots, metadataBase, per-route canonicals, JSON-LD, and embed footers — no more dead onoo.mn URLs (T-19.1).
  • Contrast: dark --muted-foreground 0.55 → 0.62 — WCAG AA on every surface (T-19.1).
  • Mongolian copy + terminology: "Эзэн" tab, "Сүүлийн тоглолтууд", "Өндөр", canonical Самбар/Дамжуулалт labels everywhere (T-19.1).
  • Teams directory at /teams — footer "Багууд" link no longer 404s (T-19.1).
  • Team "next game" excludes finished statuses — no more finals under "Дараагийн тоглолт" (T-19.1).
  • Redeploy: the live build was stale vs repo (search, box-score empty states, MN toggle, stat labels) — fixed by shipping the current code (T-19.1).
  • Admin user manual: "Гарын авлага" page documents every sidebar menu entry with a Mongolian description + direct link; reachable from a new "Тусламж" sidebar group (T-19.2).
  • VitePress docs site: onoo-docs.vercel.app renders the repo docs/ markdown (feature docs, vision, architecture, roadmap) with sidebar, search, mermaid; docs stay single-source via symlink (T-19.3).
  • Client demo data prep: regenerated every published game's player lines + team stats on the remote project so box scores are internally consistent (pts = 2·fgm + tpm + ftm, team totals match scores), rebuilt per-game season stats, restored the Дээд Лигийн Цом tournament hub, seeded awards + sponsor placements; added per-game columns to v_public_leaders and fixed the MVP-race EFF double-divide (T-19.4).

Phase 20 — Gap closeout (2026-08-06)

All 16 gap ideas (docs/tasks/gaps/) audited against the shipped codebase. 14 already shipped under T-13.x/T-15.x/T-19.1; G-07 residual implemented; G-16 remains the only open gap — blocked 2026-08-10 (owner deferral, not needed for now).

  • G-01 Score flip animation — flip-digit.tsx/score-board.tsx on landing + game detail.
  • G-02 Skill radar league overlay — ghost polygon, toggle default on, dual tooltip.
  • G-03 Season arc brush — recharts Brush + range summary + cross-highlight with game log.
  • G-04 Multi-category leaderboard strip — 8 category strips on landing + leaders.
  • G-05 Standings row expansion — chevron accordion rows (with T-19.1).
  • G-06 Card flip stats — hero + player intelligence overview flip cards.
  • G-07 Drag-to-compare — leaders drag shipped; 2026-08-06 added compare-page delta-highlighted table (>10% rule), radar entrance animation, season arc overlay (compare-arc.tsx, API gameLines).
  • G-08 Tournament hub — single-page hub with groups, bracket, games by round.
  • G-09 Tournament bracket — round columns + classification bracket.
  • G-10 Swipeable game cards — touch swipe + action panel.
  • G-11 Drag-to-reorder leader categories — dnd-kit + localStorage order.
  • G-12 Interactive court heatmap — SVG zones + tracker shot capture.
  • G-13 Season/competition selector — URL-persisted on 4 pages.
  • G-14 Countdown timer — next scheduled game on landing.
  • G-15 Shareable stat cards — server-rendered OG cards + share button.
  • G-16 Live court animation — live-court.tsx exists but demo-only; needs tracker/live-route realtime integration (XL). Blocked 2026-08-10: owner deferral — not needed for now.

Phase 21 — League insight features (2026-08-06)

User-selected "easy + wow" features: zero scorekeeper effort, computed from existing public views. Тоглолтын баатрууд (Game Heroes) was already shipped via recap-header/top-performers.

  • Хүчний чансаа (T-21.1) — win% + last-5 form + SOS composite, trend arrows, standings page.
  • Багын тайлан карт (T-21.2) — five A–F categories vs league population, team page.
  • Сэтгэл хөдөлгөм тоглолтууд (T-21.3) — 0-100 drama score (margin, total, max lead), standings page.

Phase 22 — EuroLeague-inspired public UI (2026-08-07)

Competitive research against euroleaguebasketball.net: adopt the layout patterns that make sense for a score-driven product. All presentation-layer on existing views.

  • Mobile bottom nav — 5 thumb-friendly destinations below lg, inline nav hidden (T-22.1).
  • Standings rank chips on schedule cards + home strip (T-22.1).
  • Site-wide next-game countdown strip with ticker sponsor slot (T-22.1).
  • Player-to-Watch spotlight per team in the game hero (T-22.1).
  • Add-to-calendar (.ics) download on the game page (T-22.1).
  • Standings view toggle — Хүснэгт / Цуврал / Форм (T-22.1).
  • Venue line on game cards (T-22.1).
  • Public site performance — "use cache" on public queries + font priority (T-22.2). Home mobile: PERF 76→82, LCP 6.7s→4.7s; all public pages improved.
  • Next.js 16.3 optimization batch (T-22.3) — partial prefetching (one App Shell per route), runtime prefetching on filter pages, cacheTag + admin revalidateTag (instant score/standings propagation), generateStaticParams on entity routes, Web Analytics, cached sitemap.
  • Migration prefix fix — 20260806120000_seed_game_rosters renamed to 20260806130000 (duplicate-prefix collision blocked local Supabase).

Phase 23 — NBA.com parity & league video (2026-08-07)

Competitive-parity batch against nba.com (comparison: docs/features/nba-com-comparison.md). All gaps from the audit shipped: content engine, schedule/stats parity, navigation discoverability, plus the owner-approved YouTube video surface (league channel embeds — VISION video non-goal lifted for embeds only).

  • News feature completed (T-11b.1) — admin CRUD (/admin/news), public /news + /news/[id], home latest-news strip, nav/footer links; migration+seed already existed, UI was missing.
  • League videos — videos table + cmd_* RPCs + v_public_videos, admin console, public /videos with embedded player + thumbnail grid, home strip; league YouTube channel embeds (no video hosting).
  • Schedule team filter — /games?team= via TeamFilter select + per-team link on team pages.
  • Season calendar export — /api/calendar/season.ics (multi-event feed, ?team= scope) + button on /games.
  • Daily leaders — most recent game day, top-5 per 6 categories on /leaders (NBA stats-hub parity).
  • Public transfers feed — v_public_transfers (approved only) + /transfers page.
  • Nav discoverability — "Илүү" dropdown (Мэдээ, Видео, Рекордууд, Наградууд, Тэмцээнүүд, Хуанли, Шилжилтүүд, Тайлбар, Баримт бичиг) + expanded footer.
  • Hide-scores spoiler toggle — scorebar eye toggle (localStorage).
  • Stats glossary — /stats-glossary (MN explanations of ORtg/DRtg/PIE/Four Factors…).
  • Key dates — league_dates + admin console + /key-dates page.
  • Per-team records — team-scoped record boards on /teams/[slug].
  • Pre-game preview card — head-to-head record + recent meetings on scheduled /games/[id].
  • Competition hubs — /competitions index + /competitions/[id] (standings, leaders, recent games, tournament structure).
  • Reviews RLS tightening — product_reviews SELECT restricted to approved (org admins see all) — completes the in-progress moderation policy.

Phase 24 — Security hardening (2026-08-07)

Audit-driven hardening of the live deployment (onoo.zuiiotech.com + iyhujghadlymroihxyiy.supabase.co): live-verified RLS gaps, dependency CVEs, admin auth, security headers. Spec: T-24.1.

  • Dependency CVEs: postcss (3 advisories via next pin), fast-uri, js-yaml, hono — pnpm audit now clean (T-24.1).
  • RLS: dropped orders_admin_all / products_admin_all / reviews_admin_all (any authenticated user could read/write all orders, products, reviews); consent_policies + break_glass_access writes scoped to owning org admins (T-24.1).
  • Storage: admin buckets (player-photos, team-logos, product-images, sponsor-logos) writes require an org admin — live-verified bypass closed (T-24.1).
  • Admin upload routes require org-admin membership; dev credentials removed from the login client bundle (T-24.1).
  • Security headers (X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-Frame-Options, CSP frame-ancestors 'self'); stat_events anon reads column-scoped (T-24.1).

Phase 25 — Terminology & i18n consistency (2026-08-07)

Unify Mongolian stat labels on common usage. Core i18n (packages/core/src/i18n/stats.ts) is the single source of truth; components import getStatLabel instead of inline copies.

  • Stat label terminology unification (T-25.1) — canonical set Оноо / Самбар / Дамжуулалт / Булаасан / Хаалт; radar, compare radar, stat cards, season arc, awards pills, OG images all read from core; 3 old streams collapsed into one.

Phase 26 — Homepage polish (2026-08-08)

User request: trim the "Илүү" nav dropdown to footer-only destinations, lead the landing hero with the newest league video (NBA.com style), keep the news preview visible.

  • Nav cleanup (T-26.1) — Мэдээ and Видео promoted inline in the desktop nav; "Илүү" dropdown + MORE_ITEMS removed (secondary destinations stay in the footer); Base UI dropdown runtime error gone with the menu.
  • Featured video hero (T-26.1) — landing hero embeds the newest published video (youtube-nocookie player, title, "YouTube-ээр нээх") with a compact next-game panel; scoreboard hero remains the empty-state fallback; the latest-videos strip no longer duplicates the hero video.
  • News preview (T-26.1) — "Сүүлийн мэдээ" strip with up to 3 latest published articles stays on the landing page.
  • Full-width video hero (T-26.2) — hero video spans the full container width with the next-game strip below; news cards get aspect-video image slots.
  • Space League channel feed (T-26.2) — newest @SpaceLeague video (channel UC1P-4WO1Qeg1kBQiy2q8SgA) leads the hero via the YouTube Data API v3; falls back to admin videos until YOUTUBE_API_KEY is set (YouTube killed RSS feeds; scrape verified dead).

Phase 27 — NBA.com editorial layout (2026-08-08)

Fresh live analysis of nba.com (2026-08-08) applied to the landing page: editorial hierarchy (featured story + headlines + topic rails) instead of a uniform grid. Pure presentation on existing data paths — no schema changes.

  • Featured news + headlines rail (T-27.1) — home news section becomes a featured story (kicker, cover image, "Унших" CTA) beside a compact headline rail with dates (NBA "Stories/Headlines" pattern); up to 5 articles.
  • Лигийн булан league corner (T-27.1) — latest-transfers and upcoming key-dates mini-feeds (hide when empty) plus quick-link chips into the footer-only league pages: Наградууд, Рекордууд, Тэмцээнүүд, Статистикийн тайлбар.

Phase 28 — Test suite hardening (2026-08-09)

E2E suite hardening after a full admin-page test pass surfaced 9 failures: shop checkout locator collisions, SWR first-read staleness in content admin CRUD specs, and an order-dialog validation-message bug. Suite is now green and deterministic against the local stack.

  • Admin page E2E fixes (T-28.1) — dialog-scoped shop locators, role-based h1, SWR-tolerant poll-with-reload public assertions, orphan-row purge in beforeAll, Спэйс Лиг transfer pick, order-dialog first-error-wins validation mapping.

Phase 29 — Responsive & performance audit (2026-08-09)

Full audit pass (user request 2026-08-09): three parallel code scouts + live browser probes at 360/390/768/1440px against Next.js 16.3 docs. Fixed P0 home clipping, sticky-header conflicts, LCP iframe hero, image loading, touch targets, and a11y semantics.

  • Responsive fixes (T-29.1) — home leaders/standings cards were clipped by the court-divider grid auto-column (fixed with grid-cols-1 + min-w-0); countdown strip moved out of the sticky stack so inner sticky offsets (shop filter, players toolbar, MVP race) always clear the header; /teams/vs gained horizontal padding; standings mobile rank cell and awards stat-pill rows wrap at 360px.
  • Performance (T-29.1) — YouTube hero + featured video are click-to-play poster embeds (LCP no longer pays iframe JS); news covers and video thumbs use next/image with sizes; countdown pauses on hidden tabs; slow poll skips while Realtime is connected; search/rank-map/next-game/daily-leaders queries moved from cacheLife realtime→frequent; unused global DrawerProvider removed; SW caches bounded (40 nav / 300 static / 50 misc).
  • UX & a11y (T-29.1) — skip link targets the always-present #content wrapper; sponsor marquee replicas aria-hidden + inert + motion-reduce; leaders tabs get role=tab/aria-selected; touch targets raised to ≥40px (date nav, pagination, scorebar hide button, mobile shop button); home game times rendered in Asia/Ulaanbaatar; dead #play-by-play anchor now resolves on game pages.

Phase 30 — Test coverage expansion (2026-08-09)

Audit-driven coverage push: every non-boilerplate src file now has a test import, the coverage gate became enforceable, and E2E gaps were closed with new specs.

  • Full test coverage expansion (T-30.1) — 0 untested non-boilerplate src files (was 198); 119 boilerplate pages covered; ~135 new test files (+1205 tests); E2E specs for live tracker + 11 uncovered admin pages; test:coverage script + @vitest/coverage-v8; thresholds raised to 72/65/70/60; coverage 52.78→77.74% stmts, 53.86→79.2% lines; merged-tree FastGate green (4049 unit + 669 integration + 22 E2E).
  • Direct LazyYouTubeEmbed component test (T-30.2) — last src file without a direct test import now covered (poster/eager-no-iframe, click-to-play nocookie iframe, id encoding, className pass-through).

Phase 31 — E2E reliability (2026-08-10)

E2E CI red on 4 of 5 runs (12–13 failures, net::ERR_FAILED). Root cause: the PWA service worker's networkFirst/cacheFirst called event.waitUntil without event in scope — every SW-controlled navigation and static-chunk request rejected. Also fixed prerender-abort spam on the Next 16.3.0-preview.8 build (cache-complete fetchers + no allow-runtime prefetch), an RLS gap hiding rosters from the tracker for live/scheduled games, the stale videos embed assertion (T-29.1 click-to-play), and the racy tracker game-finder. Full suite now 204 passed / 0 failed; the 3 previously skipped tracker live-flow specs execute and pass. Also fixed in CI follow-up: game OG image Satori crash on scored games, videos embed hydration race.

  • E2E CI stabilization (T-31.1) — public/sw.js passes event into networkFirst/cacheFirst (ReferenceError fix, same bug verified on the deployed sw.js); 13 pages drop prefetch="allow-runtime", partialPrefetching off; 9 public fetchers made cache-complete ("use cache" + cacheLife + cacheTag, tournament fetchers on the cookieless client) — kills the per-request prerender-reject + Sentry spam; nav/sidebar Links prefetch={false}; CI E2E retries 3; tracker spec waits for the client-side table and prefers a live game; videos spec clicks the poster first; RLS migration 20260810120000_tracker_rosters_live_games.sql (anon: approved games only, authenticated: + live_provisional/scheduled); FastGate green (4049 unit + 703 integration), E2E 204 passed / 0 failed. Stable upgrade: next 16.3.0-preview.8 → 16.3.0 stable — prerender-abort bug fixed upstream; partialPrefetching re-enabled, prefetch exports restored as "partial".

Phase 32 — Player page NBA.com layout (2026-08-23)

User request: nba.com-style player page — season stats table + last games at the top, everything else below, tabs merged 5 → 2. Presentation-layer only.

  • Player page NBA.com layout (T-32.1) — team-color hero banner, then everything in player-priority single scroll: stats table → recent games → game log → trend → shooting → distribution → analytics → clutch; sticky anchor section nav; tabs removed (nothing hidden behind clicks); players tree 217/217 tests, tsc + biome clean, browser-verified.

Phase 33 — Player profiles (2026-08-24)

Player biographies are a single free-text field managed by admins and shown on public player profiles. Hidden players stay masked.

  • Player bio support (T-33.1) — players.bio admin CRUD, masked v_public_player_profiles.player_bio, and public profile section; local and remote migrations, generated types, integration test, and gate evidence recorded.

Phase 34 — Athlete self-service (2026-08-24)

Players claim their profile through a scoped, single-use team invite and edit their own biography.

  • Athlete self-service bio via team invites (T-34.1) — hashed invite lifecycle, staff roster actions, email/Google sign-in callback, and audited self-service bio edits.
  • Order-independent fallback seed migration (T-34.2) — 20260824120000_seed_leagues_fallback.sql creates its organization and sport parents idempotently before inserting G League, Mini League, Junior Cup, and their 2026 seasons; fresh ordered migration apply passed twice and the running local database was a no-op.

Horizon C — Unified basketball network

Баг эсвэал академийн модулиуд renew хийж, cross-domain identity/privacy/support metrics батлагдсаны дараа л эхэлнэ.

  • Unified identity across academy, team, league.
  • One consent-filtered athlete timeline.
  • Public athlete story composed from approved records.
Оноо

Монголын сагсан бөмбөгийн лигийн албан ёсны статистик платформ. Бүх тоглолтын тоо баримт, шалгуур, тоглогчдын мэдээлэл.

Хуудсууд

ТоглолтуудТоглогчидМэдээВидеоРекордуудНаградуудТэмцээнүүдШилжилтүүдЛигийн хуанлиСтатистикийн тайлбарБаримт бичиг

Лигийн мэдээлэл

Багууд2026 улирал

Платформ

Бүртгэгдсэн тоглолт: 450+Идэвхитэй тоглогч: 120+Баг: 16

© 2026 Оноо. Бүх эрх хуулиар хамгаалагдсан.

Монголын Сагсан Бөмбөгийн Холбоо

Оноо
  • Нүүр хуудас
  • Тоглолтууд
  • Тоглогчид
  • Мэдээ
  • Видео
АкадемиДэлгүүр
20:00Шууд
KH
KHU46
AP
APE40
18:00Албан ёсны
DA
DAR84
ZA
ZAV66
19:00Албан ёсны
MO
MON90
ME
MET83