Skip to content

AI 编码指引

组件包内置 AI_GUIDE.md,它是面向 AI 编码工具的现行公开 API 约束,包含默认值、组件类型、接口签名和生成后检查。业务项目应让 AI 先读本地安装版本,而不是凭历史代码猜用法。

初始化项目指令

bash
npx antdv-superform init-ai

命令会检测并更新已有的 AGENTS.md、CLAUDE.md、GEMINI.md、Copilot 或 Cursor 指令入口。

安全规则:

  • 不覆盖既有项目约束,只维护组件库自己的标记区。
  • 没有检测到入口时不创建文件,而是输出可手工添加的提示词。
  • 标记不完整时拒绝改写,避免破坏文件。
  • 检测到 Cursor rules 目录时创建独立规则文件。
  • 重复执行保持幂等。

建议补充的项目事实

md
- 项目统一通过 src/plugins/super-form.ts 安装,不在页面重复配置 dictApi。
- 分页请求字段是 pageNum/pageSize,响应为 data.list/data.total。
- 业务主键来自接口类型,禁止根据 label 猜字段。
- 可用扩展字段:ExtUserPicker、ExtOrgTree。
- Upload 默认接口和最大文件大小已全局配置。

这些事实比“请写一个表格”更能约束生成结果。

公共导出

ts
import {
  SuperForm,
  useForm,
  defineForm,
  SuperTable,
  useTable,
  defineTable,
  SuperDetail,
  useDetail,
  defineDetail,
  createModal,
  useModal,
  useModalForm,
  SuperButtons,
  useButtons,
  diagnoseSchema,
} from "antdv-superform";

默认导出是插件对象,提供 installregisterComponentsetDefaultProps。类型也从包根导入。

生成 Schema 的顺序

  1. 确认页面场景:Form、Table、Detail 或 ModalForm。
  2. 从业务接口类型确定 field、rowKey 和请求参数。
  3. 选择字段/数组容器,不虚构内置 type。
  4. 复用项目字典、权限、上传和默认配置。
  5. 只添加覆盖默认行为所需的 attrs。
  6. 为关联值明确 labelFieldendFieldvModelFields
  7. 用诊断工具和 TypeScript 检查。
ts
// 推荐:意图明确,无冗余默认
{
  type: 'Input',
  field: 'name',
  label: '名称',
  required: true,
}

// 不推荐:重复默认或无内容
{
  type: 'Input',
  field: 'name',
  label: '名称',
  attrs: { placeholder: '请输入名称' },
  options: [],
  hidden: false,
}

exaTypes 属性覆盖导航

下面按 src/exaTypes.d.ts 的声明归属列出全部 Schema 相关属性。外部继承的 Ant Design Vue Props 不在本文件逐项展开,统一通过 attrs 进入对应底层组件。

ExtBaseOption / ExtRow

属性组文档
typefieldinitialValuevModelFieldsSchema 与数据模型
labellabelSlottooltip展示与辅助
rulesrequired校验机制
attrsdynamicAttrs响应式与联动
hiddendisabledcomputedonUpdate响应式与联动
excludeSchema 场景
ononXxx事件与上下文
colPropsspanblockbreakAfteralign布局与结构
slotsviewRender渲染与插槽
rowPropssubSpangutter布局与结构

详情、分组与表单

类型直接声明属性详细页面
ExtDescriptionsPropsmodewrapperCollabelCollabelAligntableLayoutnoInputspanSuperDetail
ExtGroupBaseOptiontitlebuttonssubItemsdescriptionsProps布局容器
ExtGroupOptioncomponentignoreTableTitlecontentAttrs布局容器
ExtDescriptionsOptiontitledataSourcebuttonsmodeattrsisContainersubItemsDescriptions
ExtFormOptiondataSourceattrsisContainercompactignoreRulessubItemsbuttonsdescriptionsPropsSuperForm

按钮

类型直接声明属性详细页面
ButtonItemlabelnamecustomRenderconfirmTextroleNameunauthorizedcolorvisibleIndropdowntooltipdisabledTooltipiconattrshiddendisabledmetaonClick单个按钮
ExtButtonGroupattrslimitbuttonTypebuttonShapesizealignvisibleInplacementdividerlabelModemoreLabelunauthorizedhiddendisabledtargetSlotmethodseffectDataactions按钮组属性

Table、SuperTable 与标签筛选

类型直接声明属性详细页面
TableApisqueryinfosaveupdatedelete接口与数据适配
TabsHeaderfieldinitialValueborderedoptionsdictNamelabelAsValueactiveKeyslotscustomTabSuperTable tabs
ExtColumnsItemviewRendercolumnPropsTable 列
ExtTableOptionfieldtitleattrseditablerowEditorcolumnstabscolumnPropsindexColumnbuttonsrowButtonsmodalPropsdescriptionsPropsTable 容器
rowEditoreditModeaddModeformmodalPropsonSaveonCancel四种编辑方式
TableScanHightmaxHeightisScanHeightresizeHeightOffsetisFixedHeightinheritHeightSuperTable 高度
RootTableOptionisContainerapisdataSourceparamsimmediatebeforeQueryafterQueryonLoadedsearchFormpaginationattrsSuperTable
searchFormsubItemssearchOnChangeteleportlimit 及 Form 属性搜索表单

