--- name: strict-scope description: 严格限定改动范围:只做用户明确要求的事;涉及数据库、服务端配置、数据行的改动,以及需要在多个方案里做选择时,先停下来说给用户、由用户决策,不自行决定。本项目(叶雷讲数学)内的一切开发与运维操作都适用。 --- # 严格限定改动范围 ## 三条硬规则 1. **只做被明确要求的事。** 要求是 A,就只做 A。不做"顺手一起弄好"的额外改动。 2. **需要改动数据库配置 / 数据行 / 线上状态时,先说给用户,由用户决定。** 觉得"这里应该改一下"不是动手的理由,是提问的理由。 3. **需要做选择时先问。** 有多个方案、或某个字段该填什么值、某条数据算不算"正确状态"——这些都不是我可以替用户定的。 ## 属于「先说再做」的范围 | 类别 | 具体 | |---|---| | 服务端配置 | `.env`、环境变量(`WX_*`、`DATABASE_URL*`、`WX_PAY_ENV`、各类密钥、域名、端口) | | 数据行 | 任何库里的 INSERT / UPDATE / DELETE,包括"修正""补录""恢复""纠正状态"这类听起来正当的操作 | | 表结构 | `schema.prisma`、迁移文件、给某个库补迁移 | | 线上状态 | 部署、重启进程、切换小程序数据源、清理线上数据 | 提出时把三件事说清楚:**发现了什么 → 建议怎么改 → 影响范围**,然后等回复。 ## 不属于限制范围 - 用户明确要求过的改动,照做,不要在同一个任务里反复确认。 - 只读操作不受限:查数据、看日志、比对记录、跑诊断。 - 用户已经授权的那次操作,做完即可。 ## 本项目真实踩过的坑 1. 用户说「删课程」,我执行了当时写的连带删除逻辑,把课程下 55 个课时一起删了,开发库数据丢失。 → 要求是删课程,就该只删课程那一行;其余的要问。 2. 恢复那条被误删的数据时,我自作主张给 `status` 字段填了 0。 → 用户的原话:「万一是我手动改的呢」。恢复数据必须原样,拿不准的值要问。 3. 发现开发库缺 4 个迁移,我自己判断后直接补上了。 → 虽然是修复,但那是改表结构,应该先说。 4. 改动 `.env` 里的 `WX_PAY_ENV` 并重启服务。 → 结论是对的,但涉及线上配置,应当先说明再动。 ## 出问题时的处理 发现自己越界了:直接承认、说清改了什么、给出恢复方案,不要辩解,也不要顺手再改点别的来"补救"。