Files
cms-SiteForge/docs/SiteForge_V2_Architecture.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

42 KiB
Raw Blame History

SiteForge 智能网站生产工厂

完整产品需求与技术架构方案(PRD + Architecture + Implementation Plan)
版本:V2.0(对 V1.0“通用多站点迁移与静态建站平台”的定位升级)
日期:2026-10-21
状态:产品与研发规划版
适用:产品经理、设计师、前后端研发、测试、运维、Claude 等编程助手


0. 核心定义与产品定位

SiteForge 不只是旧网站迁移工具,而是“网站工厂(Website Factory)”:以模板、数据、页面结构和站点配置为原材料,经过装配、构建、验证和发布,持续生产完全独立的网站。

网站可以:

  1. 旧站改造:从 WordPress、其他 CMS、自研 PHP 或普通网站导入既有内容,选用全新主题,保留旧站 SEO 和 URL,重建设计不同的静态网站。
  2. 模板建站:没有旧站,选择行业模板,填入企业资料、Logo、产品、文章和媒体文件,直接形成新站。
  3. 数据建站:从 Excel/CSV/JSON/XML、API、数据库或图片资料批量导入新内容,自动建立内容类型和页面,匹配模板生成网站。
  4. 自由建站:从空白项目开始创建导航、页面、区块、数据集合、主题和页面规则;最终保存为可复用的新模板。
  5. 混合建站:上述方式可自由组合,例如“旧站文章 + 新 Excel 产品 + 新模板 + 自定义页面”。

统一原则:内容和视觉彻底分离,迁移和新建使用同一个内容模型、页面装配器、静态构建器、质量检测及发布系统。

0.1 产品成功标准

  • 非迁移用户也能完整创建、编辑、构建并发布一个新网站。
  • 旧站迁移不是复制旧视觉,而是按“内容映射 → 新主题 → 全新网站”装配。
  • 同一份数据可以切换不同主题、重复构建;主题切换不得无故删除内容。
  • 一份设计可以保存为模板;模板升级不能未经确认覆盖站点定制内容。
  • 多网站独立运行、互不影响;输出静态文件后生产站不依赖中心平台在线。
  • 迁移站保留需要保留的 URL、SEO、链接和媒体访问行为;全新站可自由制定 URL/SEO 策略。
  • 导出物有真实 HTML/CSS/JS/媒体、必要的路由/重定向/服务器配置,而非只提供开发框架项目。

0.2 非目标与边界

  • 不是承诺对任何公开 URL 一键获得不可见的后台、私有数据或完整业务代码。
  • 不是将所有交互功能硬转为静态 HTML;账号、支付、订单、实时库存、复杂搜索等需要独立 API/服务。
  • 不是初期一次性建成可对任意复杂页面精准拖拽设计的通用 Webflow 类编辑器。
  • 不保证迁移后搜索排名零波动;系统负责风险降低、可追溯验证和监测。

1. 四大建站入口与混合生产工作流

模式 起始条件 用户主要步骤 输出
A 旧站重建 有旧网站 识别旧站 → 导入内容/SEO/URL → 选主题 → 映射 → 预览 → 构建 → 发布 新设计的独立网站
B 模板新建 无旧站 选行业模板 → 填公司信息 → 导入或新增内容 → 配置栏目 → 预览 → 发布 全新网站
C 数据驱动 有 Excel/API/数据库 导入数据 → 字段映射 → 生成内容集合 → 选模板 → 自动建立列表/详情页 → 发布 数据驱动批量页面网站
D 空白搭建 需要自主设计 创建站点 → 可视化组装页面 → 配置设计变量/数据 → 预览 → 发布 → 沉淀为模板 定制网站与可复用模板

1.1 “继续生产”能力

网站创建完后可继续:新增文章和产品、批量导入新数据、替换 Banner、维护多语言、增删栏目、修改 SEO、调整主题样式、升级组件、局部/全站重建、回滚到旧版本。迁移任务完成不等于站点项目结束。

1.2 三个关键产品动作

  • Create Site:从空白、模板或克隆既有站点结构新建。
  • Import Content:随时将旧站、文件、API 等数据导入现有站点,映射、去重、合并和校验。
  • Build & Publish:将某一明确的数据版本 + 主题版本 + 站点配置打包成可追溯静态发布版本。

不能把“导入网站”与“创建网站”绑定成一对一:一个站点允许多个数据源,一个数据源也可按授权复用到多个站点。


2. 总体架构:三条输入管线、一个生产流水线

flowchart TB
  subgraph Inputs[网站生产输入]
    I1[旧站导入:WP/CMS/PHP/HTML]
    I2[新内容导入:Excel/CSV/JSON/API/媒体]
    I3[从零创建:内容编辑器/页面编辑器]
  end
  subgraph Core[SiteForge 网站工厂控制中心]
    C1[通用内容中心 / 媒体中心]
    C2[模板市场 / 主题设计系统]
    C3[页面编辑器 / 页面装配规则]
    C4[网站蓝图 Site Blueprint]
    C5[URL / SEO / 多语言规则]
    C6[任务引擎 / 版本 / 权限]
  end
  subgraph Pipeline[网站生产流水线]
    P1[数据校验与字段映射]
    P2[站点装配与路由解析]
    P3[静态构建 HTML/CSS/JS]
    P4[预览 / SEO / 功能 / 链接检查]
    P5[发布 / ZIP 导出 / 回滚]
  end
  I1 --> P1
  I2 --> P1
  I3 --> C1
  P1 --> C1
  C1 --> C4
  C2 --> C4
  C3 --> C4
  C5 --> C4
  C6 --> C4
  C4 --> P2 --> P3 --> P4 --> P5
  P5 --> S[独立运行的网站 A / B / C ...]

