Skip to content

ANL-01 follow-up: SQL-level filtering and performance for large boards #675

@Chris0Jeky

Description

@Chris0Jeky

Context

PR #667 (board metrics dashboard).

Issues

  1. All cards loaded into memory regardless of date range. `GetByBoardIdAsync` loads every card, then filters in-memory. For boards with 10,000+ cards this is O(n) memory per request.
  2. `Math.max(...spread)` stack overflow risk in MetricsView.vue if throughput array exceeds ~65k elements (unlikely for daily granularity but worth fixing).
  3. Blocked duration still uses `UpdatedAt` as proxy — needs separate audit tracking for block events.

Proposed Fix

  • Add repository methods that filter by column and date range at SQL level
  • Replace `Math.max(...spread)` with reduce-based max
  • Track block/unblock in audit log for accurate blocked duration

Parent

#77

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions