# Backend Design: ECR-019 ContentSafety | ID | BD-2026-019 | | Status | Approved | | Coding | Loop authorized | | Level | L2 | | Migration | YES 000020 | ## Backend Change Boundary ```text Domain: FilterRule (read) + evaluate (no ModerationCase write) App: AdminHandler → admin.Service → AdminRepo API: GET /admin/content-safety/filter-rules[+/:id] POST /admin/content-safety/evaluate Permission: admin.content_safety.read Migration: 000020 table + seed + perm UI: admin-h5 /safety ``` ## Out of boundary ModerationCase · CrisisPolicy write · UGC · Payment · external moderation vendor Rollback: down migration + remove routes/UI