2.1 控制面与生产面分离

控制面:SiteForge 后台、API、数据/媒体资产、模板、采集、构建任务、发布/审核。生产面:各网站独立的静态文件/CDN/Nginx 与可选独立业务 API。线上网站运行不要求 SiteForge API 或数据库常驻可用。

2.2 “网站”并不是“主题”

一个网站由以下因素组合:

Website Release =
    Site Configuration
  + Site Blueprint (页面/栏目/菜单/区块/路由规则)
  + Theme & Component Version
  + Content Snapshot
  + Asset Snapshot
  + SEO & Redirect Rules
  + Environment & Build Settings

这是保证可重复构建、主题更换和版本回滚的核心公式。


3. 关键领域模型(必须从第一天设计好)

3.1 Site(站点)

唯一站点 ID、站点类型、语言/地区、域名、环境、数据源、主题引用、权限、发布策略。

3.2 Site Blueprint(网站蓝图)

蓝图描述网站结构而不是内容本身:

  • 页面树:主页、关于我们、联系方式、服务、产品、新闻、品牌、活动等。
  • 导航树:顶部主导航、Mega Menu、页脚、移动导航。
  • 页面类型:普通静态页、内容集合列表、集合详情、分类聚合、专题页。
  • 路由规则:固定页 slug、列表分页、产品 URL 格式、语言前缀。
  • SEO 规则:title 模板、canonical、sitemap/noindex、结构化数据类型。
  • 区块编排:Banner、产品网格、优势、表单、统计、FAQ、CTA 等。
  • 设计变量:品牌色、字体、布局宽度、间距、圆角、响应式断点。
  • 模板绑定:哪个页面类型使用哪套布局及组件。
  • 功能扩展:搜索、询盘、表单、在线聊天、外部 API 等。

站点蓝图可以从模板初始化,也可以由编辑器独立创建;保存之后属于站点自身,主题升级不得悄悄覆盖人工更改。

3.3 Content Type(内容类型)与 Entry(内容条目)

内容中心不能硬编码只支持“文章”和“产品”,应支持动态类型:

  • 默认类型:Page、Post、Product、Category、Brand、Service、Case、FAQ、Team、Download。
  • 自定义内容类型:如汽车的 Vehicle、工业管材的 Pipe、房地产的 Property。
  • 字段定义:短文本、富文本、数字、布尔、日期、枚举、关系、数组、媒体、SEO 字段、多语言字段、引用。
  • 校验规则:是否必填、唯一性、格式、单位、可搜索/筛选、跨字段规则。
  • 数据状态:draft / review / published / archived;版本和来源可追踪。

3.4 Theme(主题)/ Template(页面模板)/ Component(组件)

  • 主题 Theme:完整设计风格及组件集合、页面模板、响应式规则、设计 Token。
  • 页面模板 Page Template:例如首页、产品列表、产品详情、文章详情、专题落地页。
  • 组件 Component:Hero、图片网格、产品卡、参数表、图文交错、导航栏、页脚等。
  • 主题实例 Theme Instance:某站点在主题基础上的参数覆盖与自定义区块配置。

3.5 Route Registry(路由注册表)

一切最终发布 URL 的唯一事实源:site_id + method + normalized_path + locale + route_behavior;必须记录来源及冲突处理,不能仅由标题推断路径。


4. 模板工厂:不仅选模板,还要生产模板

4.1 模板分类

  • 行业模板:汽车出口、工业品、制造业、外贸 B2B、企业介绍、服务类、资讯类。
  • 页面模板:首页、列表、详情、关于、联系、新闻、案例、FAQ、落地专题等。
  • 区块库:Hero、统计、产品参数、网格、时间线、客户评价、团队、展会等。
  • 布局方案:顶部导航、侧边导航、全宽、多列、自适应等。

4.2 模板选择体验

每个主题展示 PC/移动端预览、适合行业、支持的内容类型、内置页面数量、菜单形态和可编辑范围。选择主题后运行 compatibilityCheck,提示当前内容是否满足主题必需字段,并提供字段映射或替代组件选项。

4.3 模板来源

  1. 平台预置主题。
  2. 开发人员以标准主题 SDK 编写并注册主题。
  3. 在设计器中制作页面,保存为模板或区块。
  4. 从现有网站复制结构/设计配置作为新项目起点,不自动复制私有数据。

4.4 防止主题与数据耦合

主题只能根据语义接口取数据,例如 products.featured、company.name、posts.latest。不能把某个具体产品、域名或 WordPress ID 硬编码进主题组件。

4.5 模板升级

主题使用不可变版本号。站点自行选择是否升级;升级前进行数据兼容性检测和区块差异预览;不支持自动合并的站点私有修改应手动解决。


5. 可视化建站编辑器(分级实现)

5.1 编辑器 V1:区块式编辑

支持:增删页面、排列标准区块、替换组件样式、设定图片/文案/数据引用、编辑导航与页脚、调整设计 Token、切换 PC/平板/手机预览、草稿/审核/发布。

5.2 编辑器 V2:结构化可视化编排

支持:嵌套容器、列布局、响应式属性、条件显示、组件插槽、集合绑定、重复列表、页面模板编辑和全站设计系统管理。

5.3 编辑器 V3(可选):高级自由设计

