Jesse_Chen and Claude Opus 5.5
d0bfc1fc3d
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
2026-09-26 15:36:29 +08:00
..
2026-07-15 22:23:17 +08:00
2026-07-15 22:23:17 +08:00
2026-07-15 22:23:17 +08:00
2026-07-15 22:23:17 +08:00
2026-07-15 22:23:17 +08:00
2026-07-15 22:23:17 +08:00
2026-07-17 11:56:29 +08:00
2026-07-17 13:42:50 +08:00
2026-07-17 16:19:11 +08:00
2026-07-18 18:40:23 +08:00
2026-07-18 18:40:23 +08:00
2026-07-18 18:40:23 +08:00
2026-07-18 18:40:23 +08:00
2026-07-18 18:40:23 +08:00
2026-07-18 21:32:42 +08:00
2026-07-18 21:32:42 +08:00
2026-07-18 21:32:42 +08:00
2026-07-19 14:46:57 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 06:42:17 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 07:20:40 +08:00
2026-07-19 09:12:45 +08:00
2026-07-19 09:12:45 +08:00
2026-07-19 14:46:57 +08:00
2026-07-19 14:46:57 +08:00
2026-07-19 14:46:57 +08:00
2026-07-19 17:10:52 +08:00
2026-07-20 16:52:53 +08:00
2026-07-20 14:58:57 +08:00
2026-07-21 05:23:51 +08:00
2026-07-20 23:11:01 +08:00
2026-07-21 05:57:30 +08:00
2026-07-21 11:58:42 +08:00
2026-07-21 14:16:54 +08:00
2026-07-21 12:15:12 +08:00
2026-07-21 22:16:18 +08:00
2026-07-21 22:16:18 +08:00
2026-07-22 00:07:42 +08:00
2026-07-22 00:55:03 +08:00
2026-07-22 12:28:55 +08:00
2026-07-22 17:39:11 +08:00
2026-07-22 17:39:11 +08:00
2026-07-23 13:12:09 +08:00
2026-07-23 14:26:35 +08:00
2026-07-23 14:58:56 +08:00
2026-07-25 02:08:10 +08:00
2026-07-25 01:17:14 +08:00
2026-07-25 01:17:14 +08:00
2026-07-25 02:08:10 +08:00
2026-07-25 11:50:41 +08:00
2026-07-25 13:51:54 +08:00
2026-07-26 13:14:14 +08:00
2026-07-27 09:57:14 +08:00
2026-07-28 13:04:30 +08:00
2026-07-28 13:04:30 +08:00
2026-07-29 17:49:19 +08:00
2026-07-30 00:41:48 +08:00
2026-07-30 10:55:39 +08:00
2026-07-31 06:13:47 +08:00
2026-07-31 13:17:00 +08:00
2026-07-31 15:09:03 +08:00
2026-08-01 02:20:00 +08:00
2026-08-04 11:39:33 +08:00
2026-08-04 16:47:23 +08:00
2026-08-05 11:13:34 +08:00
2026-08-05 11:13:34 +08:00
2026-08-05 11:13:34 +08:00
2026-08-06 20:15:08 +08:00
2026-08-06 12:43:10 +08:00
2026-08-06 20:15:08 +08:00
2026-08-06 20:15:08 +08:00
2026-08-06 20:15:08 +08:00
2026-08-06 20:15:08 +08:00
2026-08-06 20:15:08 +08:00
2026-08-07 12:55:32 +08:00
2026-08-07 18:24:16 +08:00
2026-08-07 20:03:20 +08:00
2026-08-08 12:20:26 +08:00
2026-08-08 14:31:40 +08:00
2026-08-08 21:34:03 +08:00
2026-08-11 00:10:24 +08:00
2026-08-11 11:59:14 +08:00
2026-08-11 17:57:40 +08:00
2026-08-11 23:49:44 +08:00
2026-08-12 01:05:36 +08:00
2026-08-11 16:18:53 +08:00
2026-08-11 17:57:47 +08:00
2026-08-12 09:28:47 +08:00
2026-08-12 15:33:04 +08:00
2026-08-12 21:21:26 +08:00
2026-08-13 15:48:17 +08:00
2026-08-14 00:10:22 +08:00
2026-08-14 16:52:35 +08:00
2026-08-14 22:49:18 +08:00
2026-08-15 05:10:37 +08:00
2026-08-15 00:56:06 +08:00
2026-08-15 05:10:37 +08:00
2026-08-15 06:04:23 +08:00
2026-08-15 06:04:23 +08:00
2026-08-15 17:50:51 +08:00
2026-08-16 16:55:09 +08:00
2026-08-16 17:55:15 +08:00
2026-08-17 10:25:16 +08:00
2026-08-18 17:28:22 +08:00
2026-08-19 07:44:23 +08:00
2026-08-20 08:35:46 +08:00
2026-08-20 09:11:54 +08:00
2026-08-20 11:04:55 +08:00
2026-08-20 15:58:28 +08:00
2026-08-22 20:48:01 +08:00
2026-08-23 17:21:49 +08:00
2026-08-23 22:41:01 +08:00
2026-08-24 08:22:01 +08:00
2026-08-24 18:38:05 +08:00
2026-08-24 21:26:57 +08:00
2026-08-25 19:02:35 +08:00
2026-08-26 17:19:26 +08:00
2026-08-26 17:19:26 +08:00
2026-08-26 20:21:49 +08:00
2026-08-27 13:59:38 +08:00
2026-08-27 16:40:47 +08:00
2026-08-30 15:55:45 +08:00
2026-08-30 22:59:17 +08:00
2026-08-31 03:37:44 +08:00
2026-08-31 19:57:08 +08:00
2026-09-01 19:51:19 +08:00
2026-09-01 21:38:21 +08:00
2026-09-02 19:55:20 +08:00
2026-09-03 09:29:34 +08:00
2026-09-03 16:33:46 +08:00
2026-09-04 19:17:14 +08:00
2026-09-05 11:10:44 +08:00
2026-09-06 15:16:18 +08:00
2026-09-07 09:10:37 +08:00
2026-09-07 09:10:37 +08:00
2026-09-07 11:08:00 +08:00
2026-09-07 12:18:50 +08:00
2026-09-09 11:01:15 +08:00
2026-09-10 11:57:07 +08:00
2026-09-15 17:10:53 +08:00
2026-09-16 07:41:41 +08:00
2026-09-16 01:35:01 +00:00
2026-09-20 12:58:34 +08:00
2026-09-20 18:03:38 +08:00
2026-09-21 02:55:00 +08:00
2026-09-21 02:55:00 +08:00
2026-09-21 18:49:40 +08:00
2026-09-25 02:04:56 +08:00
2026-09-25 04:19:05 +08:00
2026-09-25 20:41:16 +08:00
2026-09-25 20:41:16 +08:00
2026-09-26 15:36:29 +08:00