Skip to content

协议消费映射

前端只认 src/types/protocol.ts 里的一组接口——它们是前后端的契约。本篇逐字段给出「这个协议字段被前端的哪一层、怎么消费」,并诚实列出已声明但前端尚未消费/实现的字段,避免你照着协议写了后端却发现前端没生效。

协议由后端生产(见数据建模 · 设计应用架构 · 设计),前端是唯一消费方。

A. 响应与鉴权

字段消费方怎么用
Result<T>.success / code / messagehttp.ts 响应拦截器success=false 集中弹错;code 命中 40100/40101 清 token
Result<T>.datarequest<T>解包成业务 T 返回
LoginResult.tokenauth storelocalStorage,请求拦截器加 Bearer
LoginResult.user / LoginUser.*auth store存内存,顶栏展示

B. 门户:模块与菜单

字段消费方怎么用
ModuleView.code / nameapp store / 导航模块编码与显示名
MenuNode.code路由 / 缓存键:menu 参数、pageCache
MenuNode.label / icon导航菜单文案与图标
MenuNode.modelfirstLeaf / 列表页model 才是可落地的叶子;无则为分组
MenuNode.viewType(间接)视图类型(与页面 schema 呼应)
MenuNode.children递归树工具构建菜单树、面包屑、命令面板
MenuNode.modelPath / path / seq未见前端消费(见下「未消费清单」)

C. 字段:FieldSchema(渲染引擎的输入)

FieldSchema 是字段渲染的全部依据,被渲染引擎Meta* 组件密集消费:

字段消费方怎么用
field引擎 / 各处字段名;注册表 field 维度、dataIndex、表单项 name
label各处列标题、表单 label、占位文案
component引擎选组件首要依据(select→下拉…)
dataType引擎选组件次要依据、对齐方式
operatorbuildQueryRequest搜索值转 FilterClause 的操作符
requiredMetaForm生成必填校验规则
readonly输入组件禁用录入
listMetaTablecolumns 为空时,取 list=true 作列
formMetaFormform=true 作表单项
detailMetaDetail(分区字段来源)
searchMetaSearch高级搜索字段来源
sortableMetaTable列是否可排序
primaryKeyidFieldOf前端取主键全靠它(缺省 id
lengthTextInput / 校验maxlength 与长度规则
help表单项字段说明
widthMetaTable列宽(缺省按 component 推)
placeholder输入组件占位
optionsSelectInput / TagCell下拉选项、tag 文案与配色
order未见前端消费(列序取 columns/fields 数组序)

D. 页面:PageSchema(页面渲染的总入口)

字段消费方怎么用
menuCode缓存键pageCache 键、schema 请求参数
model数据层queryPage/getById/create… 的模型;toModelPath 现算路径
viewType(页面注册表)整页替换维度(当前未接线)
title页头页面标题
instanceNameResourceDetailView详情标题优先取该字段值
tabFieldResourceListView页签切换时的等值过滤字段
keywordPlaceholderMetaSearch关键词框占位
fields各处全字段渲染字典fieldMapOf 建索引
tabsStatusTabs状态页签
keywordFieldsMetaSearch有则显示关键词框
searchItemsMetaSearch高级搜索项
columnsMetaTable列字段名顺序(空则取 list=true
formGroupsMetaForm表单分组(空则单组)
detailSectionsMetaDetail详情分区
actions列表/表单工具栏/行/批量动作、提交端点反查
modelPath未见前端消费(前端用 model 现算路径)
formMode已声明未实现(steps 分步未做)

E. 动作:ActionSchema

字段消费方怎么用
key / label各处动作标识与按钮文案
builtin分发 / 渲染内置三动作(create/edit/detail/delete/export)特殊处理
behaviorbehaviorOf分发到 ROUTE/DRAWER/DOWNLOAD/API
endpointcallByEndpoint自定义动作与提交的请求地址
target / target.kindonNavigateROUTE 时拼路由(NEW/EDIT/DETAIL/MENU/PATH)
target.menuCode / pathonNavigate跳目标菜单 / 自定义路由
whenevalWhen行动作可见性(仅支持单条件 field == 'value'
confirm / dangerMetaTable二次确认、危险样式
permission已声明未实现(前端无权限门控)

已声明未实现 / 未消费

下面这些字段后端可以下发,但前端目前不会据此改变行为。照协议写后端前请留意:

协议字段状态前端实际行为 / 补齐方向
PageSchema.modelPath / ViewSchema.modelPath / MenuNode.modelPath未消费前端用 modeltoModelPath 现算路径;如需消费需改 data.ts
FieldSchema.order未消费列序取 columns(或 fields 数组序);如需 order 排序需在 MetaTable/MetaForm 排序
PageSchema.formModesteps未实现MetaForm 仅按 formGroups 顺序平铺;分步向导待实现
FormGroupSchema.step未实现同上,分步标记未转成 stepper
DetailSectionSchema.tab未实现MetaDetail 分区顺序平铺,未做 tab 切换
ActionSchema.permission未实现无权限门控;动作按 schema 全量渲染
ViewSchema(整体)仅调试fetchViewSchema 调试用,不参与页面渲染;idField/codeField/instanceNameField 未在渲染消费
整页替换 selectPageWidget机制就绪未接线pageRegistry 已实现,但无视图调用,详见渲染引擎

这张表是「契约的诚实边界」

元数据驱动最怕「协议写了、两端理解不一致」。这张清单明确划出前端当前的消费边界:表 C/D/E 里有消费方的字段是可用的;本表里的字段要么前端自己算、要么还没接。补齐它们多数只是局部改动,但在补齐前不要假设它们生效。

下一步