=== 问道餐饮 · 连接器（Sixiang Canyin Connector）===
Contributors: dadao-institute
Tags: restaurant, menu, connector, rest-api, installer
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 8.0
Stable tag: 0.1.2
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

极小连接器：让「问道餐饮」手机 APP 在你自己的 WordPress 站上远程安装/激活/更新「电子菜单」主插件。

== Description ==

WordPress 核心的 REST API 不支持直接上传安装任意插件。本连接器补上这一环：餐馆老板
在自己的站点手动安装本连接器一次（唯一手动步骤），此后「问道餐饮」手机 APP 即可凭
管理员的「应用密码」远程完成主插件（sixiang-canyin，多语言电子菜单）的安装、激活与更新，
随后经主插件的 sxcy/v1/manage/* 管理接口完成初始化与日常运营。

= REST 端点（命名空间 sxcy-connector/v1）=

权限门：`install_plugins`（管理员，经 Application Passwords 的 Basic-Auth 认证，需 HTTPS）。

* `GET  /status`   —— 站点/连接器/主插件状态（是否已装/激活/版本、来源地址、SSL）。
* `POST /install`  —— 安装并激活主插件。入参：`source_url`（下载地址，可选，管理员可信）、
  `zip_base64`（直传 ZIP，可选，离线/自分发时用）、`activate`（默认 true）、`overwrite`（默认 false）。
* `POST /update`   —— 覆盖重装最新版（保留数据表）。
* `POST /activate` —— 仅激活已安装的主插件。

= 安全 =

* 所有写端点权限门为 `install_plugins`；仅安装白名单 slug（sixiang-canyin），安装后校验目标主文件确已就位。
* 来源 URL 默认硬编码中央分发地址；仅管理员可经参数覆盖，覆盖值记为选项。
* 不新增数据表、不采集任何数据；卸载即净。

== Installation ==

1. 上传 `sixiang-canyin-connector` 到 `/wp-content/plugins/`，或后台上传本 ZIP。
2. 激活。
3. 在「用户 → 个人资料 → 应用程序密码」为管理员生成一枚应用密码。
4. 在「问道餐饮」手机 APP 中输入站点地址 + 管理员用户名 + 该应用密码，APP 即会经本连接器自动安装电子菜单主插件并完成初始化。

== Changelog ==

= 0.1.2 =
* 修复 `/update` 端点不生效（返回 already_installed、未升级）：0.1.1 用 `set_body_params` 传 overwrite，但 install 从 `get_json_params()` 读不到——改为 `sxcyc_install()` 接受显式 `$force_overwrite` 参数，`/update` 直接传 true。G1 就地升级测试（dev1: 0.18.2→0.19.1）发现并修复。

= 0.1.1 =
* 认证兜底：多层代理（nginx→Apache→PHP-FPM 等）常剥离标准 Authorization 头导致应用密码认证失效——与主插件一致，现支持 APP 用自定义头 `X-SXCY-Authorization`（值同 `Basic base64(用户名:应用密码)`）携带管理员应用密码，插件用 WP 校验器认证。仅未认证时介入，仍需 install_plugins 权限。

= 0.1.0 =
* 首版：sxcy-connector/v1 的 status / install / update / activate 端点；支持从来源 URL 下载或直传 base64 ZIP；install_plugins 权限门 + 白名单 slug + 安装后校验。
