-- plan_executions 字段整理(2026-07-22)
--
-- 删两列,都是「只进不出」的死字段:
--
--   invalid_reason  — **从没被写过**。pac-web 全项目零引用(SubmitExecutionBody 里就没这字段),
--                     后端有写入分支但入参恒 undefined;读回路径 plan.service 的 serializer 也没带它。
--                     配套的 outcome `marked_invalid` 已是 hiddenInForm 历史值,新建表单选不到。
--
--   abandon_other   — 写得进、没人读,且**信息恒冗余**。放弃原因 UI 是 6 个固定复选框、
--                     无自由文本输入,5 个映射到 enum,只有「其他」落空 → 该列只可能取到
--                     字面量"其他",而 abandon_reasons 里此时已含 'other'。
--                     补充说明本就该走 notes(通话纪要)。
--
-- abandon_reasons 暂留(入口窄:仅 outcome='refused';宿主回访模式下表单隐藏)。
-- 后续若做「结案原因收敛到 close_reason」,连同它一起处理。
--
-- 数据核对:生产 0 行受影响(执行总数 2,两列全空);本地 2 行 abandon_other='其他',
--          对应 abandon_reasons 均已含 'other',删除无信息损失。

ALTER TABLE "plan_executions" DROP COLUMN "invalid_reason";
ALTER TABLE "plan_executions" DROP COLUMN "abandon_other";
