用途:Factorial Code 流程的输入参数由 parametersSchema.json 中的 JSON Schema 定义,同一份模式会被 fcode-forms 渲染成网页表单,因此设计模式即设计表单。参数值在代码中通过 fcode.context.parameters 获取(见 fcode-javascript / fcode-python)。模式使用 react-jsonschema-form 渲染,支持其 ui: 选项。
编写方式:顶层为 "type": "object",含 properties 映射(每字段一项)及可选 required 数组。按字段选择类型(string、integer、number、boolean、array、object)并添加校验,如 minimum/maximum、format、enum/oneOf、uniqueItems、嵌套 properties。用每字段的 ui 对象控制渲染,例如 "ui": { "ui:widget": "textarea" }。可打开 assets/parametersSchema.sample.json 获取覆盖所有受支持类型、可直接复制修改的完整模式。
字段类型与控件:文本为 string,可用 format: "email",ui:widget 可为 textarea、color、hidden、file;敏感字段用 "isSensitive": true 掩码输入;数字为 integer/number 配合 minimum/maximum;布尔为 boolean;选择项可用 enum(下拉)、oneOf 的 { const, title }(配合 ui:widget: "radio" 的带标签单选)或 array 配合 ui:widget: "checkboxes" 与 uniqueItems;结构化字段为带自身 properties/required 的嵌套 object,以及字符串或对象数组(type: "array" + items);原始 JSON 用 "ui": { "ui:field": "json" }。条件字段使用顶层 dependencies 依据另一字段值显示/隐藏字段。字段前后可加每字段 markdown 对象(before/after 字符串)渲染块级 markdown(完整 GFM,含表格)。字段约十个以上时,可用根级 ui:steps 节点拆分为多步表单。连接外部账号:对 string 或 boolean 使用 "ui": { "ui:widget": "oauth", "ui:options": { "authorizationUrl": … } } 渲染按钮,在弹窗中完成 OAuth 流程(对 object 用 "ui:field": "oauth")。
注意事项:file 控件会在流程运行前自动上传至 Storage,参数以 fcode.storage://… 引用形式到达而非文件内容,需去掉前缀再调用 fcode.storage.download(...)。isSensitive: true 只影响显示/掩码,仍应从 secret 变量读取值。oauth 字段的 authorizationUrl 必须用预渲染变量以 { "$ref": "#/variables/x" } 注入,不能用 {{x}}(会被 Mustache HTML 转义导致按钮禁用)。模式是表单字段的唯一来源,改字段应改模式而非表单嵌入代码。模式是数据而非代码,不含可执行 JavaScript,表单文本均为 markdown,不渲染原始 HTML,客户端行为应放在嵌入页面中(见 fcode-forms)。可见文本可通过 schema 字符串(标题、描述、ui:placeholder)接受 fcode.i18n("key") 标记实现翻译,在表单返回前由服务端替换(见 fcode-i18n)。