高级拖拽、交互动效、定制脚本、组件市场等;需严格控制任意 HTML/JS 注入与主题兼容问题。

不建议 V1 开发任意像素拖拽引擎。 先用区块式编辑器建立高复用度和稳定构建体验;高级主题仍允许开发者编写独立代码。

5.4 主题自由度分级

  • L1 配置型:换色、Logo、素材和文案即可上线。
  • L2 区块型:调整首页和内页的组件排列及内容映射。
  • L3 高级定制型:独立开发主题,完全自定义 HTML、样式、交互和布局。

这避免为了统一拖拽而让不同网站“长得一样”。


6. 内容工厂:手动、批量、API 与旧站多源输入

6.1 数据输入管道

输入渠道 典型数据 数据处理
后台手动新增 文章、产品、服务、页面 表单编辑和字段校验
Excel / CSV 车型、价格、参数、批量产品 预览字段、列映射、类型推断、增量更新
JSON / XML 第三方结构化数据 schema 映射、字段转换、关系解析
API / Webhook ERP、CRM、内部商品系统 授权连接、定时/手动同步、冲突策略
SQL / 备份 原数据库内容 隔离解析、适配映射、数据脱敏
WordPress XML/API 文章、产品、分类、meta WordPress 插件与字段适配器
通用网站抓取 公开页面、SEO、图片、菜单 页面发现、JS 渲染、去噪和人工确认
媒体 ZIP / 对象存储 图片、PDF、视频 去重、批量命名和资源引用映射

6.2 通用导入工作台

选择数据源 → 预览 → 识别内容类型 → 字段映射 → 数据清洗 → 去重/冲突策略 → 导入模拟运行(dry-run) → 确认入库 → 验证关联与资源 → 保留导入快照。

支持“仅新增”“按唯一键更新”“新增+更新”“人工审核冲突”;默认不得直接覆盖人工编辑过的字段。保留来源字段值、最新导入值、人工覆盖值及优先级。

6.3 内容与页面的区别

  • 录入 1000 个车型,不意味着手工建 1000 个页面。
  • 车型都是 Vehicle 内容条目;系统采用一个 vehicle-detail 页面模板批量生成 1000 个对应 URL。
  • 新增车型后自动生成新详情页并更新分类列表、筛选数据、站点地图与内部链接。

6.4 媒体中心

  • 原图存储,派生多尺寸格式;保留 alt、文件名、来源 URL 和使用关系。
  • 旧站媒体需维护原路径映射,必要时保留原 URL 的资源响应。
  • 批量上传、图库、资源去重、视频外链、PDF 和下载附件。
  • 资源删除时检查使用关系;不能造成已上线页面引用失效。

7. 网站装配引擎(全产品最核心的技术)

7.1 输入

site_blueprint.json + theme@version + content_snapshot + asset_manifest + route_registry + SEO_policy

7.2 核心过程

  1. 验证主题与内容类型是否兼容。
  2. 解析页面树与导航,构造页面上下文。
  3. 读取数据绑定配置,生成列表和详情集合。
  4. 根据 URL/语言规则生成页面路径,检测重复与冲突。
  5. 按页面模板渲染静态 HTML,并生成 CSS/JS。
  6. 生成 sitemap、robots、结构化数据和必要的重定向配置。
  7. 执行页面链接、SEO、媒体、性能及功能验证。
  8. 形成不可变构建产物、版本元数据和差异报告。

7.3 装配示例:汽车站

  • 公司信息绑定 company.*。
  • 首页精选车型绑定 vehicles where featured=true。
  • 品牌列表绑定 brands,每个品牌生成 /brands/{slug}/。
  • 车型详情绑定 vehicles,生成 /models/{slug}/ 或从旧站注册表获取原有 URL。
  • 新闻内容绑定 posts,自动生成新闻列表和详情。
  • PC 和移动端页面由同一语义内容驱动,但主题可采用不同响应式布局。

7.4 蓝图 JSON 示例

{
  "siteKey": "export-auto-demo",
  "mode": "migration-redesign",
  "theme": {"id": "automotive-premium", "version": "1.4.0"},
  "locale": "en",
  "designTokens": {"primaryColor": "#1765B2", "contentWidth": "1280px"},
  "pages": [
    {"kind": "static", "path": "/", "template": "home"},
    {"kind": "collection", "path": "/products/", "template": "product-list", "contentType": "vehicle"},
    {"kind": "entry", "template": "product-detail", "contentType": "vehicle", "routeSource": "registry"}
  ],
  "navigation": {"header": ["/", "/products/", "/about-us/", "/contact/"]},
  "seoPolicy": "preserve-imported"
}

7.5 主题数据绑定示例

{
  "template": "home",
  "slots": {
    "hero": {"type": "Hero", "bindings": {"title": "site.homeHero.title", "image": "site.homeHero.image"}},
    "featured": {"type": "VehicleGrid", "source": {"contentType": "vehicle", "filter": {"featured": true}, "limit": 8}},
    "news": {"type": "LatestPosts", "source": {"contentType": "post", "limit": 3}}
  }
}

规则应由受控 schema/查询 DSL 解释,禁止把任意用户输入作为数据库查询或 JS/SQL 执行。


8. 旧站迁移子系统(Website Factory 的一个入口)

8.1 兼容范围与优先顺序

P0:WordPress(REST API + WXR XML + SQL + wp-content)、HTML 静态站、普通 PHP 公开站。P1:Drupal、Joomla、自定义 CMS、Vue/React 渲染站。P2:电商、会员、复杂业务站专用适配器。

