摘要
前端研发流程中,PRD 定稿后需经产品、前端多轮人工转译,普遍存在交付周期长、沟通成本高、返工率高、代码标准化不足等痛点。本文基于真实业务落地场景,完整拆解一套可直接复用的 PRD→页面→源码全链路自动化方案,依托「样板间平台 + 可视化 GUI + AI 转译 + 插件生态」四大核心能力,明确核心指标、产品设计、技术实现、协议规范及落地细节,实现 PRD→页面生成 100% 成功率、PRD→代码生成 ≥ 90% 成功率,平均需求交付周期缩短 30%,助力研发团队快速落地提效,解决人工转译的核心痛点。
一、方案概述(核心定位 + 目标 + 价值)
1.1 方案定位
面向产品经理、前端开发、平台管理员,覆盖「PRD 解析→原型配置→代码生成→二次开发」全流程,以“标准化、自动化、轻量化”为核心,无需重构现有研发流程,可快速嵌入现有工作流,聚焦 90% 通用页面场景(表单 / 表格 / 详情页等),兼顾定制化场景的二次开发需求。
1.2 核心目标
- 消除人工转译:实现 PRD→页面→源码的全链路自动化,减少产品与前端的沟通成本和转译误差;
- 提升交付效率:缩短需求从 PRD 定稿到前端上线的周期,通用页面可实现“产品配置即生成代码”;
- 保障标准化:统一页面原型、PRD 格式、代码规范,降低返工率,提升团队协作一致性;
- 降低操作成本:产品无需编码即可完成原型配置,前端无需重复编写基础页面代码,聚焦核心业务逻辑。
1.3 核心指标(可落地、可量化)
- PRD→页面生成成功率:100%(基于低代码引擎可视化配置,所见即所得,无转译误差);
- PRD→代码生成成功率:≥ 90%(覆盖通用页面场景,定制化交互可通过二次开发补充);
- 需求交付周期:平均缩短 30%;
- 返工率:降低 50% 以上(标准化配置 + AI 转译,减少人工转译失误)。
1.4 全角色核心收益
| 产品经理 | 无需依赖研发,无编码配置原型,一键导出标准化 PRD | 配置表格查询页、表单页,10 分钟完成原型 + PRD 导出 |
| 前端开发 | 减少基础页面编写工作,聚焦业务逻辑和定制化开发 | 输入任务 ID 即可下载标准化代码,无需从零搭建页面结构 |
| 平台管理员 | 统一管理模板,保障页面、代码标准化,降低维护成本 | 新增 / 更新业务模板,全团队可快速复用,无需重复开发 |
| 团队 | 缩短交付周期,降低沟通成本,提升协作效率 | 缩短需求从 PRD 到上线的平均周期 |
二、产品方案(全角色功能设计,贴合实际工作流)
围绕“提效、降本、标准化”核心,设计 5 大功能模块,覆盖全角色需求,流程衔接顺畅,无需改变现有工作习惯,降低落地门槛。
2.1 样板间平台(系统入口 + 全生命周期管理)
核心定位:全流程中枢,负责模板、原型的统一管理,是产品、前端的核心操作入口,确保页面和代码的标准化。
- 模板中心(核心功能):提供覆盖表单、表格查询页、详情页、日志页等多场景的标准化模板,模板内置预设字段、组件(输入框、单选框、表格等)及基础交互(表单校验、表格分页、筛选),产品经理可直接选用,无需从零设计。
- 模板管理(管理员专属):支持模板的增删改查、版本控制、权限隔离(按业务线分配模板可见性),定期更新模板,保障模板质量和兼容性,避免无效模板复用。
- 我的原型管理(产品经理专属):产品经理可查看、编辑、删除自有配置的原型,支持按「任务 ID、创建时间、页面名称」多维度检索,快速定位目标原型,查看原型历史版本。
2.2 原型配置 GUI(产品无编码配置工具)
核心定位:产品经理的可视化操作工具,无需编写任何代码,即可完成页面原型配置,实现“所见即所得”。
- 模板编辑:从模板中心选择目标模板后,可视化调整——字段(增删改查、设置必填项 / 校验规则)、组件(更换样式、调整属性)、布局(调整组件位置、占比)、交互逻辑(按钮点击事件、表单提交规则)。
- 原型保存:配置完成后一键保存,系统自动生成符合低代码引擎规范的 Schema 数据(PRD 与代码的核心映射载体,记录页面所有配置信息),支持原型的二次编辑和版本回溯。
- PRD 导出:一键生成标准化 PRD 文档,包含「原型 URL、原型截图、业务字段说明、交互规则」,支持直接复制粘贴至文档平台,无需产品经理手动编写重复内容。
- 实时预览:配置过程中可实时预览页面效果,及时调整偏差,避免配置完成后与预期不符,减少返工。
2.3 AI 服务(全链路自动化核心,转译能力支撑)
核心定位:实现 PRD、Schema、源码三者的智能互转,是消除人工转译的核心模块,确保转译准确性和规范性。
2.3.1 PRD 与 Schema 互转
- PRD 转 Schema:解析文档平台的结构化 / 非结构化 PRD 文本,智能识别页面元素(输入框、按钮、表格等)、功能需求(表单校验、筛选条件、分页规则),自动转换为可被原型 GUI 渲染的 Schema 数据,无需产品手动配置。
- Schema 转 PRD:解析原型 GUI 生成的 Schema 数据,自动生成符合公司规范的 PRD 文本,附带原型 URL 和截图,同步更新字段、交互规则,减少产品经理手动编写 PRD 的工作量。
2.3.2 Schema 转源码
将 Schema 数据转换为符合团队编码规范的前端源码(支持 React / Vue 等主流框架),生成的代码具备三大特性:
- 高可读性:符合团队 ESLint 编码规范,注释清晰,结构规整,便于前端二次开发;
- 可维护性:组件引入、样式管理、接口调用统一规范,支持后续迭代优化;
- 标准化:与模板代码结构一致,避免出现“一人一码”的混乱情况。
2.4 浏览器插件(无缝对接文档平台,简化产品操作)
核心价值:打通文档平台与样板间平台,实现 PRD 与原型的高效联动,显著提升产品经理的工作效率。
核心功能:
- PRD 智能转换:在文档平台直接选中 PRD 内容,通过插件一键转换为 Schema 格式
- 自动渲染展示:转换完成后自动跳转至原型 GUI 界面,免除手动复制粘贴的繁琐操作
2.5 开发工具插件(前端提效方案)
核心价值:专为前端研发打造的效率工具,优化代码获取链路,缩短等待时间,助力二次开发。
核心功能:
未来演进:计划将插件功能整合至浏览器插件体系,实现"一站式工具集成",降低维护成本,优化多端适配效率。
2.6 全角色核心操作流程
| 产品经理 | 样板间平台 – 模板中心 | 进入模板中心 → 选择目标模板 → 点击「创建原型」→ 进入配置 GUI |
| 样板间平台 – 原型配置 GUI | 可视化配置字段 / 组件 → 点击「保存」(新建需输入任务 ID + 页面名称)→ 点击「导出 PRD」→ 复制粘贴至文档平台 | |
| 样板间平台 – 我的原型 | 按任务 ID / 时间 / 页面名称搜索原型 → 预览 / 编辑 / 删除自有原型 | |
| 前端开发 | 开发工具插件 – 物料中心 | 输入任务 ID → 预览原型 → 一键下载代码 → 本地二次开发 → 上线 |
三、技术方案(落地细节,可直接复用)
技术方案聚焦“标准化、可落地”,从核心流程、AI 转译规范、协议约定、数据存储、接口设计到落地避坑,形成完整技术闭环,降低开发适配难度,确保方案可快速嵌入现有研发体系。
3.1 核心流程(可视化流程图,清晰易懂)
3.1.1 整体核心流程
核心逻辑:全流程覆盖 AI 服务「PRD↔Schema 双向互转 + Schema 转源码」核心能力,正向支持产品配置原型生成 Schema → AI 自动转标准化 PRD / 前端源码;反向支持从文档平台 PRD 解析生成 Schema 回显至原型配置界面,全链路自动化闭环,无需人工转译。
#mermaid-svg-mZdXgit9Nm0eZ6OY{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mZdXgit9Nm0eZ6OY .error-icon{fill:#552222;}#mermaid-svg-mZdXgit9Nm0eZ6OY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mZdXgit9Nm0eZ6OY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .marker.cross{stroke:#333333;}#mermaid-svg-mZdXgit9Nm0eZ6OY svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mZdXgit9Nm0eZ6OY p{margin:0;}#mermaid-svg-mZdXgit9Nm0eZ6OY .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster-label text{fill:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster-label span{color:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster-label span p{background-color:transparent;}#mermaid-svg-mZdXgit9Nm0eZ6OY .label text,#mermaid-svg-mZdXgit9Nm0eZ6OY span{fill:#333;color:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .node rect,#mermaid-svg-mZdXgit9Nm0eZ6OY .node circle,#mermaid-svg-mZdXgit9Nm0eZ6OY .node ellipse,#mermaid-svg-mZdXgit9Nm0eZ6OY .node polygon,#mermaid-svg-mZdXgit9Nm0eZ6OY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .rough-node .label text,#mermaid-svg-mZdXgit9Nm0eZ6OY .node .label text,#mermaid-svg-mZdXgit9Nm0eZ6OY .image-shape .label,#mermaid-svg-mZdXgit9Nm0eZ6OY .icon-shape .label{text-anchor:middle;}#mermaid-svg-mZdXgit9Nm0eZ6OY .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .rough-node .label,#mermaid-svg-mZdXgit9Nm0eZ6OY .node .label,#mermaid-svg-mZdXgit9Nm0eZ6OY .image-shape .label,#mermaid-svg-mZdXgit9Nm0eZ6OY .icon-shape .label{text-align:center;}#mermaid-svg-mZdXgit9Nm0eZ6OY .node.clickable{cursor:pointer;}#mermaid-svg-mZdXgit9Nm0eZ6OY .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .arrowheadPath{fill:#333333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mZdXgit9Nm0eZ6OY .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mZdXgit9Nm0eZ6OY .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mZdXgit9Nm0eZ6OY .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster text{fill:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY .cluster span{color:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mZdXgit9Nm0eZ6OY .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mZdXgit9Nm0eZ6OY rect.text{fill:none;stroke-width:0;}#mermaid-svg-mZdXgit9Nm0eZ6OY .icon-shape,#mermaid-svg-mZdXgit9Nm0eZ6OY .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mZdXgit9Nm0eZ6OY .icon-shape p,#mermaid-svg-mZdXgit9Nm0eZ6OY .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mZdXgit9Nm0eZ6OY .icon-shape rect,#mermaid-svg-mZdXgit9Nm0eZ6OY .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mZdXgit9Nm0eZ6OY .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mZdXgit9Nm0eZ6OY .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mZdXgit9Nm0eZ6OY :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}1. 选择标准化模板2. 可视化配置原型(字段/组件/交互)3. 保存配置,生成 Schema 数据4. AI 自动转译:Schema→标准化 PRD
反向能力:PRD→Schema(无需手动配置)
生成 Schema 回显至配置界面
能力1:PRD↔Schema 智能互转
5. AI 自动转译:Schema→标准化源码(前端无需等待)
能力2:Schema 转前端源码
6. 输入任务 ID 关联原型7. 查询已生成的源码8. 一键下载源码包9. 二次开发 & 上线发布
产品经理
样板间平台
原型配置 GUI
spc_page_schema_tab
文档平台
AI 服务
spc_page_code_tab
前端开发
开发工具插件
本地项目
上线发布
3.1.2 产品经理正向链路(PRD→Schema→文档平台)
核心逻辑:产品经理基于标准化模板完成原型配置,保存后自动存储 Schema,一键导出符合规范的 PRD,无需手动编写文档。
#mermaid-svg-xeerjULuSJXX3QdC{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xeerjULuSJXX3QdC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xeerjULuSJXX3QdC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xeerjULuSJXX3QdC .error-icon{fill:#552222;}#mermaid-svg-xeerjULuSJXX3QdC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xeerjULuSJXX3QdC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xeerjULuSJXX3QdC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xeerjULuSJXX3QdC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xeerjULuSJXX3QdC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xeerjULuSJXX3QdC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xeerjULuSJXX3QdC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xeerjULuSJXX3QdC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xeerjULuSJXX3QdC .marker.cross{stroke:#333333;}#mermaid-svg-xeerjULuSJXX3QdC svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xeerjULuSJXX3QdC p{margin:0;}#mermaid-svg-xeerjULuSJXX3QdC .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-xeerjULuSJXX3QdC .cluster-label text{fill:#333;}#mermaid-svg-xeerjULuSJXX3QdC .cluster-label span{color:#333;}#mermaid-svg-xeerjULuSJXX3QdC .cluster-label span p{background-color:transparent;}#mermaid-svg-xeerjULuSJXX3QdC .label text,#mermaid-svg-xeerjULuSJXX3QdC span{fill:#333;color:#333;}#mermaid-svg-xeerjULuSJXX3QdC .node rect,#mermaid-svg-xeerjULuSJXX3QdC .node circle,#mermaid-svg-xeerjULuSJXX3QdC .node ellipse,#mermaid-svg-xeerjULuSJXX3QdC .node polygon,#mermaid-svg-xeerjULuSJXX3QdC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xeerjULuSJXX3QdC .rough-node .label text,#mermaid-svg-xeerjULuSJXX3QdC .node .label text,#mermaid-svg-xeerjULuSJXX3QdC .image-shape .label,#mermaid-svg-xeerjULuSJXX3QdC .icon-shape .label{text-anchor:middle;}#mermaid-svg-xeerjULuSJXX3QdC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xeerjULuSJXX3QdC .rough-node .label,#mermaid-svg-xeerjULuSJXX3QdC .node .label,#mermaid-svg-xeerjULuSJXX3QdC .image-shape .label,#mermaid-svg-xeerjULuSJXX3QdC .icon-shape .label{text-align:center;}#mermaid-svg-xeerjULuSJXX3QdC .node.clickable{cursor:pointer;}#mermaid-svg-xeerjULuSJXX3QdC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xeerjULuSJXX3QdC .arrowheadPath{fill:#333333;}#mermaid-svg-xeerjULuSJXX3QdC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xeerjULuSJXX3QdC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xeerjULuSJXX3QdC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xeerjULuSJXX3QdC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xeerjULuSJXX3QdC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xeerjULuSJXX3QdC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xeerjULuSJXX3QdC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xeerjULuSJXX3QdC .cluster text{fill:#333;}#mermaid-svg-xeerjULuSJXX3QdC .cluster span{color:#333;}#mermaid-svg-xeerjULuSJXX3QdC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xeerjULuSJXX3QdC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xeerjULuSJXX3QdC rect.text{fill:none;stroke-width:0;}#mermaid-svg-xeerjULuSJXX3QdC .icon-shape,#mermaid-svg-xeerjULuSJXX3QdC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xeerjULuSJXX3QdC .icon-shape p,#mermaid-svg-xeerjULuSJXX3QdC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xeerjULuSJXX3QdC .icon-shape rect,#mermaid-svg-xeerjULuSJXX3QdC .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xeerjULuSJXX3QdC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xeerjULuSJXX3QdC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xeerjULuSJXX3QdC :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
选择模板 → 点击「创建原型」
可视化配置字段/组件/布局/交互
否
是
新建:输入任务 ID + 页面名称修改:直接保存(自动版本回溯)
自动生成标准化 PRD(含原型 URL/截图/字段说明)
样板间平台-模板中心
原型配置 GUI
配置完成?
点击「保存」
存储 Schema 至 spc_page_schema_tab
点击「导出 PRD」
一键复制 PRD 内容
粘贴至文档平台
3.1.3 前端下载代码链路(高效获取,无需等待)
核心逻辑:产品保存原型时已自动触发 AI 生成源码,前端通过插件输入任务 ID 即可快速查询、下载代码,无需等待转译过程。
#mermaid-svg-QEXiYkIEk7G1ICFm{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QEXiYkIEk7G1ICFm .error-icon{fill:#552222;}#mermaid-svg-QEXiYkIEk7G1ICFm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QEXiYkIEk7G1ICFm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QEXiYkIEk7G1ICFm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QEXiYkIEk7G1ICFm .marker.cross{stroke:#333333;}#mermaid-svg-QEXiYkIEk7G1ICFm svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QEXiYkIEk7G1ICFm p{margin:0;}#mermaid-svg-QEXiYkIEk7G1ICFm .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster-label text{fill:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster-label span{color:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster-label span p{background-color:transparent;}#mermaid-svg-QEXiYkIEk7G1ICFm .label text,#mermaid-svg-QEXiYkIEk7G1ICFm span{fill:#333;color:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm .node rect,#mermaid-svg-QEXiYkIEk7G1ICFm .node circle,#mermaid-svg-QEXiYkIEk7G1ICFm .node ellipse,#mermaid-svg-QEXiYkIEk7G1ICFm .node polygon,#mermaid-svg-QEXiYkIEk7G1ICFm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QEXiYkIEk7G1ICFm .rough-node .label text,#mermaid-svg-QEXiYkIEk7G1ICFm .node .label text,#mermaid-svg-QEXiYkIEk7G1ICFm .image-shape .label,#mermaid-svg-QEXiYkIEk7G1ICFm .icon-shape .label{text-anchor:middle;}#mermaid-svg-QEXiYkIEk7G1ICFm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QEXiYkIEk7G1ICFm .rough-node .label,#mermaid-svg-QEXiYkIEk7G1ICFm .node .label,#mermaid-svg-QEXiYkIEk7G1ICFm .image-shape .label,#mermaid-svg-QEXiYkIEk7G1ICFm .icon-shape .label{text-align:center;}#mermaid-svg-QEXiYkIEk7G1ICFm .node.clickable{cursor:pointer;}#mermaid-svg-QEXiYkIEk7G1ICFm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QEXiYkIEk7G1ICFm .arrowheadPath{fill:#333333;}#mermaid-svg-QEXiYkIEk7G1ICFm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QEXiYkIEk7G1ICFm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QEXiYkIEk7G1ICFm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QEXiYkIEk7G1ICFm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QEXiYkIEk7G1ICFm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QEXiYkIEk7G1ICFm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster text{fill:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm .cluster span{color:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QEXiYkIEk7G1ICFm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QEXiYkIEk7G1ICFm rect.text{fill:none;stroke-width:0;}#mermaid-svg-QEXiYkIEk7G1ICFm .icon-shape,#mermaid-svg-QEXiYkIEk7G1ICFm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QEXiYkIEk7G1ICFm .icon-shape p,#mermaid-svg-QEXiYkIEk7G1ICFm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QEXiYkIEk7G1ICFm .icon-shape rect,#mermaid-svg-QEXiYkIEk7G1ICFm .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QEXiYkIEk7G1ICFm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QEXiYkIEk7G1ICFm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QEXiYkIEk7G1ICFm :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}1. 输入任务 ID2. 查询该任务下的 Schema 数据3. 返回 Schema ID(关联源码)4. 查询 AI 已生成的标准化源码5. 返回源码包下载地址6. 保存至本地指定目录
前端开发工具插件
调用接口:getTemplateSchemaByJira
spc_page_schema_tab
调用接口:getTemplateCodeBySchemaId
spc_page_code_tab
插件一键下载源码
本地项目(基于标准化代码二次开发)
3.2 AI 生成代码(核心输入规范,确保转译准确)
AI 生成高质量、可复用的前端源码需传入 3 类标准化输入,严格遵循规范,确保转译后的代码符合团队编码标准,可直接用于二次开发。
3.2.1 输入 1:样板间代码(JSON 格式)
包含完整的页面目录结构、元信息和工业级基础代码,代码中添加标准化 Schema 映射注释,供 AI 精准识别 “代码 – Schema” 关联关系,同时遵循 React 最佳实践,兼顾可维护性和扩展性,示例:
{
"title": "test-form",
"key": 1,
"version": "1.0.0", // 新增:模板版本,便于迭代管理
"description": "通用表单模板,支持基础输入框、表单校验、提交反馈", // 新增:模板描述
"author": "frontend-team", // 新增:模板维护人
"path": "src/pages/spc-ui-demo/test-form",
"children": [
{
"title": "index.tsx",
"key": 2,
"path": "src/pages/spc-ui-demo/test-form/index.tsx",
"type": "file",
"isLeaf": true,
"code": "import React, { useCallback, useState } from 'react';\\nimport { ProForm, ProFormInput } from '@ant-design/pro-components'; // 规范组件引入路径\\nimport { message } from 'spc-ui-react';\\nimport type { ProFormProps } from '@ant-design/pro-components'; // 完善类型注解\\n\\n// 表单字段类型定义(贴合Schema结构)\\ntype FormFields = {\\n input1: string;\\n name: string;\\n};\\n\\n/**\\n * 通用表单页面组件\\n * 基于ProForm封装,适配Schema自动映射逻辑\\n */\\nconst FormPage: React.FC = () => {\\n // 表单加载状态管理\\n const [loading, setLoading] = useState<boolean>(false);\\n\\n // 表单提交处理(使用useCallback优化性能)\\n const handleSubmit = useCallback(async (values: FormFields) => {\\n setLoading(true);\\n try {\\n // 模拟接口请求\\n await new Promise(resolve => setTimeout(resolve, 800));\\n message.success(`提交成功:${JSON.stringify(values)}`);\\n return true;\\n } catch (error) {\\n message.error('提交失败,请重试');\\n console.error('表单提交异常:', error);\\n return false;\\n } finally {\\n setLoading(false);\\n }\\n }, []);\\n\\n // 表单基础配置(与Schema字段映射)\\n const formConfig: ProFormProps<FormFields> = {\\n layout: 'horizontal',\\n initialValues: {\\n input1: 'Input 1',\\n name: 'Rex',\\n },\\n submitter: {\\n searchConfig: { submitText: '提交' },\\n },\\n loading,\\n onFinish: handleSubmit,\\n };\\n\\n return (\\n <div style={{ padding: '20px', maxWidth: '800px', margin: '0 auto' }}>\\n <ProForm<FormFields> {…formConfig}>\\n {/* Schema映射注释:标准化格式,便于AI识别 */}\\n {/* @schema-mapping: componentsTree[0].children[0].props.fields[0][1].fields[0] | input1 */}\\n <ProFormInput\\n name=\\"input1\\"\\n label=\\"基础输入框\\"\\n required\\n placeholder=\\"请输入内容\\"\\n />\\n {/* @schema-mapping: componentsTree[0].children[0].props.fields[0][1].fields[1] | name */}\\n <ProFormInput\\n name=\\"name\\"\\n label=\\"姓名\\"\\n required\\n placeholder=\\"请输入姓名\\"\\n />\\n </ProForm>\\n </div>\\n );\\n};\\n\\n// 导出组件(支持按需引入)\\nexport default FormPage;\\n"
},
// 新增:补充样式文件,贴合实际项目结构
{
"title": "index.less",
"key": 3,
"path": "src/pages/spc-ui-demo/test-form/index.less",
"type": "file",
"isLeaf": true,
"code": ".form-container {\\n background: #fff;\\n padding: 24px;\\n border-radius: 8px;\\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);\\n}\\n"
}
]
}
3.2.2 输入 2:Schema Data(低代码引擎标准)
PRD 与代码的核心映射载体,结构化描述页面组件结构、字段属性、交互规则、样式配置及事件绑定,严格遵循低代码引擎通用协议,与样板间代码 1:1 映射,确保 AI 转译无偏差,示例:
{
// 协议版本:用于低代码引擎版本兼容
"version": "1.0.0",
// 组件映射表:声明页面依赖的所有组件,AI 转译时精准匹配 npm 包
"componentsMap": [
{
"componentName": "ProForm",
"package": "@ant-design/pro-components", // 与样板间代码引入路径一致
"version": "2.60.0", // 明确版本,避免依赖冲突
"destructuring": true,
"exportName": "ProForm",
"type": "form" // 补充组件类型,便于引擎分类管理
},
{
"componentName": "ProFormInput",
"package": "@ant-design/pro-components",
"version": "2.60.0",
"destructuring": true,
"exportName": "ProFormInput",
"type": "form-item"
},
{
"componentName": "Page",
"package": "spc-ui-react",
"version": "1.0.0",
"destructuring": false,
"exportName": "Page"
}
],
// 组件树:结构化描述页面层级、属性、子组件,与代码 DOM 结构一致
"componentsTree": [
{
"id": "form-page-root", // 唯一 ID,低代码引擎标识组件
"componentName": "Page",
"fileName": "FormPage",
"props": {
"style": { "background": "#f5f5f5", "minHeight": "100vh" }, // 页面根样式
"className": "form-page-container"
},
"children": [
{
"id": "pro-form-main",
"componentName": "ProForm", // 与样板间代码的 ProForm 组件匹配(替换原 CardForm)
"props": {
"formProps": {
"layout": "horizontal",
"initialValues": { "input1": "Input 1", "name": "Rex" },
"loading": false, // 绑定加载状态
"submitter": { // 提交按钮配置
"searchConfig": { "submitText": "提交" },
"resetButtonProps": { "disabled": false }
},
"labelCol": { "span": 6 }, // 表单布局配置
"wrapperCol": { "span": 18 }
},
// 事件绑定:与样板间代码的 handleSubmit 映射
"events": {
"onFinish": "handleSubmit"
}
},
"children": [
{
"id": "form-fields-group-1",
"props": { "columns": 1 }, // 栅格列数配置
"children": [
{
"id": "form-item-input1",
"componentName": "ProFormInput",
"props": {
"name": "input1", // 与代码字段名一致
"label": "基础输入框", // 优化标签名,贴合业务
"required": true,
"placeholder": "请输入内容", // 补充占位符
"tooltip": "必填项,支持字符、数字输入", // 补充提示文案
// 校验规则:AI 转译时生成对应代码
"rules": [
{ "required": true, "message": "请填写基础输入框" },
{ "max": 50, "message": "最多输入50个字符" }
],
"style": { "marginBottom": "16px" }
}
},
{
"id": "form-item-name",
"componentName": "ProFormInput",
"props": {
"name": "name", // 补充第二个字段,匹配样板间代码
"label": "姓名",
"required": true,
"placeholder": "请输入姓名",
"rules": [
{ "required": true, "message": "请填写姓名" },
{ "pattern": "/^[\\\\u4e00-\\\\u9fa5a-zA-Z0-9]+$/", "message": "仅支持中文、英文、数字" }
],
"style": { "marginBottom": "16px" }
}
}
]
}
]
}
]
}
],
// 元信息:补充完整,便于模板管理和追溯
"meta": {
"name": "通用表单模板", // 优化名称,贴合业务
"description": "基础表单模板,支持输入框、表单校验、提交反馈,适配AI转译",
"project_name": "spc-ui-demo", // 与代码路径一致
"creator": "frontend-team",
"createTime": "2026-03-11",
"updateTime": "2026-03-11",
"version": "1.0.0" // 模板版本,便于迭代
}
}
3.2.3 输入 3:AI 转译规则提示词(Markdown 格式)
定义 AI 转译核心逻辑,确保生成代码贴合团队编码规范,且与 Schema / 样板间代码精准映射,核心规则:
### AI 转译核心规则(贴合团队编码规范)
1. 注释识别规则
– 仅解析 `// @schema-mapping: [Schema路径] | [字段名]` 格式注释,以及 `@schema-block-begin/end` 包裹的区块注释;
– 路径/字段名不匹配则标记为无效注释,按冗余代码处理。
2. 代码结构处理规则
– 保留样板代码的组件层级、核心函数、类型注解等骨架,仅修改 Schema 绑定的属性;
– 删除无有效注释且 Schema 无对应字段的冗余代码,保留页面容器、异常处理等核心代码。
3. 字段属性映射规则
– 按优先级覆盖:name > label > required > rules > initialValues > placeholder 等属性;
– Schema 有该属性则替换,无则保留样板代码原值;
– 自动将 Schema 中的校验规则转换为 ProForm 标准格式。
4. 编码规范规则
– 遵循团队 ESLint 规范:单引号、语句加分号、TS 类型注解完整;
– 组件引入用绝对路径,兼容 React 18.x/TS 5.0+,函数/类名命名符合规范。
5. 异常兜底规则
– 转译失败时保留样板代码完整结构,标记异常位置;
– Schema 新增字段自动新增标准组件,版本冲突适配最新 API。
3.3 协议约定(标准化,确保兼容性)
统一 Schema 结构、代码注释、转译规则的协议规范,保障 PRD→Schema→代码全链路兼容,转译过程可复现、无误差。
3.3.1 配置平台 Schema 协议(核心:IPublicTypeProjectSchema)
定义低代码应用的标准化数据结构,确保 Schema 可复用、版本可兼容,核心字段说明:
| version | string | 是 | 协议版本号(如 1.0.0),用于版本兼容迭代 |
| componentsMap | IPublicTypeProCodeComponent[] | 是 | 页面组件映射(组件名、包名、版本、解构方式等) |
| componentsTree | IPublicTypePageSchema[] | 是 | 页面/组件树描述,1个原型仅对应1个根节点 |
核心子协议:
- IPublicTypeProCodeComponent:定义组件库映射关系(组件名、包名、版本等);
- IPublicTypePageSchema:页面容器 Schema,固定 componentName 为 Page;
3.3.2 样板间代码注释规范协议
目标:标准化注释格式,让 AI 精准识别代码与 Schema 的映射关系,语法如下:
// 单字段注释(表单/表格字段)
// @schema-mapping:<Schema路径> | <绑定字段名>
// 区块注释(表格列/表单区块)
// @schema-block-begin:<Schema路径> | <绑定字段名>
// 代码块内容(如表格列配置、表单字段组)
// @schema-block-end:<Schema路径>
常用区块类型:
| table-fields | 表格列配置 | columns |
| table-filters | 表格搜索/筛选项 | searchConfig.items |
| form-fields | 表单字段配置 | formProps.fields |
| header-info | 页头信息配置 | pageHeaderProps.form |
3.3.3 代码转译规则协议(确保代码可用)
3.4 表结构设计(MySQL,可直接复用)
设计 5 张核心表,覆盖模板、Schema、代码、操作记录、PRD 集成,字段规范、关联清晰,支持全链路数据存储和追溯。
| spc_page_template_tab(模板表) | id(INT(11), 主键自增)、template_name(VARCHAR(64))、template_schema(TEXT)、template_code(TEXT)、created_at(DATETIME)、updated_at(DATETIME) | 存储标准化页面模板的基础信息、原始 Schema 和样板代码 |
| spc_page_schema_tab(原型 Schema 表) | id(INT(11), 主键自增)、jira_id(VARCHAR(32))、template_id(INT(11), 外键)、page_name(VARCHAR(64))、schema_data(TEXT)、user_name(VARCHAR(32))、created_at(DATETIME) | 存储产品经理配置的原型 Schema 数据,关联模板和任务 ID |
| spc_page_code_tab(代码表) | id(INT(11), 主键自增)、schema_id(INT(11), 外键)、code(TEXT)、version(VARCHAR(16))、created_at(DATETIME) | 存储 AI 生成的前端源码,关联对应的原型 Schema |
| spc_record_tab(操作记录表) | id(INT(11), 主键自增)、schema_id(INT(11), 外键)、type(VARCHAR(32))、status(TINYINT(1))、process_duration(FLOAT)、operator(VARCHAR(32)) | 记录全链路操作日志(如 Schema 转代码、PRD 导出),便于问题排查 |
| spc_prd_tab(PRD 集成表) | id(INT(11), 主键自增)、schema_id(INT(11), 外键)、url(VARCHAR(256))、screenshot_url(VARCHAR(256))、status(VARCHAR(16)) | 存储导出 PRD 的相关信息(原型 URL、截图 CDN 地址) |
3.5 核心接口设计(RESTful 风格,可直接对接)
设计 7 个核心接口,覆盖 Schema 转代码、模板查询、代码下载等全流程,接口参数清晰、备注明确,便于前后端快速对接。
| Schema 转源码 | POST | /api/template/schemaToCodes | schema_id(必填,INT)、version(选填,VARCHAR) | {code: ‘’, status: 1/0, msg: ‘成功/失败原因’} | 产品保存原型时自动调用 |
| 通过 ID 获取模板 | GET | /api/template/getTemplateById | template_id(必填,INT) | {template_schema: ‘’, template_code: ‘’, status: 1} | 产品选择模板时调用 |
| 通过任务 ID 查询 Schema | GET | /api/template/getTemplateSchemaByJira | jira_id(必填,VARCHAR) | {schema_data: ‘’, page_name: ‘’, status: 1} | 前端插件输入任务 ID 后调用 |
| 保存 Schema 数据 | POST | /api/template/saveTemplateSchemaData | id(可选,INT)、jira_id(VARCHAR)、schema_data(TEXT) | {id: ‘’, status: 1/0, msg: ‘’} | 产品保存原型时调用(新增/更新) |
| 通过 Schema ID 获取代码 | GET | /api/template/getTemplateCodeBySchemaId | schema_id(必填,INT) | {code: ‘’, version: ‘’, status: 1} | 前端插件下载代码时调用 |
| 上传截图至 CDN | POST | /api/template/uploadFileToCdn | file(文件,必填)、schema_id(INT,必填) | {screenshot_url: ‘’, status: 1/0} | 产品导出 PRD 时自动调用 |
| 删除 Schema | DELETE | /api/template/deleteSchemaById | schema_id(必填,INT) | {status: 1/0, msg: ‘成功/失败’} | 产品删除原型时调用 |
3.6 模板 ID 编码规范(8 位数字,易扩展、易识别)
模板 ID 采用 8 位数字分层编码,按“端类型 + 业务属性 + 模板类型 + 模板细分”设计,便于管理、扩展和快速识别模板用途。
#mermaid-svg-oc3pRNayJznWOHOd{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oc3pRNayJznWOHOd .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oc3pRNayJznWOHOd .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oc3pRNayJznWOHOd .error-icon{fill:#552222;}#mermaid-svg-oc3pRNayJznWOHOd .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oc3pRNayJznWOHOd .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oc3pRNayJznWOHOd .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oc3pRNayJznWOHOd .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oc3pRNayJznWOHOd .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oc3pRNayJznWOHOd .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oc3pRNayJznWOHOd .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oc3pRNayJznWOHOd .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oc3pRNayJznWOHOd .marker.cross{stroke:#333333;}#mermaid-svg-oc3pRNayJznWOHOd svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oc3pRNayJznWOHOd p{margin:0;}#mermaid-svg-oc3pRNayJznWOHOd .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-oc3pRNayJznWOHOd .cluster-label text{fill:#333;}#mermaid-svg-oc3pRNayJznWOHOd .cluster-label span{color:#333;}#mermaid-svg-oc3pRNayJznWOHOd .cluster-label span p{background-color:transparent;}#mermaid-svg-oc3pRNayJznWOHOd .label text,#mermaid-svg-oc3pRNayJznWOHOd span{fill:#333;color:#333;}#mermaid-svg-oc3pRNayJznWOHOd .node rect,#mermaid-svg-oc3pRNayJznWOHOd .node circle,#mermaid-svg-oc3pRNayJznWOHOd .node ellipse,#mermaid-svg-oc3pRNayJznWOHOd .node polygon,#mermaid-svg-oc3pRNayJznWOHOd .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oc3pRNayJznWOHOd .rough-node .label text,#mermaid-svg-oc3pRNayJznWOHOd .node .label text,#mermaid-svg-oc3pRNayJznWOHOd .image-shape .label,#mermaid-svg-oc3pRNayJznWOHOd .icon-shape .label{text-anchor:middle;}#mermaid-svg-oc3pRNayJznWOHOd .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oc3pRNayJznWOHOd .rough-node .label,#mermaid-svg-oc3pRNayJznWOHOd .node .label,#mermaid-svg-oc3pRNayJznWOHOd .image-shape .label,#mermaid-svg-oc3pRNayJznWOHOd .icon-shape .label{text-align:center;}#mermaid-svg-oc3pRNayJznWOHOd .node.clickable{cursor:pointer;}#mermaid-svg-oc3pRNayJznWOHOd .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oc3pRNayJznWOHOd .arrowheadPath{fill:#333333;}#mermaid-svg-oc3pRNayJznWOHOd .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oc3pRNayJznWOHOd .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oc3pRNayJznWOHOd .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oc3pRNayJznWOHOd .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oc3pRNayJznWOHOd .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oc3pRNayJznWOHOd .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oc3pRNayJznWOHOd .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oc3pRNayJznWOHOd .cluster text{fill:#333;}#mermaid-svg-oc3pRNayJznWOHOd .cluster span{color:#333;}#mermaid-svg-oc3pRNayJznWOHOd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oc3pRNayJznWOHOd .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oc3pRNayJznWOHOd rect.text{fill:none;stroke-width:0;}#mermaid-svg-oc3pRNayJznWOHOd .icon-shape,#mermaid-svg-oc3pRNayJznWOHOd .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oc3pRNayJznWOHOd .icon-shape p,#mermaid-svg-oc3pRNayJznWOHOd .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oc3pRNayJznWOHOd .icon-shape rect,#mermaid-svg-oc3pRNayJznWOHOd .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oc3pRNayJznWOHOd .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oc3pRNayJznWOHOd .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oc3pRNayJznWOHOd :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
模板 ID:8 位数字
1-2 位:端类型
3-4 位:业务属性
5-6 位:模板类型
7-8 位:模板细分+变种
01 = PC、02 = H5、03 = 小程序、04 = APP
01 = 通用、02 = 业务线 A、03 = 业务线 B、04 = 业务线 C
01 = 表格查询页、02 = 表单页、03 = 详情页、04 = 日志页、05 = 统计页
01 = 基础版、02 = 带 Tab 版、03 = 高级版、04 = 定制版(后缀自增)
编码示例:
| 01 PC | 01 通用 | 01 表格查询页 | 01 基础版 | 01010101 | PC 端通用基础表格查询页(最常用) |
| 01 PC | 01 通用 | 01 表格查询页 | 02 带 Tab 版 | 01010102 | PC 端通用带 Tab 表格查询页 |
| 01 PC | 01 通用 | 02 表单页 | 01 基础版 | 01010201 | PC 端通用基础表单页 |
| 02 H5 | 02 业务线 A | 03 详情页 | 01 基础版 | 02020301 | H5 端业务线 A 基础详情页 |
3.7 落地注意事项(避坑指南,实战必备)
结合真实落地经验,总结 5 个核心避坑点,避免流程中断、兼容性问题,降低方案落地难度:
四、附录:核心概念说明
| 样板间 | 预定义的页面模板库,包含常见业务场景的标准实现 | 产品可直接选用,无需从零设计页面 |
| Schema | 页面的“说明书”,结构化描述页面组件、字段、交互规则 | 连接 PRD 与代码的核心载体,实现自动转译 |
| 低代码引擎 | 可视化开发平台,支持拖拽、配置生成页面 | 产品无编码配置原型的核心支撑 |
| PRD | 产品需求文档,描述产品功能、字段、交互要求 | 全流程的需求源头,AI 转译的输入基础 |
| AI 转译 | 用 AI 将 PRD / Schema 转换成代码,或 Schema 转换成 PRD | 消除人工转译,提升效率,减少误差 |
五、总结与拓展建议
5.1 总结
本方案通过「样板间平台 + 可视化 GUI + AI 转译 + 插件生态」,构建了 PRD→页面→源码的全链路自动化,核心解决了传统研发中人工转译效率低、交付周期长、返工率高的痛点。方案具备三大优势:
- 可落地性强:无需重构现有研发流程,可快速嵌入,优先覆盖 90% 通用场景,降低落地门槛;
- 标准化程度高:统一模板、Schema、代码、PRD 规范,提升团队协作一致性;
- 全角色提效:产品无需编码,前端减少重复工作,管理员降低维护成本,实现全团队共赢。
通过本方案,可实现 PRD→页面生成 100% 成功率、PRD→代码生成 ≥ 90% 成功率,平均需求交付周期缩短 30%,有效提升研发效率,降低沟通和维护成本。
5.2 拓展建议(落地进阶)
- 快速落地:初期基于现有低代码引擎(如阿里 LowCodeEngine)搭建原型配置 GUI,无需从零开发,降低开发成本;
- AI 优化:初期对接通用代码生成 API(如 GPT – 4o、Claude),后期基于团队代码库微调模型,提升代码贴合度;
- 插件迭代:先开发 VS Code 版本插件,覆盖多数前端场景,后续整合浏览器插件能力,实现“一插件全覆盖”;
- 场景扩展:落地后逐步覆盖定制化场景,新增业务专属模板,进一步提升自动化覆盖率。




