# B2B Trade 2.1.0 清理记录

本文记录 2.1.0 已执行的清理和必须保留的兼容边界，后续维护不得重新引入已删除的运行路径。

## 已完成

### 联系流程

- 联系页只展示联系方式、营业时间和地图导航。
- 不注册前端提交处理、邮件发送、成功/失败状态或防重放字段。
- 服务入口统一跳转 `/contact/`，不拼接服务查询参数。
- 旧的附加查询参数不会影响页面访问，但主题不消费它。

### 前端依赖

- Bootstrap 5.3.8 固定在 `assets/vendor/bootstrap/`，包含 CSS、bundle JS 和许可证。
- `theme.js` 使用原生 DOM API。
- 外部视频只在新标签页打开，不解析视频域名、不生成 iframe。
- 字体使用系统英文/中文字体栈。
- 删除无消费者的通用重置包、弹窗样式与脚本聚合文件。

### 数据与初始化

- 初始化由 `fragrance_trade_schema_version` 控制。
- 7 个默认服务来自 `fragrance_trade_service_seeds()`，种子标识写入 `_fragrance_seed_key`。
- 写入失败会记录后台错误，当前迁移版本不会推进。
- 约定页面会复用已有内容和状态，只补齐页面模板。
- 用户已有的非发布页面不会被自动发布或恢复。
- 旧产品外观设置仅在旧站迁移时读取。

### 资源与样式

- 删除 7 张未被模板引用的旧产品位图。
- 删除未引用的 Logo 占位图。
- 保留汽车贴膜服务、门店、视频和案例的中性 SVG 占位图。
- 删除没有 PHP 或 JS 消费者的质量、流程、项目和定制板块配置与 CSS。
- 首页两个展示查询使用 `no_found_rows`。
- 默认值数组在单次请求内缓存。

### 安全与直接访问

- 所有主题 PHP 入口、模块和模板片段均检查 `ABSPATH`。
- 输出 URL、属性、纯文本和富文本继续按上下文转义。
- 视频新窗口链接使用 `noopener noreferrer`。
- 地图链接优先使用 `store_map_url`，否则仅根据非空地址生成。

## 保留的兼容接口

- 文本域：`fragrance-trade`
- PHP 函数前缀：`fragrance_trade_`
- CSS 前缀：`b2b-`
- 地图设置键：`store_map_url`
- 服务旧图片元数据：`_service_image`
- 旧安装识别选项：`fragrance_trade_setup_done`

这些标识符涉及已有站点数据或第三方定制，未经正式迁移方案不得全局改名或删除。

## 后续资源替换原则

- 运营图片应通过特色图片或外观配置上传，不写入主题默认数据。
- 默认主题包只提供中性占位素材。
- 新前端依赖必须本地打包、记录版本与许可证，并经过无外部请求扫描。
- 开发验证工具不应作为主题运行依赖进入生产请求路径。
