Files
cms-SiteForge/docs/V8_4_RELEASE_STATUS.md
T
浅念 8cea7dee20 chore: baseline V8.10.0-dev.1 with v8_workflows type-mapping fix and trade-pro spec
- 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>
2026-10-22 16:49:25 +08:00

47 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 迁移与运行验收;认证、容量、安全、重试及取消的完整故障注入。