47 lines
4.3 KiB
Markdown
47 lines
4.3 KiB
Markdown
|
|
# SiteForge Enterprise V8.4.0-dev.1 — P3 XML / 公开 HTTP API 连接器
|
|||
|
|
|
|||
|
|
## 本次实际完成
|
|||
|
|
|
|||
|
|
本版本基于 V8.3 完整项目继续开发,保留四套主题、WordPress P2 迁移工作台、V8 暂存批次、Worker、网站构建与 SEO 审核。
|
|||
|
|
|
|||
|
|
| 项目 | 代码交付 | 适用边界 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| XML 文件导入 | `app/connectors_v84.py` `parse_xml_records`,认证上传 API 和控制台 | 1–8 MB,最多 1000 个 `record_tag`,扁平/两层记录,禁止 DTD/XXE,节点深度/数量/字段值限制 |
|
|||
|
|
| 公开 HTTP API | 创建受限 HTTPS JSON 数据源,定义 `data.items` 等 JSON 路径、分页、字段映射 | **仅公开、不需要令牌的 JSON API**;不接受登录凭据、表单登录或用户自定义脚本 |
|
|||
|
|
| Worker 采集 | `kind=api_scan` 使用既有租约 Worker 子进程,超时、取消、有限次数重试 | 单次最多 50 页、每页最多 100 项,总计 5000 项;当前不使用任意下一页 URL |
|
|||
|
|
| 断点续跑/幂等 | `v84_api_pages` 逐页持久化检查点,重试查找之前已暂存的页面批次 | 分页按页码稳定顺序;若上游 API 对同一页改变数据,需重新建立数据源做差异验证 |
|
|||
|
|
| 批次安全 | 所有采集只产生 `staged`,沿用 V8 的冲突预览、人工提交、手工修改保护和回滚 | **采集完成不自动入库**,更不自动构建或发布 |
|
|||
|
|
| 网站后台 | `/production-v8` 加入 XML 上传、API 配置、提交/取消、查看数据源进度 | `limit_reached` 表示达到页数上限,不应被理解为全量采集完成 |
|
|||
|
|
| 认证 | 全部新接口复用现有 Session、CSRF、站点权限检查 | 管理员需保障来源合法授权、数据质量和个人信息合规 |
|
|||
|
|
|
|||
|
|
## API
|
|||
|
|
|
|||
|
|
- `POST /api/connectors/sites/{site_id}/xml/staging`:multipart `file`、`record_tag`、`content_type`、`mapping_json`。
|
|||
|
|
- `POST /api/connectors/sites/{site_id}/api-sources`:JSON 配置公开 HTTPS JSON API,支持 `url`、`items_path`、`page_param`、`per_page_param`、`page_size`、`max_pages`、`mapping`、`content_type`。
|
|||
|
|
- `GET /api/connectors/sites/{site_id}/api-sources`:数据源列表。
|
|||
|
|
- `GET /api/connectors/sites/{site_id}/api-sources/{source_id}`:检查点和暂存批次。
|
|||
|
|
- `POST /api/connectors/sites/{site_id}/api-sources/{source_id}/scan`:提交 Worker 采集,可传 `idempotency_key`。
|
|||
|
|
- `POST /api/connectors/sites/{site_id}/api-sources/{source_id}/cancel`:标记源取消并请求取消相关 Worker 任务。
|
|||
|
|
|
|||
|
|
## 安全限制
|
|||
|
|
|
|||
|
|
外部请求沿用 `app/safe_http.py`:固定安全 DNS 解析的公网 IP、校验证书、阻止内部/保留地址及重定向(`redirects=0`)、限制默认 HTTPS 端口、20 秒单请求超时、2 MB JSON 响应大小。XML 通过 `defusedxml` 禁止 DTD/实体并进行整体结构上限检查。来源 URL 拒绝常见令牌参数,且**不接受认证请求头**。
|
|||
|
|
|
|||
|
|
不允许任意 SQL/代码执行。数据库侧 **MySQL 只读连接器没有在本轮交付**,需下一阶段使用受限数据库账号、TLS、白名单视图、参数化列选择并在容器化夹具中验收。
|
|||
|
|
|
|||
|
|
## 本地已执行验收
|
|||
|
|
|
|||
|
|
- 144 项自动化测试通过,含新增 14 项 XML/API/Worker/安全/权限/断点续跑测试。
|
|||
|
|
- `python scripts/verify_release.py` 通过,Python 源码编译与 Node JavaScript 语法检查通过。
|
|||
|
|
- V8.4 管理控制台的接口使用 TestClient 验证了登录、CSRF、XML 上传和 API 数据源创建。
|
|||
|
|
|
|||
|
|
**尚未验收:** Docker 实机启动、官方 Art Design Pro 编译、云端 GitHub CI 执行、真实公开 API 连续采集(当前以固定虚构服务响应做确定性测试)、大批量吞吐、外部网络故障场景、多服务器发布和实际 MySQL 数据库安全测试。因此该版本仍为开发/试点候选版,而不是已交付企业生产的终版。
|
|||
|
|
|
|||
|
|
## 后续 P3/P4/P5 优先项
|
|||
|
|
|
|||
|
|
1. 具备 Secret ID 轮换的认证 HTTP API(不接受明文凭据填在 URL 或日志中)。
|
|||
|
|
2. 数据库侧只读账号的 MySQL 白名单表/视图连接器,按 500 条分批及批次回滚。
|
|||
|
|
3. 通用映射 Schema、内容关系规范、批量导入进度、冲突审核 UI。
|
|||
|
|
4. 整站模板编辑器、可回滚草稿与页面响应式联动;最终 SFTP/S3 安全发布验收。
|
|||
|
|
5. GitHub 云端 CI、Docker PostgreSQL/Redis 迁移与运行验收;认证、容量、安全、重试及取消的完整故障注入。
|