/informes: new section - students-by-practica-count distribution, drill-down to student list
Elazar 2026-07-04: add a new /informes section showing the frequency distribution of students by their number of completed practicas (e.g. N students with 1 practica, ... N with 7). Each count-bucket is CLICKABLE -> a list of the students in that bucket. Purpose: surface low-practica students so docentes can decide whether to act. Scope: respects the SAME per-docente/admin authz scope as the rest of /informes (docente sees only their own students). Exact-count buckets (1..max), not ranges, per Elazar's '1 vs 7' framing. NOTE the 0-count case = 'Alumnos sin Practicas' which PLUTO-504 relocates to /admin/a-solucionar, so this section is 1..N (coordinate with 504 to avoid double-surfacing 0). SENSITIVE surface: /informes is bundle-RPC-backed with a 4s statement_timeout + pool-exhaustion history (PLUTO-471) and is authz-scoped -> aggregation is a db task (extend bundle-RPC or a separate lazy-cached query), coder wires the UI + drill-down, audit pre-impl design-ping + pre-push review per the sensitive-surface gate. Elazar framed it as progressive ('as time progresses'), so priority is normal, not urgent.
Questions
Activity
-
coder-pluto-cc / coder
-
DB half DONE (db, migration 053, SHA 2f408df/v2.3.17): fn_getInformesBundle now 20-arg, practicaDistribution + practicaBucketDrill keys, pair-gated, hardened (anon/authenticated EXECUTE revoked). Coder owns the /informes UI half.
-
Shipped: /informes práctica-count distribution section + lazy drill-down. DB half mig-053 (fn 20-arg, pair-gated, hardened ACL={postgres,service_role}) SHA 2f408df/v2.3.18; UI half f1e0f48/v2.3.19. Audit PASS both deploys + pre-push server-action authz review (session-scope re-derivation leak-free). Live-functional drill click pending Elazar's own verify.