问题域/PD-163

软删除模式

Soft Delete Pattern

用标志位替代物理删除,保留数据完整性并支持关联数据的优雅降级

子问题

1.is_deleted 标志位设计

2.关联数据级联处理

3.查询默认过滤已删数据

4.防止僵尸数据复活

5.订阅者感知删除状态

6.幂等迁移执行:ALTER TABLE 重复执行的错误静默处理

7.防僵尸查询设计:部分查询故意不过滤 is_deleted 以支持存在性检查

各项目的解法1 solutions

Signals

横向对比

维度ClawFeed
删除策略标志位软删除:is_deleted + deleted_at 双字段,UPDATE 替代 DELETE
查询过滤listSources 硬编码 is_deleted=0,getSourceByTypeConfig 故意不过滤
级联处理订阅关系保留不删,JOIN 携带 is_deleted 字段,前端降级展示
防僵尸机制Pack 安装时检查 existing.is_deleted,已删源 continue 跳过不复活
审计支持deleted_at 记录 UTC 时间戳,迁移幂等可重复执行
前端感知sourceDeleted 布尔字段驱动灰色半透明卡片 + 已停用标签

最佳实践

1.UPDATE 替代 DELETE 保留审计轨迹

2.查询 WHERE 默认加 is_deleted=0

3.Pack 安装跳过已删源防僵尸

4.迁移脚本逐语句 try-catch,duplicate column 错误静默忽略实现幂等

5.前端已删数据用 opacity+grayscale+pointer-events:none 降级展示