8.2 自动扫描

抓取 robots、sitemap、内部链接、菜单、页面、分页、媒体和 head SEO;识别 CMS、页面类型、动态表单、语言、状态码和 canonical;得到带来源、置信度和异常标记的扫描清单。

8.3 迁移独有工作流

Old Site → Snapshot → Extract → Normalize → Map To Theme → Route/SEO Preserve → Preview/QA → Cutover

  1. 建立旧站不可变快照,记录内容、URL、响应状态、SEO、媒体。
  2. 能取得权限时优先组合 API/备份/网页数据,不能取得权限时抓取公开内容并标记未知项。
  3. 将旧站类型映射到统一类型,例如 WooCommerce product → Product / ACF car → Vehicle。
  4. 让用户选择新的视觉主题,映射旧数据字段到新页面组件。
  5. 保留旧 URL 注册表、历史 301、canonical 和 SEO 元数据;异常需明示审核。
  6. 禁止新主题自动重写旧路由。新增加的内容可按新建路由规则生成。
  7. 预览视觉不同的新站并以旧站数据基线自动验收。
  8. 发布时注意 DNS、CDN、缓存、预览 noindex、必要 API 以及回滚。
  9. 上线后追踪 404、搜索抓取和流量变化;上线前后还可进行增量同步直至冻结旧站写入。

8.4 关键事实

公开页面采集无法保证后台未展示字段完整;网站登录、支付、购物车及实时功能不能纯静态复制;要在扫描报告中明确“可自动”“需授权”“需开发扩展”“不迁移”四种处置结果。


9. 新站创建子系统(与迁移同等优先级)

9.1 模板新建流程

  1. 输入网站名称、主语言、品牌信息、目标行业、域名(可延后绑定)。
  2. 选择模板并预览 PC/移动端。
  3. 从模板生成站点蓝图、页面树、导航和内容类型定义。
  4. 进入引导式公司资料表:名称、Logo、联系方式、社媒、地址、企业简介。
  5. 手工或批量添加产品、文章、品牌、图片;主题根据字段绑定渲染页面。
  6. 修改页面区块、主色、字体和导航,设置联系表单目标。
  7. 自动生成页面、站点地图与 SEO 默认值;检查内容完整性。
  8. 预览、发布、绑定域名;未来继续从后台更新。

9.2 空白新建流程

  1. 创建站点与内容类型。
  2. 配置导航/页脚和布局框架。
  3. 通过区块编辑器建立页面和模板。
  4. 建立动态集合页及详情路由规则。
  5. 绑定内容和媒体,预览并发布。
  6. 经审核将该站的可复用结构导出为主题/站点模板。

9.3 导入内容建站流程

  1. 上传 vehicles.xlsx,识别标题、品牌、图片、价格、参数等。
  2. 创建或选择 Vehicle 内容类型,建立字段映射、唯一键和数据校验。
  3. 选择适合的产品站主题;若字段不足,提示补齐,而不是凭空生成。
  4. 由车型集合创建列表、详情、品牌聚合页,生成对应 URL。
  5. 配置通用企业资料、SEO、导航,发布成完整新站。

9.4 主题替换机制

切换主题时预检查必需字段、页面类型、交互能力、导航结构及 URL 兼容性。允许在临时预览环境试装,保留旧主题和站点蓝图版本;确认后切换,不删除原内容和媒体。


10. URL 与 SEO:区分“迁移”和“新建”两种政策

10.1 迁移站(Preserve Mode)

  • 以实际旧站最终有效访问行为为基线,保留用户可见有效 URL、状态码和所需重定向链。
  • Title、Description、Canonical、Robots、Hreflang、JSON-LD、Open Graph、图片 alt、内链和 sitemap 做差异比对。
  • 旧 URL 到新构建产物一对一登记,包含中文路径、大小写、尾部斜杠、.html、分页、文件、查询参数规则。
  • 404 处理必须区分原本无效和新迁移导致;如果页面已批准下线,应设置合适的 301/410 行为。
  • 允许设计变化,但不能因使用新模板悄悄改变原 SEO/URL。

10.2 新站(Generate Mode)

  • 按站点定义 slug 策略和 URL 规则;允许人工指定覆盖。
  • 使用 SEO 默认模板,例如 {product.name} | {site.name},并提示检查重复标题/空描述。
  • 自动生成 robots、sitemap、Open Graph、必要的 JSON-LD 和 canonical。
  • 多语言模式需完整管理 locale URL、翻译关联和 hreflang。
  • 预览域名必须鉴权并禁止搜索索引。

10.3 混合模式

来源于旧站的内容使用 Preserve URL,新增内容使用 Generate URL;注册表统一检查冲突。不能简单设置一个整站 preserve=true 就忽略新内容路径生成。

10.4 质量门禁

迁移站关键 URL 和 SEO 的未批准差异必须阻止发布;新站的门禁主要是 URL 冲突、重复规范地址、无效内链、关键必填字段缺失和资源失效。


11. 管理后台信息架构(建议菜单)

