vr-shopxo-plugin/docs/DEVELOPMENT_GUIDELINES.md

5.2 KiB
Raw Blame History

开发准则 — vr-shopxo-plugin

所有在此仓库工作的 agentCClaude Code、Council agents、subagent 等)必须严格遵守。 违反即为 P0 安全/质量事件。


一、铁律(绝对禁止违反)

1. 插件边界约束 🔴

禁止修改 ShopXO 核心文件,任何改动必须严格限定在插件目录内:

✅ 允许修改的范围
shopxo/app/plugins/vr_ticket/       ← 插件自身代码
docs/                               ← 项目文档
tests/                              ← 测试文件
.gitignore                          ← 版本控制配置

❌ 禁止修改(绝对禁区)
shopxo/app/                      ← 核心控制器、模型、服务(除 vr_ticket 插件)
shopxo/config/                   ← ShopXO 配置文件
shopxo/public/                   ← 静态资源、入口文件
shopxo/app/common.php            ← 核心公共函数(⚠️ 曾被误改,历史教训)
shopxo/app/event.php             ← 核心事件钩子文件(⚠️ 曾被误改,历史教训)
shopxo/app/index/controller/     ← 前台控制器
shopxo/app/admin/controller/     ← 后台控制器
shopxo/app/service/              ← 核心服务层
shopxo/app/model/                ← 核心模型层
shopxo/app/install/             ← 安装程序
shopxo/config/database.php       ← 数据库配置
shopxo/config/shopxo.php         ← ShopXO 主配置

最小化原则:即使在允许范围内,也应优先考虑 Hook/扩展点/插件配置,而不是直接修改文件。

例外:如确实需要修改 ShopXO 核心文件,必须:

  1. 在 commit 前向用户(@bigemon)明确说明改动内容和风险
  2. 获得用户书面同意chat message
  3. 改动后立即 commitcommit message 标注 [CORE-MODIFICATION]

2. 数据库操作 🔴

禁止直接修改数据库。任何数据库 schema 变更创建表、增删字段、索引、DROP 等)必须:

  1. 提出申请说明操作内容、原因、rollback 方案
  2. 用户二次审阅并明确同意
  3. 以 migration 文件形式提交(docs/migrations/database/migrations/),禁止直接执行 SQL

已规划的数据库操作(如有)须全部列在此文档末尾。

3. Docker 容器操作 ⚠️

禁止直接操作 Docker 容器内环境docker exec、修改容器内文件、挂载层覆盖等)。

  • 如需测试容器内行为:通过挂载目录的文件修改 + 容器重启实现
  • 如需紧急修复:先告知用户,获得同意后再执行
  • 所有 docker 操作应在 commit message 中记录

二、重要实践建议

4. 调试代码及时清理

  • 任何为了调试目的注入的临时代码(var_dump@file_put_contents('/tmp/debug.log')、临时 sed 注入、.bak 备份文件)调试完毕后必须立即删除
  • .bak.bak2 等备份文件禁止 commit
  • 调试用的临时文件(/tmp/*.log/tmp/co.php 等)不在 git 管理范围内,注意不要误 commit

5. Pre-commit 自检(必须执行)

每次 commit 前必须确认:

  • git status 确认改动范围,是否意外修改了 ShopXO 核心文件
  • .bak.bak2 等备份文件在暂存区
  • 无调试用的临时文件在暂存区
  • 改动与用户原始请求相关,无无关的"优化"或"格式调整"

6. Council / Subagent 行为约束

Council agents 和 Claude Code subagents 的 commit 行为必须约束在 feat/ 分支内,禁止自动 merge 或 push 到 main。输出文件reviews/plan.md)不应作为最终交付 commit应由主 agent 审阅后手动处理。

7. 配置文件隔离

  • 所有敏感配置数据库密码、API Key、frp token 等)必须写入 docs/PRIVATE_CONFIG.md(不 commit.env(已 gitignore
  • 禁止将真实密码写入代码或 commit message

三、已知特殊情况记录

已修改的 ShopXO 核心文件(需注意)

以下文件在历史中被修改过,当前仓库状态如下:

文件 状态 备注
shopxo/app/common.php 与官方源码一致 2026-04-23 调试注入已回退
shopxo/app/event.php 与官方源码一致 2026-04-23 调试注入已回退
shopxo/app/index/controller/Goods.php ⚠️ 有业务修改 item_type='ticket' 路由到 ticket_detail.htmlPhase 1 必需改动)
shopxo/app/service/AdminPowerService.php ⚠️ 有权限修改 ShopXO 后台权限服务(改动内容待确认)

注意:Goods.phpitem_type 路由是 Phase 1 必需的业务改动,已知例外,无需重复审阅。其他 ShopXO 核心文件应保持原样。

Docker 容器配置(勿直接修改容器内文件)

shopxo-php  →  /Users/bigemon/WorkSpace/vr-shopxo-plugin/shopxo  (挂载目录)
shopxo-mysql →  容器内 MySQL
shopxo-web   →  Nginx

调试时应修改宿主机挂载目录文件,然后重启容器。不要在容器内直接改。


四、违规处理

违反铁律1、2、3的行为

  • 主 agent 有权立即 rollback 并拒绝 merge
  • 视为 P0 安全事件,记录至 MEMORY.md 并通知用户

最后更新2026-04-24 by 西莉雅