8cea7dee20
- SiteForge Enterprise V8.10.0-dev.1 upstream source (210 tests) - Fix: v8_workflows._mapped_input now reads both 类型/分类 columns so WXR imports keep post/product types instead of collapsing to page - Docs: trade-pro theme port spec (R3) and implementation plan Co-Authored-By: Claude Code <noreply@anthropic.com>
4.3 KiB
4.3 KiB
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:multipartfile、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 优先项
- 具备 Secret ID 轮换的认证 HTTP API(不接受明文凭据填在 URL 或日志中)。
- 数据库侧只读账号的 MySQL 白名单表/视图连接器,按 500 条分批及批次回滚。
- 通用映射 Schema、内容关系规范、批量导入进度、冲突审核 UI。
- 整站模板编辑器、可回滚草稿与页面响应式联动;最终 SFTP/S3 安全发布验收。
- GitHub 云端 CI、Docker PostgreSQL/Redis 迁移与运行验收;认证、容量、安全、重试及取消的完整故障注入。