SiteForge
├── 工作台 Dashboard
│   ├── 网站数量 / 最近发布 / 失败任务 / 风险
│   └── 快速操作:新建网站 / 导入内容 / 创建模板
├── 网站工厂
│   ├── 所有网站
│   ├── 创建网站向导(空白 / 模板 / 旧站 / 数据)
│   ├── 网站蓝图 / 页面树 / 菜单 / 域名
│   └── 预览 / 历史版本 / 克隆结构
├── 内容中心
│   ├── 内容类型设计器
│   ├── 文章 / 产品 / 自定义集合
│   ├── 公司资料 / 全局数据
│   ├── 数据导入与同步
│   └── 媒体资源库
├── 设计中心
│   ├── 模板库 / 主题库
│   ├── 页面模板 / 区块库
│   ├── 页面编辑器
│   ├── 全站设计 Token
│   └── 自定义主题注册与版本
├── 迁移中心
│   ├── 网站技术扫描
│   ├── WordPress / CMS 导入
│   ├── 字段映射 / 旧站快照
│   ├── URL / SEO 基线
│   └── 迁移差异报告
├── 构建与发布
│   ├── 构建任务 / 预览
│   ├── 自动验收与报告
│   ├── 发布审批 / 目标服务器
│   ├── ZIP 导出 / 历史版本
│   └── 回滚 / CDN 缓存刷新
└── 系统设置
    ├── 用户 / 团队 / 角色
    ├── API 密钥 / 数据源凭证
    ├── 适配器 / 扩展服务
    ├── 审计日志 / 告警
    └── 存储 / 域名 / 环境

11.1 新建网站首页建议

四个同级入口卡片:旧站改造、使用模板新建、导入数据建站、空白建站。不要把“迁移”置于唯一入口,也不要把“选择模板”藏在迁移流程中。

11.2 网站内部工作台

概览 → 内容 → 页面 → 设计 → SEO/路由 → 预览 → 发布 → 设置。便于独立运营每个网站,不要求管理员理解数据仓库和构建细节。


12. 推荐技术选型与研发边界

部分 推荐 备注
后台界面 Vue 3 + TypeScript + Element Plus / Art Design Pro 多站点、内容编辑、区块页面编辑器
核心 API Python FastAPI + Pydantic + SQLAlchemy 复用 Python 采集、数据处理和内部工程经验
异步任务 Celery + Redis(或 Dramatiq) 采集、媒体、导入、同步、质量任务
数据库 PostgreSQL JSONB 扩展字段、关系表和审计日志
采集服务 Python httpx/Scrapy + Playwright SSR/动态页面扫描与插件适配
模板及静态生成 Astro + TypeScript/Node Worker 主题组件、静态页面编译、增量/全量构建
资产存储 S3 兼容对象存储/OSS + 本地缓存 原图、附件、站点版本和静态包
部署 Nginx / 对象存储 + CDN / SSH 或 Git 工作流 独立站交付和可回滚
任务与日志 PostgreSQL + Redis + 集中日志 可追踪的导入和发布作业
运行 Docker Compose 首选 后期再按规模拆分服务

为什么不强制全部使用一种语言:数据采集/规范化适合 Python;静态主题的现代前端生态适合 TypeScript/Astro。通过版本化 JSON 契约连接两个 Worker,避免牺牲网站的设计自由度。若团队对 NestJS 更熟,也可替换 API 层,不影响领域模型和构建协议。

12.1 部署架构

  • API、PostgreSQL、Redis、导入 Worker、构建 Worker、管理前端、对象存储等分别通过容器管理。
  • 每个网站生成独立不可变 release_id 的产物并可单独导出、上传和回滚。
  • 为不同域名、地区和站点提供独立构建与部署配置。
  • 预览站点与生产站点隔离,预览授权、禁止索引。

13. 数据库详细方案

13.1 数据库分域

组织与权限:organizations、users、memberships、roles、permissions。

网站与蓝图:sites、site_environments、site_blueprints、site_settings、page_nodes、navigation_menus、navigation_items、site_domains。

内容模型:content_types、field_definitions、content_entries、entry_versions、entry_relations、content_localizations、global_entries。

媒体:media_assets、media_variants、media_references、media_source_urls。

模板与组件:themes、theme_versions、page_templates、component_definitions、component_instances、design_tokens、site_theme_bindings。

数据输入与适配器:data_sources、adapter_definitions、import_jobs、import_items、field_mappings、sync_policies、source_snapshots、source_identity_map。

URL 与 SEO:routes、redirect_rules、seo_records、seo_snapshots、link_checks、route_diffs。

构建发布:build_jobs、build_artifacts、releases、deployments、quality_reports、audit_events。

13.2 SQL 示意

CREATE TABLE sites (
  id UUID PRIMARY KEY,
  organization_id UUID NOT NULL,
  name TEXT NOT NULL,
  site_key TEXT NOT NULL,
  creation_mode TEXT NOT NULL CHECK (creation_mode IN
    ('blank','template','migration','data_import','clone_structure')),
  default_locale TEXT NOT NULL DEFAULT 'en',
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  UNIQUE (organization_id, site_key)
);

CREATE TABLE content_types (
  id UUID PRIMARY KEY,
  site_id UUID NOT NULL REFERENCES sites(id),
  type_key TEXT NOT NULL,
  schema_json JSONB NOT NULL,
  UNIQUE (site_id, type_key)
);

