feat(rectification): anonymous aggregate telemetry + admin summary page
One row per rectification Case, written once when the range card is first delivered (GET /api/rectification/cases/[caseId], fire-and-forget after the response is built). Numbers and closed enums only: no user / case / session id, birth data, names, text or timestamps finer than the ISO week. Dedupe via a separate case_id ledger that cascades with the Case (and account deletion). Migration 20260926010000 is additive: two RLS tables with no runtime table grants, SECURITY DEFINER write (service_role), purge (service_role) and aggregate-only summary (admin_runtime) functions; 180-day retention. Admin: 「校正统计」 page + GET /api/admin/rectification-telemetry (admin.customers.read), aggregates only, no per-row view or export. TASK-rectification-telemetry-20260926. test:db not run locally (no Docker). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f74825a27c
commit
d0bfc1fc3d
@@ -671,6 +671,12 @@ admin page — so nothing here inherits the tokens above.
|
||||
sanctioned exception to the no-raw-color rule.
|
||||
- **Content width:** 1200px centred, set by antd layout, not by `.admin-scroll`.
|
||||
- **Loading:** antd `<Spin>`, outside the waiting vocabulary in section 9.
|
||||
- **Aggregate pages (「校正统计」, 2026-09-26):** built only from antd `Card`,
|
||||
`Statistic`, `Table`, `Progress` and `Segmented` — no chart library and no new
|
||||
class. Distributions are a table whose last column is a small `Progress` bar;
|
||||
the weekly trend is a table, not a line chart. The page states in its header
|
||||
card that it is anonymous, summary-only (no per-row view or export) and kept
|
||||
for 180 days.
|
||||
|
||||
## 6. Motion & Interaction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user