weaver-e10-builder 1.5.16 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +4 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/form-ebuilder-scope.d.ts +21 -0
- package/dist/commands/form-ebuilder-scope.d.ts.map +1 -1
- package/dist/commands/form-ebuilder-scope.js +41 -8
- package/dist/commands/form-ebuilder-scope.js.map +1 -1
- package/dist/commands/form-layout-code-reviewed.d.ts +3 -0
- package/dist/commands/form-layout-code-reviewed.d.ts.map +1 -0
- package/dist/commands/form-layout-code-reviewed.js +61 -0
- package/dist/commands/form-layout-code-reviewed.js.map +1 -0
- package/dist/commands/form-layout-describe.d.ts +3 -0
- package/dist/commands/form-layout-describe.d.ts.map +1 -0
- package/dist/commands/form-layout-describe.js +58 -0
- package/dist/commands/form-layout-describe.js.map +1 -0
- package/dist/commands/form-layout-diff.d.ts +3 -0
- package/dist/commands/form-layout-diff.d.ts.map +1 -0
- package/dist/commands/form-layout-diff.js +48 -0
- package/dist/commands/form-layout-diff.js.map +1 -0
- package/dist/commands/form-layout-document.d.ts +3 -0
- package/dist/commands/form-layout-document.d.ts.map +1 -0
- package/dist/commands/form-layout-document.js +81 -0
- package/dist/commands/form-layout-document.js.map +1 -0
- package/dist/commands/form-layout-edit.d.ts +3 -0
- package/dist/commands/form-layout-edit.d.ts.map +1 -0
- package/dist/commands/form-layout-edit.js +51 -0
- package/dist/commands/form-layout-edit.js.map +1 -0
- package/dist/commands/form-layout-init-reviewed.d.ts +3 -0
- package/dist/commands/form-layout-init-reviewed.d.ts.map +1 -0
- package/dist/commands/form-layout-init-reviewed.js +78 -0
- package/dist/commands/form-layout-init-reviewed.js.map +1 -0
- package/dist/commands/form-layout-restore.d.ts.map +1 -1
- package/dist/commands/form-layout-restore.js +23 -0
- package/dist/commands/form-layout-restore.js.map +1 -1
- package/dist/commands/form-layout-template-catalog.d.ts +3 -0
- package/dist/commands/form-layout-template-catalog.d.ts.map +1 -0
- package/dist/commands/form-layout-template-catalog.js +45 -0
- package/dist/commands/form-layout-template-catalog.js.map +1 -0
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +33 -3
- package/dist/commands/form.js.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +12 -5
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.js +5 -0
- package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.d.ts +6 -1
- package/dist/services/actionflow/components/action_eb_delete.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +23 -5
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete_compiler.js +22 -0
- package/dist/services/actionflow/components/action_eb_delete_compiler.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +13 -4
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +9 -2
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/date_trigger.js +2 -2
- package/dist/services/actionflow/components/date_trigger.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +11 -10
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/event_button.js +1 -1
- package/dist/services/actionflow/components/event_button.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts +29 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +67 -3
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +2 -2
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +44 -1
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +231 -5
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +8 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +120 -14
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/system_params.d.ts.map +1 -1
- package/dist/services/actionflow/system_params.js +4 -1
- package/dist/services/actionflow/system_params.js.map +1 -1
- package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
- package/dist/services/actionflow/trigger_common.js +12 -3
- package/dist/services/actionflow/trigger_common.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +117 -40
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/form-layout-code-reviewed.d.ts +32 -0
- package/dist/services/form-layout-code-reviewed.d.ts.map +1 -0
- package/dist/services/form-layout-code-reviewed.js +101 -0
- package/dist/services/form-layout-code-reviewed.js.map +1 -0
- package/dist/services/form-layout-describe.d.ts +4 -0
- package/dist/services/form-layout-describe.d.ts.map +1 -0
- package/dist/services/form-layout-describe.js +107 -0
- package/dist/services/form-layout-describe.js.map +1 -0
- package/dist/services/form-layout-diff.d.ts +37 -0
- package/dist/services/form-layout-diff.d.ts.map +1 -0
- package/dist/services/form-layout-diff.js +232 -0
- package/dist/services/form-layout-diff.js.map +1 -0
- package/dist/services/form-layout-document-apply.d.ts +23 -0
- package/dist/services/form-layout-document-apply.d.ts.map +1 -0
- package/dist/services/form-layout-document-apply.js +82 -0
- package/dist/services/form-layout-document-apply.js.map +1 -0
- package/dist/services/form-layout-document.d.ts +13 -0
- package/dist/services/form-layout-document.d.ts.map +1 -0
- package/dist/services/form-layout-document.js +228 -0
- package/dist/services/form-layout-document.js.map +1 -0
- package/dist/services/form-layout-edit.d.ts +21 -0
- package/dist/services/form-layout-edit.d.ts.map +1 -0
- package/dist/services/form-layout-edit.js +103 -0
- package/dist/services/form-layout-edit.js.map +1 -0
- package/dist/services/form-layout-init-plan.d.ts +54 -0
- package/dist/services/form-layout-init-plan.d.ts.map +1 -0
- package/dist/services/form-layout-init-plan.js +211 -0
- package/dist/services/form-layout-init-plan.js.map +1 -0
- package/dist/services/form-layout-source/review.d.ts +4 -0
- package/dist/services/form-layout-source/review.d.ts.map +1 -0
- package/dist/services/form-layout-source/review.js +54 -0
- package/dist/services/form-layout-source/review.js.map +1 -0
- package/dist/services/form-layout-template-advanced.d.ts +5 -0
- package/dist/services/form-layout-template-advanced.d.ts.map +1 -1
- package/dist/services/form-layout-template-advanced.js +17 -1
- package/dist/services/form-layout-template-advanced.js.map +1 -1
- package/dist/services/form-layout-template-catalog.d.ts +13 -0
- package/dist/services/form-layout-template-catalog.d.ts.map +1 -0
- package/dist/services/form-layout-template-catalog.js +27 -0
- package/dist/services/form-layout-template-catalog.js.map +1 -0
- package/dist/services/form-layout-template-flow.d.ts +1 -1
- package/dist/services/form-layout-template-flow.d.ts.map +1 -1
- package/dist/services/form-layout-template-flow.js.map +1 -1
- package/dist/services/form-layout-template-verification.d.ts +34 -0
- package/dist/services/form-layout-template-verification.d.ts.map +1 -0
- package/dist/services/form-layout-template-verification.js +124 -0
- package/dist/services/form-layout-template-verification.js.map +1 -0
- package/dist/services/form-style-template.d.ts +3 -3
- package/dist/services/form-style-template.d.ts.map +1 -1
- package/dist/services/form-style-template.js +18 -13
- package/dist/services/form-style-template.js.map +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +24 -19
- package/skill-docs/_catalog.md +108 -106
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbDelete.md +60 -3
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +35 -33
- package/skill-docs/references/common/capability-boundaries.md +20 -1
- package/skill-docs/references/common/guide-plan-template.md +29 -3
- package/skill-docs/references/common/map.md +11 -7
- package/skill-docs/references/common/ref-cli-commands.md +18 -4
- package/skill-docs/references/form/guide-browser-definition.md +57 -13
- package/skill-docs/references/form/guide-create-form.md +258 -258
- package/skill-docs/references/form/layout/code-block/code-block-guide.md +153 -0
- package/skill-docs/references/form/layout/code-block/controls.md +60 -0
- package/skill-docs/references/form/layout/code-block/coverage.md +32 -0
- package/skill-docs/references/form/layout/code-block/details.md +57 -0
- package/skill-docs/references/form/layout/code-block/events-validation.md +42 -0
- package/skill-docs/references/form/layout/code-block/foundations-fields.md +56 -0
- package/skill-docs/references/form/layout/code-block/layout-css.md +116 -0
- package/skill-docs/references/form/layout/code-block/recipes.md +164 -0
- package/skill-docs/references/form/layout/code-block/troubleshooting.md +49 -0
- package/skill-docs/references/form/layout/code-block/ui-global.md +47 -0
- package/skill-docs/references/form/layout/document.md +39 -0
- package/skill-docs/references/form/layout/incremental.md +133 -0
- package/skill-docs/references/form/layout/initialization.md +39 -0
- package/skill-docs/references/form/layout/inspect-edit.md +76 -0
- package/skill-docs/references/form/layout/layout-overview.md +67 -0
- package/skill-docs/references/form/layout/management.md +64 -0
- package/skill-docs/references/form/layout/planning.md +76 -0
- package/skill-docs/references/form/layout/source-restoration.md +388 -0
- package/skill-docs/references/form/layout/template/advanced-css.md +167 -0
- package/skill-docs/references/form/layout/template/advanced.md +318 -0
- package/skill-docs/references/form/layout/template/easy.md +64 -0
- package/skill-docs/references/form/layout/template/flow.md +30 -0
- package/skill-docs/references/form/layout/template/template-guide.md +56 -0
- package/skill-docs/references/form/layout/workflow-layout.md +44 -0
- package/skill-docs/references/form/ref-form-fields.md +303 -301
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +189 -187
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
export interface TemplateEvidence {
|
|
3
|
+
kind: 'advanced' | 'flow';
|
|
4
|
+
id: string;
|
|
5
|
+
fingerprint: string;
|
|
6
|
+
style: Record<string, unknown>;
|
|
7
|
+
columns?: Array<{
|
|
8
|
+
type: string;
|
|
9
|
+
size: number;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export interface EasyTemplateEvidence {
|
|
13
|
+
kind: 'easy';
|
|
14
|
+
id: string;
|
|
15
|
+
fingerprint: string;
|
|
16
|
+
columns: Array<{
|
|
17
|
+
type: string;
|
|
18
|
+
size: number;
|
|
19
|
+
}>;
|
|
20
|
+
rowHeight: number;
|
|
21
|
+
titleStyle: {
|
|
22
|
+
backColor?: string;
|
|
23
|
+
borderColor?: string;
|
|
24
|
+
};
|
|
25
|
+
fieldStyle: {
|
|
26
|
+
backColor?: string;
|
|
27
|
+
borderColor?: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function readEasyTemplateEvidence(client: Pick<ApiClient, 'get' | 'post'>, baseUrl: string, id: string): Promise<EasyTemplateEvidence>;
|
|
31
|
+
export declare function verifyAppliedEasyTemplate(evidence: EasyTemplateEvidence, formLayout: any): string[];
|
|
32
|
+
export declare function readTemplateEvidence(client: Pick<ApiClient, 'post'>, baseUrl: string, layoutType: string, id: string): Promise<TemplateEvidence>;
|
|
33
|
+
export declare function verifyAppliedTemplate(evidence: TemplateEvidence, formLayout: any): string[];
|
|
34
|
+
//# sourceMappingURL=form-layout-template-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-layout-template-verification.d.ts","sourceRoot":"","sources":["../../src/services/form-layout-template-verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAC9C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,UAAU,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D;AAMD,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EACrG,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqB3C;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,EAAE,CAgBnG;AAqBD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EACzF,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmB3D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,EAAE,CAoB3F"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { digest } from './form-layout-source/schema.js';
|
|
2
|
+
import { AdvancedTemplateService } from './form-layout-template-advanced.js';
|
|
3
|
+
import { FlowTemplateService } from './form-layout-template-flow.js';
|
|
4
|
+
import { EasyTemplateService, buildEasyPayload } from './form-layout-template-easy.js';
|
|
5
|
+
function cellStyle(cell) {
|
|
6
|
+
return { backColor: cell?.style?.backColor, borderColor: cell?.style?.borderTop?.color };
|
|
7
|
+
}
|
|
8
|
+
export async function readEasyTemplateEvidence(client, baseUrl, id) {
|
|
9
|
+
const api = new EasyTemplateService(client, baseUrl);
|
|
10
|
+
const template = await api.get(id);
|
|
11
|
+
const payload = buildEasyPayload(template.data, {}, id);
|
|
12
|
+
const { module: _module, id: _id, ...styleTemplateParam } = payload;
|
|
13
|
+
const response = await client.post(`${baseUrl}/api/form/local/initLayout`, {
|
|
14
|
+
module: 'form', initMode: 0, colNum: 2, styleTemplateParam,
|
|
15
|
+
});
|
|
16
|
+
if (response?.code !== 200 || response?.status !== true)
|
|
17
|
+
throw new Error('简易模板预览失败');
|
|
18
|
+
const sheet = response.data?.pageLayouts?.[0]?.config?.workbook?.Sheet1;
|
|
19
|
+
const columns = sheet?.columns;
|
|
20
|
+
const cells = sheet?.cells;
|
|
21
|
+
if (!Array.isArray(columns) || columns.length < 2 || !Array.isArray(cells))
|
|
22
|
+
throw new Error('简易模板预览缺少主网格');
|
|
23
|
+
const title = cells.find((cell) => Number(cell.row) === 0 && Number(cell.col) === 0);
|
|
24
|
+
const field = cells.find((cell) => Number(cell.row) === 0 && Number(cell.col) === 1);
|
|
25
|
+
if (!title || !field)
|
|
26
|
+
throw new Error('简易模板预览缺少标题和字段单元格');
|
|
27
|
+
const evidence = { kind: 'easy', id,
|
|
28
|
+
columns: columns.map((col) => ({ type: String(col.type), size: Number(col.size) })),
|
|
29
|
+
rowHeight: Number(template.data.rowHeight), titleStyle: cellStyle(title), fieldStyle: cellStyle(field) };
|
|
30
|
+
return { ...evidence, fingerprint: digest({ config: template.data, ...evidence }) };
|
|
31
|
+
}
|
|
32
|
+
export function verifyAppliedEasyTemplate(evidence, formLayout) {
|
|
33
|
+
const sheet = formLayout?.pageLayouts?.[0]?.config?.workbook?.Sheet1;
|
|
34
|
+
if (!sheet)
|
|
35
|
+
return ['简易模板主网格未回读'];
|
|
36
|
+
const issues = [];
|
|
37
|
+
const columns = Array.isArray(sheet.columns) ? sheet.columns.map((col) => ({
|
|
38
|
+
type: String(col.type), size: Number(col.size),
|
|
39
|
+
})) : [];
|
|
40
|
+
if (digest(columns) !== digest(evidence.columns))
|
|
41
|
+
issues.push('简易模板列宽未与应用后布局一致');
|
|
42
|
+
if (!Array.isArray(sheet.rows) || !sheet.rows.some((row) => Number(row.size) === evidence.rowHeight))
|
|
43
|
+
issues.push('简易模板行高未与应用后布局一致');
|
|
44
|
+
const actual = Array.isArray(sheet.cells) ? sheet.cells : [];
|
|
45
|
+
const hasStyle = (style) => actual.some((cell) => matchesSpecified(style, cellStyle(cell)));
|
|
46
|
+
if (!hasStyle(evidence.titleStyle))
|
|
47
|
+
issues.push('简易模板标题颜色或边框未与应用后布局一致');
|
|
48
|
+
if (!hasStyle(evidence.fieldStyle))
|
|
49
|
+
issues.push('简易模板字段颜色或边框未与应用后布局一致');
|
|
50
|
+
return issues;
|
|
51
|
+
}
|
|
52
|
+
function object(value, label) {
|
|
53
|
+
let parsed = value;
|
|
54
|
+
if (typeof parsed === 'string') {
|
|
55
|
+
try {
|
|
56
|
+
parsed = JSON.parse(parsed);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
throw new Error(`${label} 不是有效 JSON`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
63
|
+
throw new Error(`${label} 格式无效`);
|
|
64
|
+
return parsed;
|
|
65
|
+
}
|
|
66
|
+
function matchesSpecified(expected, actual) {
|
|
67
|
+
if (expected === undefined || actual === undefined)
|
|
68
|
+
return expected === actual;
|
|
69
|
+
if (expected && typeof expected === 'object' && !Array.isArray(expected)) {
|
|
70
|
+
if (!actual || typeof actual !== 'object' || Array.isArray(actual))
|
|
71
|
+
return false;
|
|
72
|
+
return Object.entries(expected).every(([key, value]) => matchesSpecified(value, actual[key]));
|
|
73
|
+
}
|
|
74
|
+
return digest(expected) === digest(actual);
|
|
75
|
+
}
|
|
76
|
+
export async function readTemplateEvidence(client, baseUrl, layoutType, id) {
|
|
77
|
+
if (layoutType === 'FLOW') {
|
|
78
|
+
const row = (await new FlowTemplateService(client, baseUrl).list()).find(item => String(item.id) === id);
|
|
79
|
+
if (!row || Number(row.templateStatus) !== 1)
|
|
80
|
+
throw new Error(`流式模板 ${id} 不存在或未启用`);
|
|
81
|
+
const raw = object(row.styleJson, '流式模板样式');
|
|
82
|
+
const style = { formHeader: object(raw.formHeader, 'formHeader'),
|
|
83
|
+
styleConfig: object(raw.styleConfig, 'styleConfig') };
|
|
84
|
+
return { kind: 'flow', id, fingerprint: digest(style), style };
|
|
85
|
+
}
|
|
86
|
+
if (layoutType === 'EXCEL') {
|
|
87
|
+
const template = await new AdvancedTemplateService(client, baseUrl).get(id);
|
|
88
|
+
const style = object(template.layoutInfo?.formStyle?.styleConfig || '{}', '高级模板布局样式');
|
|
89
|
+
const columns = template.layoutInfo?.pageLayouts?.[0]?.config?.workbook?.Sheet1?.columns;
|
|
90
|
+
if (!Array.isArray(columns) || !columns.length)
|
|
91
|
+
throw new Error('高级模板主网格列宽缺失');
|
|
92
|
+
const normalized = columns.map((col) => ({ type: String(col.type), size: Number(col.size) }));
|
|
93
|
+
if (normalized.some(col => !Number.isFinite(col.size)))
|
|
94
|
+
throw new Error('高级模板列宽无效');
|
|
95
|
+
return { kind: 'advanced', id, fingerprint: digest({ style, columns: normalized }), style, columns: normalized };
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`不支持的布局类型 ${layoutType}`);
|
|
98
|
+
}
|
|
99
|
+
export function verifyAppliedTemplate(evidence, formLayout) {
|
|
100
|
+
const issues = [];
|
|
101
|
+
const actualStyle = formLayout?.formStyle || {};
|
|
102
|
+
for (const [section, expected] of Object.entries(evidence.style)) {
|
|
103
|
+
try {
|
|
104
|
+
const actual = evidence.kind === 'flow'
|
|
105
|
+
? object(actualStyle[section], `已应用布局 ${section}`)
|
|
106
|
+
: object(actualStyle.styleConfig, '已应用布局 styleConfig')[section];
|
|
107
|
+
if (actual === undefined || !matchesSpecified(expected, actual))
|
|
108
|
+
issues.push(`模板样式 ${section} 未与应用后布局一致`);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
issues.push(`模板样式 ${section} 无法从应用后布局回读`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (evidence.columns) {
|
|
115
|
+
const actualColumns = formLayout?.pageLayouts?.[0]?.config?.workbook?.Sheet1?.columns;
|
|
116
|
+
const normalized = Array.isArray(actualColumns) ? actualColumns.map((col) => ({
|
|
117
|
+
type: String(col.type), size: Number(col.size),
|
|
118
|
+
})) : [];
|
|
119
|
+
if (digest(normalized) !== digest(evidence.columns))
|
|
120
|
+
issues.push('模板主网格列宽未与应用后布局一致');
|
|
121
|
+
}
|
|
122
|
+
return issues;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=form-layout-template-verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-layout-template-verification.js","sourceRoot":"","sources":["../../src/services/form-layout-template-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,12 @@ export declare const layoutCn: (layoutType: string) => string;
|
|
|
10
10
|
* 读样式模板列表。两个端点都是**租户级**的模板清单(不是应用级),
|
|
11
11
|
* 所以**不需要 appId** —— `ebbusinessid` 用 formId 即可。
|
|
12
12
|
*/
|
|
13
|
-
export declare function fetchStyleTemplates(client: ApiClient, baseUrl: string, formId: string, layoutType: string): Promise<StyleTemplate[]>;
|
|
13
|
+
export declare function fetchStyleTemplates(client: Pick<ApiClient, 'post'>, baseUrl: string, formId: string, layoutType: string): Promise<StyleTemplate[]>;
|
|
14
14
|
/**
|
|
15
15
|
* 把 `--style-template` 的输入解析成该布局类型下的 styleTemplateId。
|
|
16
16
|
*
|
|
17
17
|
* 传 id 时**会校验它确实属于这套**——这正是当初踩坑的地方:跨套 id 平台不报错、直接忽略。
|
|
18
|
-
*
|
|
18
|
+
* 分页读取完整目录后校验 ID,避免平台静默忽略跨类别或不存在的模板。
|
|
19
19
|
*/
|
|
20
|
-
export declare function resolveStyleTemplateId(client: ApiClient, baseUrl: string, formId: string, layoutType: string, input: string): Promise<StyleTemplate>;
|
|
20
|
+
export declare function resolveStyleTemplateId(client: Pick<ApiClient, 'post'>, baseUrl: string, formId: string, layoutType: string, input: string): Promise<StyleTemplate>;
|
|
21
21
|
//# sourceMappingURL=form-style-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-style-template.d.ts","sourceRoot":"","sources":["../../src/services/form-style-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"form-style-template.d.ts","sourceRoot":"","sources":["../../src/services/form-style-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA4BnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,OAAgC,CAAC;AAEnF,kBAAkB;AAClB,eAAO,MAAM,QAAQ,GAAI,YAAY,MAAM,KAAG,MAAmD,CAAC;AAElG;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC,CA8B1B;AAoBD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CA6BxB"}
|
|
@@ -20,8 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
/** PC 端。两套接口都用它(移动端是另一套 id,本 CLI 暂不涉及)。 */
|
|
22
22
|
const CLIENT_TYPE_PC = '0';
|
|
23
|
-
|
|
24
|
-
const PAGE_SIZE = 200;
|
|
23
|
+
const PAGE_SIZE = 100;
|
|
25
24
|
export const isFlowLayout = (layoutType) => layoutType === 'FLOW';
|
|
26
25
|
/** 只用于展示和报错文案。 */
|
|
27
26
|
export const layoutCn = (layoutType) => (isFlowLayout(layoutType) ? '流式' : '表格式');
|
|
@@ -44,12 +43,23 @@ export async function fetchStyleTemplates(client, baseUrl, formId, layoutType) {
|
|
|
44
43
|
pageNo: 1, pageSize: PAGE_SIZE, clientType: CLIENT_TYPE_PC, templateStatus: 1,
|
|
45
44
|
module: 'ebuilderform', customParam: { terminal: '' },
|
|
46
45
|
};
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
const rows = [];
|
|
47
|
+
for (let pageNo = 1; pageNo <= 1000; pageNo++) {
|
|
48
|
+
const res = await client.post(`${baseUrl}${path}`, { ...body, pageNo }, { ebbusinessid: formId });
|
|
49
|
+
if (res?.code !== 200 || !res?.status) {
|
|
50
|
+
throw new Error(`读取${layoutCn(layoutType)}样式模板失败: ${res?.msg || '未知错误'}`);
|
|
51
|
+
}
|
|
52
|
+
const page = res?.data?.result ?? res?.data?.pageDatas?.result;
|
|
53
|
+
const count = Number(res?.data?.totalCount ?? res?.data?.pageDatas?.totalCount);
|
|
54
|
+
if (!Array.isArray(page) || !Number.isFinite(count))
|
|
55
|
+
throw new Error('样式模板列表分页格式未知');
|
|
56
|
+
rows.push(...page);
|
|
57
|
+
if (rows.length >= count)
|
|
58
|
+
return rows.map(t => ({ id: String(t.id), name: String(t.templateName ?? t.name ?? '') }));
|
|
59
|
+
if (!page.length)
|
|
60
|
+
throw new Error('样式模板分页提前结束');
|
|
50
61
|
}
|
|
51
|
-
|
|
52
|
-
return rows.map((t) => ({ id: String(t.id), name: String(t.templateName ?? t.name ?? '') }));
|
|
62
|
+
throw new Error('样式模板分页超过上限');
|
|
53
63
|
}
|
|
54
64
|
/**
|
|
55
65
|
* 报错时列出可选模板。列表是按租户的,实测流式那套 40 条里大半是用户自己导入的副本
|
|
@@ -72,7 +82,7 @@ function dupHint(dups) {
|
|
|
72
82
|
* 把 `--style-template` 的输入解析成该布局类型下的 styleTemplateId。
|
|
73
83
|
*
|
|
74
84
|
* 传 id 时**会校验它确实属于这套**——这正是当初踩坑的地方:跨套 id 平台不报错、直接忽略。
|
|
75
|
-
*
|
|
85
|
+
* 分页读取完整目录后校验 ID,避免平台静默忽略跨类别或不存在的模板。
|
|
76
86
|
*/
|
|
77
87
|
export async function resolveStyleTemplateId(client, baseUrl, formId, layoutType, input) {
|
|
78
88
|
const all = await fetchStyleTemplates(client, baseUrl, formId, layoutType);
|
|
@@ -82,11 +92,6 @@ export async function resolveStyleTemplateId(client, baseUrl, formId, layoutType
|
|
|
82
92
|
const hit = all.find((t) => t.id === trimmed);
|
|
83
93
|
if (hit)
|
|
84
94
|
return hit;
|
|
85
|
-
if (all.length >= PAGE_SIZE) {
|
|
86
|
-
// 列表可能被截断,无法断言不存在,放行但说清楚
|
|
87
|
-
console.error(`⚠ 未在${cn}模板列表中找到 id ${trimmed}(列表已达单页上限,可能被截断),按原值提交`);
|
|
88
|
-
return { id: trimmed, name: trimmed };
|
|
89
|
-
}
|
|
90
95
|
const other = isFlowLayout(layoutType) ? '表格式' : '流式';
|
|
91
96
|
throw new Error(`id ${trimmed} 不属于${cn}布局的样式模板(平台不会报错,只会静默忽略、样式不变)。`
|
|
92
97
|
+ `\n 如果它来自${other}那套,请确认表单布局类型——两套模板不能混用。`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-style-template.js","sourceRoot":"","sources":["../../src/services/form-style-template.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,2CAA2C;AAC3C,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,
|
|
1
|
+
{"version":3,"file":"form-style-template.js","sourceRoot":"","sources":["../../src/services/form-style-template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skill-docs/SKILL.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
name: weaver-e10-builder
|
|
3
3
|
display_name: 泛微E10智能搭建Skill
|
|
4
4
|
display_name_en: E10 Builder
|
|
5
|
-
description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.
|
|
6
|
-
description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.
|
|
7
|
-
description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.
|
|
5
|
+
description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.6.0
|
|
6
|
+
description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.6.0。
|
|
7
|
+
description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.6.0.
|
|
8
8
|
category: coding
|
|
9
|
-
version: 1.
|
|
9
|
+
version: 1.6.0
|
|
10
10
|
author: 泛微网络科技股份有限公司
|
|
11
11
|
auto: true
|
|
12
12
|
---
|
|
@@ -49,16 +49,18 @@ auto: true
|
|
|
49
49
|
0. **环境**:仅在即将远程查询/写入前跑 `e10-cli auth status`;切已有环境用 `auth profile use <name>`,新环境用 `auth set --eteamsid "<ETEAMSID>" --base-url <url>`(ETEAMSID 从浏览器 Cookies 复制,不走 `auth login`)。
|
|
50
50
|
1. **判断复杂度**:涉及 2+ 模块(应用/表单/流程/页面)→ 进入规划;单步改字段、查数据 → 直接执行。
|
|
51
51
|
2. **规划**(复杂需求必经):
|
|
52
|
-
-
|
|
52
|
+
- 先写 **0.1 方案澄清与可行性预检**:需求理解、待确认项(问题/选项/建议/影响/决策)、可做/部分可做/做不到及证据等级、验收判据;按 `references/common/capability-boundaries.md` 判定,不得把「CLI 没暴露」写成「平台不支持」。
|
|
53
|
+
- 每张表单建表前确认初始布局类型 **FLOW / EXCEL**(该初始类型建后不可切换;已有表单可另建不同类型的视图布局);出现布局样表时按 `references/form/layout/planning.md` 解析。
|
|
53
54
|
- 按 `references/common/map.md` 识别资源与依赖,按 `references/common/guide-plan-template.md` 写 `plan.md`;每条要求有归属和来源,布局样表逐行保留,禁止预勾。
|
|
54
|
-
- 写完打开 `plan.md`
|
|
55
|
+
- 写完打开 `plan.md` 与用户**一次集中确认**(此时所有 `[ ]` 保持未勾;只有新的实质业务选择才再次询问)。
|
|
55
56
|
3. **执行**:最多三段,每段结束停下确认。
|
|
56
57
|
- 段① 应用、角色、表单与视图;段② 流程与自动化;段③ 报表、菜单与页面。
|
|
57
58
|
- 以 plan 为唯一清单,按功能批次执行,逐项销号并回填真实 ID;无法完成的保留 `[ ]` 并注明原因。
|
|
58
|
-
-
|
|
59
|
+
- 0.1 中 P0/阻断项未解决、或用户未确认前不进入写入;执行中出现新的实质业务选择才再次确认。
|
|
60
|
+
- 布局样表:仍由 CLI 创建字段与初始布局;明确要求还原图片/XLSX 样式时读 `references/form/layout/source-restoration.md`(先实际观察、经用户确认样式,再 compile/apply)。
|
|
59
61
|
|
|
60
62
|
**关键约束**
|
|
61
|
-
- 配置必须通过当前 `e10-cli` 支持的命令完成;没有对应命令就如实告知,不得写临时 `.mjs` 脚本或让用户操作浏览器代做。能力边界见 `references/common/capability-boundaries.md
|
|
63
|
+
- 配置必须通过当前 `e10-cli` 支持的命令完成;没有对应命令就如实告知,不得写临时 `.mjs` 脚本或让用户操作浏览器代做。能力边界见 `references/common/capability-boundaries.md`;结论必须带证据等级(实测/回读字段/命令表/未证实)。
|
|
62
64
|
- Windows 环境,注意命令行兼容性;少说废话,直接干活。
|
|
63
65
|
- 写代码按模板直接出完整代码,写完用 `e10-cli check` 验证。
|
|
64
66
|
- 解析 Word 用 `e10-cli docx read`,禁止自写 python-docx;必须逐张 Read `_images/` 图片并写回 md,布局表格保留空白、同排与合并关系。
|
|
@@ -79,10 +81,10 @@ auto: true
|
|
|
79
81
|
|
|
80
82
|
| 用户关键词 | 加载文档 |
|
|
81
83
|
|-----------|---------|
|
|
82
|
-
| 表单布局源码、表单级 ecode、表单 JS 代码块、JSSDK、代码校验、明细代码汇总、字段事件脚本、表单组件复写 | 先读 `references/code-block/
|
|
83
|
-
| 写plan、搭建计划、plan.md
|
|
84
|
+
| 表单布局源码、表单级 ecode、表单 JS 代码块、JSSDK、代码校验、明细代码汇总、字段事件脚本、表单组件复写 | 先读 `references/form/layout/code-block/code-block-guide.md` 选代码层级和 CLI 写入命令,再按效果读取该目录对应 JSSDK 专题;**布局源码 ecode 由 CLI 编码,不要手改 `sourceCode.ecode`;手工调接口必须用 `encodeURI`,不能用 `encodeURIComponent`(设计器用 `decodeURI` 读取)** |
|
|
85
|
+
| 写plan、搭建计划、plan.md、资源梳理、搭建模板、必做项清单、完整实施方案、需求映射、能力地图、跨资源依赖、**方案澄清、可行性预检、哪些做不到**、平台架构、Ecode、Ebuilder应用、默认台账与菜单 | 先读 `references/common/map.md` 识别资源、配置与依赖;做 0.1 方案澄清与可行性预检时同时读 `references/common/capability-boundaries.md`;再按 `references/common/guide-plan-template.md` 写资源清单与功能批次 plan |
|
|
84
86
|
| 安装、升级、装不上、skill remove、skill sync、references 文档缺失、WorkBuddy | `references/common/guide-install.md` |
|
|
85
|
-
|
|
|
87
|
+
| 支不支持、能不能做、能力边界、不支持的能力、**证据等级、CLI 没暴露** | `references/common/capability-boundaries.md`(结论必须带证据等级,命令表不能当平台不支持) |
|
|
86
88
|
| 建应用、创建应用、app、应用列表、应用详情、应用目录、app read/list/folder/edit/delete | `references/common/ref-cli-commands.md` |
|
|
87
89
|
| 启用应用、停用应用、发布到前台、发布应用、取消发布、应用发布信息、前台入口、应用名多语言、应用英文名、app enable/disable/publish/unpublish/publish-info、app lang | `references/app/guide-app-publish.md`(启用→发布→改发布信息→取消发布的先后关系 + 停用会收回发布态 + 多语言整份写回) |
|
|
88
90
|
| 字段联动、字段值带出、HRM 属性带出、relateFrom、form relate、跨表带出赋值、FormDataLinkage、多跳带出、关联客户带出客户类型、field-linkage、Text字段赋值名称 | `references/form/guide-field-linkage.md`(按来源选择直接带出、HRM 带出或跨表查询赋值;含单跳/多跳与 --hops 格式) |
|
|
@@ -94,8 +96,11 @@ auto: true
|
|
|
94
96
|
| 显示属性联动、显隐联动、条件显示、form linkage、为空/不为空条件、NULL 算子 | `references/form/guide-form-linkage.md` |
|
|
95
97
|
| 新建表单、form create、EB表单创建流程、fields.json | `references/form/guide-create-form.md`;确定具体字段参数时再读 `references/form/ref-form-fields.md` |
|
|
96
98
|
| 虚拟表、虚拟表单、绑定数据源、业务表展示、数据加工结果 | `references/form/guide-virtual-form.md`;字段类型按来源映射,不按普通字段重新猜测 |
|
|
97
|
-
| Excel
|
|
98
|
-
|
|
|
99
|
+
| 表单布局、布局管理、初始化、编辑、模板、布局代码块、图片或 Excel 还原 | `references/form/layout/layout-overview.md`(先按任务选择独立能力) |
|
|
100
|
+
| 流程表单多套布局、节点独立布局、布局绑定和回落默认 | `references/form/layout/workflow-layout.md`(表单布局与节点引用的关系;具体节点操作继续读流程指南) |
|
|
101
|
+
| Excel样式、表格式布局、布局样表、布局蓝图、标签字段交替、合并单元格 | `references/form/layout/planning.md` |
|
|
102
|
+
| 完整布局 JSON、布局文档导出、整体编辑差异预览、formLayout 大范围调整 | `references/form/layout/document.md`(导出底稿、预览完整差异、单次应用并回读) |
|
|
103
|
+
| 还原图片样式、还原Excel样式、XLSX布局、源网格、pageLayouts、layout extract/compile/apply/verify/style-audit、已有字段位置匹配 | `references/form/layout/source-restoration.md`(图片 imageStyles 三层投影与样式诊断;已有字段复用,纯布局编译、单次保存和独立回读) |
|
|
99
104
|
| 流程、审批、workflow、提交流程、预填 | `references/workflow/guide-workflow.md` |
|
|
100
105
|
| 流程绑了哪张表、流程对应表单、workflow info、从流程找表单 | 命令速查 `references/common/ref-cli-commands.md` 的 `workflow info` 一行(**流程列表接口不含这个信息**;拿到的是 formId,不是 objId) |
|
|
101
106
|
| 权责表、权责矩阵、权责表方式流程、分支场景、变量映射 | `references/workflow/guide-workflow-auth-resp.md`(操作者和条件同时遵循流程基础指南) |
|
|
@@ -115,11 +120,11 @@ auto: true
|
|
|
115
120
|
| 新建视图、表格视图、看板、日历、思维导图、form view、台账显示列、显示列、list-columns、搜索条件、排序、list-sort、上下级、父级、树形展示、上级类型、list-hierarchy、视图数据条件、list-filter、日期占位符、{date}、{curryear}、动态日期 | `references/form/guide-form-view.md` |
|
|
116
121
|
| 视图权限、查看布局、修改共享权限、view permission | `references/form/guide-form-view-permission.md` |
|
|
117
122
|
| EBuilder关联、关联表单、数据过滤设置、ebuilder-filter、EBuilder显示列、ebuilder-columns、去掉系统字段、只留业务字段 | `references/form/guide-ebuilder-filter.md` |
|
|
118
|
-
| 浏览数据定义、浏览弹窗高级搜索、浏览数据范围、浏览 Tab、可配置浏览字段 | `references/form/guide-browser-definition.md
|
|
119
|
-
| 字段分组、分组容器、字段分段、基本信息/合同信息分段、Collapse、Fold、字段归组 | `references/form/
|
|
120
|
-
| 独占一行、整行显示、字段换行、singleRow、--single-row | `references/form/
|
|
121
|
-
| 布局样式模板分类、公共规则、layout init、style-template | `references/form/
|
|
122
|
-
| 给已有表单加字段、改必填/只读、表单不是自己建的、--reinit、布局被重建、字段在布局里对不上、字段标题显示不出来 | `references/form/
|
|
123
|
+
| 浏览数据定义、浏览弹窗高级搜索、浏览数据范围、浏览 Tab、可配置浏览字段 | `references/form/guide-browser-definition.md`;包含高级搜索、数据范围、浏览 Tab 三部分,关联 EBuilder 字段的简便范围规则也在该指南中 |
|
|
124
|
+
| 字段分组、分组容器、字段分段、基本信息/合同信息分段、Collapse、Fold、字段归组 | `references/form/layout/planning.md`(**按需**:用户明确要求字段分组才在 fields.json 写 `group`,默认不加分组) |
|
|
125
|
+
| 独占一行、整行显示、字段换行、singleRow、--single-row | `references/form/layout/planning.md`(fields.json 字段写 `"singleRow":true`;add-field 用 `--single-row`) |
|
|
126
|
+
| 布局样式模板分类、公共规则、layout init、style-template | `references/form/layout/template/template-guide.md`(简易、高级、流式分别链接) |
|
|
127
|
+
| 给已有表单加字段、改必填/只读、表单不是自己建的、--reinit、布局被重建、字段在布局里对不上、字段标题显示不出来 | `references/form/layout/incremental.md`(**⚠ 不是自己建的表不要用 `--reinit`**;设必填是改布局组件,字段定义里没有 `required`) |
|
|
123
128
|
| 字段类型、字段码表、日期区间、关联浏览、关联订单、关联合同、Order、Contract、字段多选、multiple、--multiple | `references/form/ref-form-fields.md` |
|
|
124
129
|
| 表单复杂编号、serial-mark、流水号、年份编号、代字 | `references/form/guide-form-serial-mark.md` |
|
|
125
130
|
| 函数公式、字段公式、formula、DAYS、日期差、expressId、公式绑定 | `references/form/guide-form-formula-functions.md`(219 个函数速查矩阵,写 `fields.json` 的 `formula` 或 `form formula set --expression` 时查函数格式/示例;**日期差用 `DAYS(开始,结束)`**) |
|
|
@@ -145,7 +150,7 @@ auto: true
|
|
|
145
150
|
|
|
146
151
|
## 能力边界
|
|
147
152
|
|
|
148
|
-
> 不支持的能力、以及「CLI 没有命令时怎么办」的判定方式 → `references/common/capability-boundaries.md
|
|
153
|
+
> 不支持的能力、以及「CLI 没有命令时怎么办」的判定方式 → `references/common/capability-boundaries.md`。预检结论写进 `plan.md` 0.1,证据不足时标「待环境核查/未证实」;不得把「CLI 没暴露」写成「平台不支持」。禁止声称平台/CLI 支持实际不支持的能力,禁止用临时脚本或浏览器操作绕行。
|
|
149
154
|
|
|
150
155
|
---
|
|
151
156
|
|