CREATE TABLE content_entries (
  id UUID PRIMARY KEY,
  site_id UUID NOT NULL REFERENCES sites(id),
  content_type_id UUID NOT NULL REFERENCES content_types(id),
  source_identity TEXT,
  slug TEXT,
  locale TEXT NOT NULL DEFAULT 'en',
  status TEXT NOT NULL DEFAULT 'draft',
  data_json JSONB NOT NULL,
  version INTEGER NOT NULL DEFAULT 1,
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE TABLE site_blueprints (
  id UUID PRIMARY KEY,
  site_id UUID NOT NULL REFERENCES sites(id),
  revision INTEGER NOT NULL,
  blueprint_json JSONB NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  UNIQUE (site_id, revision)
);

CREATE TABLE routes (
  id UUID PRIMARY KEY,
  site_id UUID NOT NULL REFERENCES sites(id),
  locale TEXT NOT NULL,
  path TEXT NOT NULL,
  behavior TEXT NOT NULL, -- render | redirect | gone | proxy
  target_entry_id UUID NULL REFERENCES content_entries(id),
  target_url TEXT NULL,
  source_kind TEXT NOT NULL, -- imported | generated | manual
  UNIQUE (site_id, locale, path)
);

CREATE TABLE build_jobs (
  id UUID PRIMARY KEY,
  site_id UUID NOT NULL REFERENCES sites(id),
  blueprint_revision INTEGER NOT NULL,
  theme_version TEXT NOT NULL,
  input_manifest JSONB NOT NULL,
  status TEXT NOT NULL,
  started_at TIMESTAMPTZ,
  finished_at TIMESTAMPTZ
);

数据库 DDL 只是结构示意;正式实现应补全租户隔离策略、外键/索引、关系类型、软删、版本表、迁移脚本和审计字段。source_identity_map 不应在跨数据源之间简单依赖 slug 去重。

13.3 数据治理约束

  • 以 organization_id + site_id 强制作用域隔离,查询接口必须实现授权校验。
  • 导入前保存 raw source;标准化后保留原来源与变更来源。
  • 使用内容版本快照支持回滚和差异查看。
  • 记录手动字段覆盖,不允许重导入无声覆盖。
  • 涉及多语言、复杂关系、复用媒体时,不用一张任意 JSONB 表取代所有关系模型。

14. 核心 API 契约(示意)

POST   /api/sites                         # 建立网站;body.creationMode
GET    /api/sites                         # 站点清单
GET    /api/sites/{siteId}
POST   /api/sites/{siteId}/clone-structure
GET    /api/themes                        # 主题库
GET    /api/themes/{themeId}/versions
POST   /api/sites/{siteId}/theme/preview  # 试装主题/兼容性检查
POST   /api/sites/{siteId}/theme/activate
GET    /api/sites/{siteId}/blueprint
PUT    /api/sites/{siteId}/blueprint       # 乐观锁 revision
GET    /api/sites/{siteId}/content-types
POST   /api/sites/{siteId}/content-types
GET    /api/sites/{siteId}/entries
POST   /api/sites/{siteId}/entries
PATCH  /api/sites/{siteId}/entries/{entryId}
POST   /api/sites/{siteId}/imports         # 文件/API/CMS/旧站导入
POST   /api/imports/{jobId}/dry-run
POST   /api/imports/{jobId}/commit
GET    /api/imports/{jobId}/conflicts
GET    /api/sites/{siteId}/routes
GET    /api/sites/{siteId}/seo-audit
POST   /api/sites/{siteId}/builds
GET    /api/builds/{buildId}
POST   /api/sites/{siteId}/releases/{releaseId}/publish
POST   /api/sites/{siteId}/deployments/{deployId}/rollback
GET    /api/sites/{siteId}/quality-reports

14.1 任务状态机

created → queued → running → needs_review | failed | completed;构建验收后再从 completed 经 approved → published,允许取消、重试、失败恢复,但每个状态转换须有审计记录。

14.2 构建契约

Node/Astro 构建 Worker 只接受经过签名/授权访问的不可变输入 manifest,输出静态包路径、构建报告、内容 hash、资源清单和验收结果;不要将数据库直接暴露给静态构建主题代码。


15. 质量验收体系(按建站模式执行)

15.1 通用验收

  • 所有必需页面可访问、无冲突路由、没有意外 404/5xx。
  • 内容、分类、关联、图片和附件链接完整;过滤 XSS 等不可信脚本。
  • PC / 移动端核心页面无溢出、错位和严重布局问题。
  • sitemap、robots、canonical 与发布目标域名一致。
  • 站点预览不被搜索引擎收录,正式站按配置开放索引。
  • 表单、询盘、导航、搜索等启用功能经过实际测试。
  • 发布包可在隔离环境部署并独立访问;能回滚。

15.2 迁移专用验收

  • 旧站已发现的有效 URL 都有一致访问或批准例外;关键路径的未批准变化阻断发布。
  • SEO 标题、描述、canonical、robots、hreflang 等做旧/新对照。
  • 产品/文章/页面数与旧站基线差异有解释;不可获取内容明确列出。
  • 资源与重定向规则逐项校验;上线后持续关注抓取和错误。

15.3 新站专用验收

  • 必填企业信息、Logo、联系路径和站点语言完整。
  • 集合列表与详情页数量正确,新增内容可以重新生成网页。
  • SEO 自动生成规则没有导致大量重复标题或无意义内容。
  • 所选模板适用内容字段,缺失信息不能通过臆造补全。

15.4 验收报告分级

BLOCKER(必须解决)/ WARNING(可人工批准)/ INFO。不要把“页面加载成功”视作“内容迁移完整”。


16. 构建、部署、静态导出与持续更新

16.1 全量与局部构建

V1 可先全量构建保证正确性;V2 根据内容变化计算影响依赖:更新车型 → 对应详情、分类、品牌列表、首页精选和 sitemap 等重建。依赖图要可追踪,以免漏刷引用页。

16.2 交付格式

release-2026-10-21-a1b2/
├── public/
│   ├── index.html
│   ├── about-us/index.html
│   ├── products/index.html
│   ├── products/example/index.html
│   ├── assets/...
│   ├── sitemap.xml
│   └── robots.txt
├── server/
│   ├── nginx.conf.example
│   └── redirects.json
├── manifest.json
├── quality-report.json
└── deployment-notes.md

旧站存在 .html、尾斜杠与目录结构差异时,按照路由注册表选择适当静态目录或 Web 服务器规则;输出文件路径本身不代表 HTTP 访问语义自动等同,必须经过实际服务器验收。

16.3 部署策略

  • 预览 / staging / production 三级环境,可选择简化为 preview + production。
  • 产物不可变、版本化;原子切换部署;媒体缓存和 HTML 缓存采用不同策略。
  • 支持 ZIP 下载、SSH/SFTP、Git CI、对象存储 + CDN;不同站点独立域名和缓存。
  • 发布操作与回滚操作留存操作人、时间、版本和差异。

16.4 外部服务扩展

表单、询盘、搜索、评论、登录等由独立功能适配器负责;主题仅通过公开的组件/客户端 SDK 调用,避免各站重复实现且不把平台后台变成生产站依赖。


17. 安全、权限、成本与可维护性

  • 采集 SSRF:阻断内部 IP、云元数据地址、敏感主机及重定向跳转;抓取速率限制、URL 白名单、robots 与站点使用权限审查。
  • 文件安全:ZIP 解压路径穿越、恶意 HTML/JS/PHP、上传扩展名、MIME、体积限制与资源扫描。
  • 数据隔离:租户、站点、内容、媒体、API 凭证严格隔离,导出权限与发布权限分离。
  • 主题安全:主题依赖锁定、审核第三方组件、禁止把未审核用户表达式转换为运行代码。
  • SEO 安全:导入外站数据时不能盲目继承失效域名 canonical/跳转目标;必须判别并显示冲突。
  • 构建安全:构建 Worker 沙箱、资源/CPU/时间限制、审计命令、脱离机密生产凭证。
  • 版本安全:导入快照、内容版本、主题版本、发布版本皆可追溯与恢复。
  • 数据备份:数据库备份、媒体/源快照、构建物及密钥轮换政策。

18. 开发路线图:从最小“网站工厂”开始

阶段 0 — 架构与样本验证(建议 2–3 周)

成果:Site Blueprint schema、内容类型/字段协议、主题 manifest、路由引擎规则、导入/构建 JSON 契约、站点项目 UI 原型;准备 3 个试点样本(WordPress 迁移、新站模板、新数据批量导入)。

阶段 1 — MVP 网站工厂(建议 6–10 周)

必须同时具备“新建”和“迁移”两条路径。

  • 站点项目管理、主题目录(至少两套不同设计)、站点蓝图。
  • 内容模型(页面/文章/产品/分类、可扩展字段)、媒体上传与基础编辑。
  • 模板新建、CSV/Excel 导入、WordPress 核心内容导入。
  • 页面装配/静态构建、基本 URL/SEO 模式、预览与 ZIP 导出。
  • 自动验收、单站版本管理。

验收:同一系统能生产一个无旧站的新网站和一个 WP 迁移重建网站;两站视觉结构不同且可独立访问。

阶段 2 — 可规模化多站点运营(建议 6–10 周)

  • 通用网站爬虫与插件适配器、字段映射工作台。
  • 主题兼容性检测、区块式编辑器、页面/菜单可视化设置。
  • 增量导入、媒体处理、版本化部署与一键回滚。
  • URL/SEO 完整旧新站差异报告、批量质量门禁。
  • 多站点、多权限、多环境和站点克隆结构。

验收:至少一个非 WordPress 站可迁移,模板与数据独立升级可运行。

阶段 3 — 完整模板工厂与自动化(按实际业务决定)

  • 可视化页面模板编辑、组合式区块库。
  • 自定义主题 SDK 和内部主题市场、模板版本升级迁移。
  • API 数据同步、任务计划、依赖图增量构建。
  • AI 内容分类、字段匹配和页面布局建议(人工审核)。
  • 更多 CMS / ERP 适配器和复杂组件。

时间均为粗略研发规划区间,不是工期承诺;应基于团队人数、模板复杂度、实际旧站数据和试点验收调整。


19. 研发团队协作与目录建议

siteforge/
├── apps/
│   ├── admin-web/               # Vue 管理后台
│   └── api/                     # FastAPI 主服务
├── workers/
│   ├── imports/                 # 导入与数据清洗
│   ├── crawler/                 # 旧站抓取和 CMS 适配
│   ├── media/                   # 媒体处理
│   ├── builder/                 # Astro 构建服务
│   └── qa/                      # URL/SEO/功能验收
├── packages/
│   ├── blueprint-schema/       # 站点蓝图协议
│   ├── content-schema/         # 内容与字段协议
│   ├── adapter-sdk/            # 数据源接入接口
│   ├── theme-sdk/              # 主题数据绑定/组件接口
│   ├── route-engine/           # 路由规则与映射
│   └── build-contract/         # 输入/输出 manifest
├── themes/
│   ├── corporate-clean/
│   ├── automotive-premium/
│   └── industrial-b2b/
├── migrations/                 # 数据库演进
├── docs/                       # PRD、ADR、API、模板规范
├── tests/                      # 完整端到端样本
└── infra/                      # Docker、Nginx、CDN、CI

19.1 设计/数据/研发协作界面

  • 设计师交付主题原型与组件规范。
  • 研发把组件封装成可配置主题,声明需要哪些数据字段。
  • 内容人员录入内容和映射字段,不需修改代码。
  • 项目负责人检查预览并发布。
  • 可选开发人员继续以 SDK 开发特殊功能,保持独立品牌差异。

19.2 文档最小集合

PRD、站点蓝图 JSON Schema、Theme Manifest、组件数据绑定规范、适配器 SDK、数据模型 ERD、API OpenAPI、任务状态机、部署/回滚手册、验收测试用例。


20. 首批试点与详细验收用例

试点 A:旧 WordPress 汽车网站 → 新汽车主题

提供 WordPress XML + SQL/媒体(若可用)+ 网站 URL;输出文章/车型/品牌/分类和 SEO;选择全新汽车主题;旧站现存核心 URL 不改变;首页/品牌/车型详情样式与旧站不同;确认可离线发布。

试点 B:新建工业品网站(无任何旧站)

选择工业主题 → 添加公司 Logo/简介/联系方式 → 批量上传管材 Excel 和图片 → 自动生成产品分类与详情 → 配置联系页面 → 预览 → 以纯静态文件发布。

试点 C:已有网站 + 新数据混合

在 A 项目后续导入新一批产品 CSV:仅新增/更新相应产品,不覆盖旧文章与人工编辑;新增页面按新规则生成路由;原迁移 URL 不改变;系统更新受影响页面与 sitemap。

试点 D:空白页面 → 保存为模板 → 复用到第二个网站

从空白建立官网页面树和首页组件结构,绑定内容字段,保存为可复用模板;新项目使用该模板和另一套公司资料生成不同网站,不复制试点的私有内容。

上述四个试点是网站工厂成功与否的核心验收,不允许用“只完成 WP 迁移”代替。


21. 风险与关键决策

风险/问题 对策
模板不适配导入数据 主题声明字段和页面能力,预检查并引导补齐字段
“一键搬家”遗漏旧数据 多源交叉提取、数据覆盖率报告、人工审核和异常列表
新主题导致旧 URL 改变 URL 注册表独立于主题、迁移模式发布门禁
模板升级覆盖独立设计 主题版本锁定、兼容检测、差异预览、独立站点覆盖层
内容修改无法及时更新静态站 事件触发构建、预览与人工或自动发布策略
大站生成耗时过长 静态构建分批、缓存、增量依赖、构建 Worker 并发
复杂业务功能无法静态化 独立服务/API 适配器、功能清单和迁移边界确认
AI 生成错误产品参数或公司事实 不凭空补全、标记来源和置信度、人工审阅
运营长期绑定平台无法退出 保证完整静态包、资源与服务器规则可导出

21.1 推荐冻结的架构决策

  1. Website Factory 为总产品;Migration Center 仅是子模块。
  2. 模板和内容分离;Site Blueprint 负责装配。
  3. 四种同级建站入口;导入在网站创建后随时可用。
  4. “旧站 SEO 保真”与“新站 SEO 生成”是两种独立策略。
  5. 线上输出优先真正静态文件;额外动态能力作为可选扩展。
  6. 站点、内容、媒体、主题、蓝图、构建物独立版本化。
  7. 第一阶段不追求任意像素自由拖拽,保留独立主题开发能力。

22. 可立即拆解的第一轮开发任务

Sprint A:基础项目与协议

  • 建立仓库、开发环境、CI、PostgreSQL、Redis、身份与网站项目模型。
  • 完成 Site Blueprint / Theme Manifest / Content Type Schema 草案及验证器。
  • 创建模板库 UI、四入口建站首页和站点工作台初版。

Sprint B:内容 + 模板 + 构建闭环

  • 手动创建产品、文章、基本页面和媒体。
  • 实现两种设计风格不同的主题,完成数据绑定和列表/详情页生成。
  • 输入规范 manifest,Astro 全量构建、预览站点和 ZIP 导出。

Sprint C:数据导入 + WordPress 迁移

  • CSV/Excel 字段映射、dry-run、幂等更新、异常行报告。
  • WordPress WXR/API 导入和图片资源迁移。
  • 旧站 URL/SEO 基线及 Preserve Mode。

Sprint D:上线级质量闭环

  • URL/SEO/媒体/内链验收、构建版本、发布审批和回滚。
  • 四项端到端试点验收;填写已知限制和改进清单。

23. 最终交付物清单

  • SiteForge 管理后台(含四种建站入口)。
  • 通用内容中心、动态内容类型、媒体库、导入工作台。
  • 模板/主题/组件中心、站点蓝图、区块式页面配置。
  • WordPress 适配器、通用爬虫、Excel/CSV/JSON 导入能力。
  • 静态装配与构建引擎,包含 ZIP 导出与独立服务器部署。
  • 旧站路由与 SEO 比对、新站 SEO 自动生成、自动验收和质量报告。
  • 多网站环境/发布/回滚/权限/审计能力。
  • 至少三套不同业务风格的参考主题与必要主题 SDK 文档。
  • 四个试点通过报告、自动化测试、开发部署手册和数据恢复演练。

24. 一句话总结

SiteForge 是“有内容就能造网站、没有内容也能从零造网站、有旧网站就能搬内容换设计、造完还能持续管理和再次生成”的通用网站工厂。

旧站迁移、内容管理、主题市场、页面设计、SEO、静态构建与发布,都是围绕“生产网站”这一核心能力服务的工序,而不是独立产品的拼接。