数组容器

类型直接声明属性详细页面
ExtListOptionfieldtitleattrsbuttonscolumnsrowButtonsdescriptionsPropsList
ExtListGroupOptionfieldattrs.labelIndexattrs.rowKeyrowButtonscolumnsListGroup
ExtInputListtitleattrs.labelIndexrowButtonscolumns 及 FormItem 属性InputList
ExtInputGroupOptionsubItems 及 Row 属性InputGroup

Tabs 与 Collapse 容器

类型直接声明属性详细页面
ExtTabsOptionactiveKeybuttonssubItemsTabs
ExtTabItemlabelkeyiconsubItems 及 GroupBase 属性页签项
ExtCollapseOptiontitleactiveKeysubItemsCollapse
CollapseItemlabelkeyiconsubItemsbuttons 及 GroupBase 属性Collapse

通用字段与输入字段

类型直接声明属性详细页面
ExtFormItemOptionvaluelabelFieldtagViewerformItemPropsdescriptionsPropseditable数据绑定展示辅助
ExtInputOptiononSearchattrs: InputPropsInput
ExtAutoCompleteOptionoptionsdictNameattrs: AutoCompletePropsAutoComplete
ExtSlotOptionrenderInputSlot / InfoSlot

选择字段

类型直接声明属性详细页面
DefaultOptionTypelabelvaluechildrendisabled 及业务扩展字段options 格式
ExtSelectoptionsdictNamevalueToNumberlabelAsValuestringifyValue通用值转换
ExtSelectOptionattrs: SelectPropsSelect
ExtTagSelectOption.attrsmultiplestringifyValueTagSelect
ExtTagInputOption.attrsstringifyValuenewLabelclosableTagInput
ExtTreeOptionlabelFieldattrs: TreeSelectPropstreeDataTreeSelect
ExtSwitchOptionvalueLabelsattrs.firstIsCheckedattrs.defaultChecked 及 SwitchPropsSwitch
ExtRadioOptionattrs: RadioGroupProps 及 ExtSelectRadio / Checkbox

日期范围与 Upload

类型直接声明属性详细页面
ExtDateRangeendFieldstringifyValue范围值模式
ExtUpload.vModelFieldsfileListUpload 字段值
ExtUpload.attrs.apisuploaddeletedownloadUpload 接口
ExtUpload.attrsinfoNamesvalueKeyminSizemaxSizeisSinglehideOnMaxuploadModetiptitlerepeatableisView 及 UploadProps文件上传

类型注册表与内部模型声明

WrapperTypes 声明 InfoSlotFormGroupFragmentCardListListGroupTabsTableCollapseDescriptionsWidgetTypes 声明 ButtonsHiddenInputSlotInfoSlotTextHTMLTextareaInputAutoCompleteInputNumberDatePickerTimePickerDateRangeTimeRangeSelectTreeSelectRadioCheckboxSwitchUploadInputGroupInputListTagInputTagSelect

ModelDataModelDataGroupModelChildren 是内部建模类型,不是 Schema 配置。其声明属性 refDatarefNameparentindexinitialValuefieldNamepropChainruleschildrenlistDatamodelsMap 用于组件库内部模型图;业务回调只使用公开的 effectData,不应直接构造这些对象。

废弃属性迁移

旧属性/API现行写法
hideInTableexclude: ['table']
hideInFormexclude: ['form']
hideInDescriptionexclude: ['description']
blockedblock
wrappingbreakAfter
valueToLabellabelAsValue
valueToStringstringifyValue
TreeSelect datatreeData
DateRange keepFieldendField
validOnvisibleIn
invalidDisabledunauthorized: 'disable'
roleModeunauthorized
forSlottargetSlot
表格 editeditablerowEditor
editMode / addModerowEditor.editMode / rowEditor.addMode
editFormrowEditor.form
searchSchemasearchForm
form.setDataform.resetFields
registComponentregisterComponent
labelBgColor项目主题或样式变量
borderColor项目主题或样式变量

类型中保留旧属性用于迁移,不代表新代码应继续使用。

生成后自检

  1. 所有导入来自包根或项目统一封装。
  2. type 是内置类型或已注册 Ext*。
  3. field、rowKey、接口参数来自业务类型。
  4. 分页需求显式配置 pagination。
  5. params、immediate、searchForm 位于 SuperTable 根级。
  6. 没有生成重复默认值和空配置。
  7. CRUD、Upload、字典契约与接口一致。
  8. 需要提交的隐藏字段已声明 Hidden。
  9. 动态回调只读取当前场景提供的 effectData。
  10. 执行 Schema 诊断和 TypeScript 检查。

基于 MIT 许可发布