List shows source column: site-level or type-level
Fallback: siteId rule first, then siteType rule
Save always creates site-level entry; load falls back to type-level if none exists
Click anywhere on header to toggle fold/expand
Right side shows '\u5c55\u5f00' or '\u6536\u8d77' text instead of tiny arrow icon
Drag handle icon stops click propagation to prevent accidental fold
Delete button uses stopPropagation to avoid triggering fold
Replace single threshold+minRatio with levels array
Card header: \u4e0b\u8f7d\u91cf\u5206\u7ea7\u63a7\u5236\uff082\u7ea7\uff09
Card body: editable rows with add/delete buttons per level
Default preset: 100GB\u21921.0, 500GB\u21922.0, 1000GB\u21923.0
Auto-migrate old single-value format on load
Applicable is preset-defined, not editable on card
Shown as grey tag after action label: \u5c01\u53f7/\u5220\u9664\u8d26\u53f7 (\u975e\u5c01\u5b58\u8d26\u53f7)
Remove applicable dropdown from card body, onApplicableChange handler
Sort order: EXEMPT \u2192 TASK \u2192 HD \u2192 KILL \u2192 RATIO \u2192 DRATIO \u2192 TRAFFIC
Each rule shown as natural language sentence with applicable condition
TASK shows only enabled requirements
Regardless of card drag order, summary always displays in fixed sequence
Each requirement has an el-switch; disabled items grey out and input is locked
Sites can pick only the conditions they need (e.g. upload+download only)
More accurate than '\u964d\u7ea7\u81f3Peasant': user is demoted regardless of rank, then killed after 7 days
Template dialog: '\u7f13\u52117\u5929' instead of '\u964d\u7ea7'
- Low ratio \u2192 demote to Peasant \u2192 kill after 7 days, not immediate kill
- Orange arrow + '\u964d\u7ea7\u81f3Peasant' label instead of red '\u5c01\u53f7/\u5220\u9664\u8d26\u53f7'
- Card body shows full explanation: \u4f4e\u4e8e\u6b64\u5206\u4eab\u7387\u5219\u964d\u7ea7\u81f3Peasant\uff0c7\u5929\u540e\u5c01\u53f7/\u5220\u9664\u8d26\u53f7
- Template dialog also shows '\u964d\u7ea7' label for RATIO/DRATIO presets
- 10 standard PT ranks: Peasant(0) \u2192 Nexus Master(9)
- Dropdown shows \u201c3. Elite User\u201d format with level and name
- Card header and template dialog also show level numbers
- Default preset: Elite User for perm, Power User for seal
- Opposite of kill rules: protects users instead of deleting them
- permRank: users at/above this rank permanently immune from all cleanups
- sealExemptRank: users at/above this rank won't be killed when sealed
- Green left border + green '\u4fdd\u53f7' label to visually distinguish from kill rules
- Template: Elite User for perm, Power User for seal exemption
- LOGIN type duplicated with KILL (both use days_since_last_login)
- KILL label: \u5c01\u53f7\u89c4\u5219 \u2192 \u6d3b\u8dc3\u5ea6 (action is always \u5c01\u53f7/\u5220\u9664\u8d26\u53f7, type now describes monitoring category)
- Replace editable name/metric/condition/unit with plain text in card header
- Card header shows: [type] [metric label] [condition label] [threshold][unit] \u2192 \u5c01\u53f7
- Type change auto-updates metric/condition/unit via typeDefaults mapping
- Card body only shows: threshold, applicable, description
- Fix edit title to show site name instead of raw siteType
- Remove unused styles and functions
- WARN is auto-detected by RiskCheckEngine (riskPct > 80), not configured in rules
- Each rule simply defines: type + metric + condition + threshold + unit -> 封号
- Card always shows red left border and red '封号' arrow, no action selector
- Presets reduced to 7 kill-only templates, no WARN presets
- Replace complex type system (DEMOTE/TASK) with simple KILL/WARN action model
- Each rule now has: type (monitoring category) + action (KILL=封号 / WARN=告警)
- Type options: KILL/TRAFFIC/LOGIN/HD/RATIO (no DEMOTE/TASK)
- Card left border color by action: red=KILL, orange=WARN
- 12 preset templates with alert-based rules (60-day no-traffic warn, 140-day login warn, HnR warn, ratio warn)
- Remove requirements sub-table and downloadThreshold fields