@agile-team/mach-report 2.17.0 → 2.18.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.
Files changed (168) hide show
  1. package/README.md +18 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +100 -41
  24. package/dist/analytics.d.ts +100 -41
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +108 -102
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/designer--TKECSEc.cjs +2 -0
  48. package/dist/designer-d6hJS41w.js +5683 -0
  49. package/dist/designer.cjs +1 -1
  50. package/dist/designer.d.cts +710 -42
  51. package/dist/designer.d.ts +710 -42
  52. package/dist/designer.js +23 -20
  53. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  54. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  55. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  56. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  57. package/dist/index-CPh6tqge.js +1575 -0
  58. package/dist/index-CUNw7dL9.cjs +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +361 -15
  61. package/dist/index.d.ts +361 -15
  62. package/dist/index.js +876 -835
  63. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  64. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  65. package/dist/matrix-0hywp0-F.cjs +1 -0
  66. package/dist/matrix-Dy-tyY7E.js +381 -0
  67. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  68. package/dist/param-validation-CnDEd2l-.js +333 -0
  69. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  70. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  71. package/dist/pdf.cjs +1 -1
  72. package/dist/pdf.d.cts +54 -0
  73. package/dist/pdf.d.ts +54 -0
  74. package/dist/pdf.js +2 -2
  75. package/dist/{plugin-BBp74CQZ.js → plugin-ByjF2kiV.js} +5 -5
  76. package/dist/{plugin-CtFX9PFG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  77. package/dist/prefill-B8H9qwE4.js +371 -0
  78. package/dist/prefill-D7EswyTI.cjs +1 -0
  79. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  80. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  81. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  82. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  83. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  84. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  85. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  86. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  87. package/dist/report-encoding-worker.cjs +1 -1
  88. package/dist/report-encoding-worker.js +1 -1
  89. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  90. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  91. package/dist/runtime-CDA6d263.cjs +1 -0
  92. package/dist/runtime-CEMvybO7.js +170 -0
  93. package/dist/sbom.cdx.json +1 -1
  94. package/dist/server/node.d.cts +75 -7
  95. package/dist/server/node.d.ts +75 -7
  96. package/dist/server-node.cjs +4 -4
  97. package/dist/server-node.js +2692 -1990
  98. package/dist/server.cjs +1 -1
  99. package/dist/server.d.cts +243 -28
  100. package/dist/server.d.ts +243 -28
  101. package/dist/server.js +28 -28
  102. package/dist/sha256-BDQ1Qk7A.js +158 -0
  103. package/dist/sha256-DgZAKXqI.cjs +1 -0
  104. package/dist/style.css +1 -1
  105. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  106. package/dist/template-bindings-TKnXM7ll.js +62 -0
  107. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  108. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  109. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  110. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  111. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  112. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  113. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  114. package/dist/template-registry-DzWswQI5.cjs +1 -0
  115. package/dist/vue/async.d.cts +528 -33
  116. package/dist/vue/async.d.ts +528 -33
  117. package/dist/vue/index.d.cts +616 -64
  118. package/dist/vue/index.d.ts +616 -64
  119. package/dist/vue-async.cjs +1 -1
  120. package/dist/vue-async.js +3 -3
  121. package/dist/vue.cjs +1 -1
  122. package/dist/vue.js +94 -89
  123. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  124. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  125. package/dist/worker.cjs +1 -1
  126. package/dist/worker.d.cts +75 -7
  127. package/dist/worker.d.ts +75 -7
  128. package/dist/worker.js +4 -4
  129. package/dist/xlsx.cjs +4 -4
  130. package/dist/xlsx.d.cts +120 -13
  131. package/dist/xlsx.d.ts +120 -13
  132. package/dist/xlsx.js +313 -279
  133. package/package.json +1 -1
  134. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  135. package/dist/ParamEditor-DNNARyeB.js +0 -594
  136. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  137. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  138. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  139. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  140. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  141. package/dist/assets-BIMVwjQe.js +0 -231
  142. package/dist/assets-Dfs2ElxI.cjs +0 -1
  143. package/dist/component-tree-Ca6YYfHq.js +0 -61
  144. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  145. package/dist/computed-BW5a8QFk.js +0 -612
  146. package/dist/computed-C2GD3XcE.cjs +0 -1
  147. package/dist/config-Dg_o8e7m.cjs +0 -1
  148. package/dist/config-XQ4qrQ7Q.js +0 -844
  149. package/dist/designer-D9XAxqSc.js +0 -5178
  150. package/dist/designer-uCDo5XSK.cjs +0 -2
  151. package/dist/drill-ByN8COs_.cjs +0 -1
  152. package/dist/drill-CKW3Xtfa.js +0 -145
  153. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  154. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  155. package/dist/matrix-JLAXlux-.js +0 -302
  156. package/dist/matrix-gTHpDTGm.cjs +0 -1
  157. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  158. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  159. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  160. package/dist/runtime-DakRXui3.js +0 -170
  161. package/dist/runtime-dL5ygIfa.cjs +0 -1
  162. package/dist/sha256-BshdOkCC.cjs +0 -1
  163. package/dist/sha256-DTG-Gq8i.js +0 -157
  164. package/dist/template-bindings-C2SpvsMU.js +0 -58
  165. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  166. package/dist/template-registry-CpysHAxy.cjs +0 -1
  167. package/dist/tree-CLpxYbKa.cjs +0 -1
  168. package/dist/tree-DNJorJUf.js +0 -172
@@ -1,6 +1,22 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComputedRef } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ declare type __VLS_Props = {
5
+ modelValue?: ColumnVisual_2;
6
+ fields?: ReadonlyArray<{
7
+ field: string;
8
+ label?: string;
9
+ }>;
10
+ readonly?: boolean;
11
+ messages?: Partial<ColumnVisualMessages>;
12
+ };
13
+ declare type __VLS_Props_2 = {
14
+ component: PlanComponent;
15
+ schemas?: Record<string, DatasetContract>;
16
+ datasets?: DatasetRows;
17
+ disabled?: boolean;
18
+ messages?: Partial<TemplateEditorMessages>;
19
+ };
4
20
  declare interface AggregateDefinition {
5
21
  /** Output column; valueField defaults to this field. */
6
22
  field: string;
@@ -31,6 +47,27 @@ declare interface AggregateDefinition_3 {
31
47
  declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
32
48
  declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
33
49
  declare type AggregateOperation_3 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
50
+ declare interface AggregateRequest {
51
+ op: AggregateOperation;
52
+ field?: string;
53
+ weightField?: string;
54
+ numeric?: "number" | "decimal";
55
+ digits?: number;
56
+ }
57
+ declare interface AggregateRequest_2 {
58
+ op: AggregateOperation_2;
59
+ field?: string;
60
+ weightField?: string;
61
+ numeric?: "number" | "decimal";
62
+ digits?: number;
63
+ }
64
+ declare interface AggregateRequest_3 {
65
+ op: AggregateOperation_3;
66
+ field?: string;
67
+ weightField?: string;
68
+ numeric?: "number" | "decimal";
69
+ digits?: number;
70
+ }
34
71
  declare type AnyExcelBindingDocumentResult = ExcelBindingDocumentResult | ExcelRegionBindingDocumentResult;
35
72
  declare type AnyExcelBindingSession = ExcelBindingSession | ExcelRegionBindingSession;
36
73
  declare interface AssetRenderBudget {
@@ -101,6 +138,11 @@ declare interface CanvasSelection {
101
138
  pageIndex: number;
102
139
  componentIndex: number;
103
140
  }
141
+ export declare const ChartBindingInspector: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
142
+ change: (binding: ReportChartBinding) => any;
143
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props_2> & Readonly<{
144
+ onChange?: ((binding: ReportChartBinding) => any) | undefined;
145
+ }>, {}>;
104
146
  /** Serializable symbol settings. Encoders remain in the optional /codes entry. */
105
147
  declare interface CodeOptions {
106
148
  /** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
@@ -134,6 +176,28 @@ declare interface CodeOptions_3 {
134
176
  /** Human-readable content below a linear barcode. */
135
177
  showText?: boolean;
136
178
  }
179
+ export declare const COLUMN_VISUAL_MESSAGES: {
180
+ title: string;
181
+ enabled: string;
182
+ kind: string;
183
+ colorScale: string;
184
+ dataBar: string;
185
+ measure: string;
186
+ ownField: string;
187
+ numeric: string;
188
+ number: string;
189
+ decimal: string;
190
+ autoDomain: string;
191
+ minimum: string;
192
+ maximum: string;
193
+ lowColor: string;
194
+ highColor: string;
195
+ color: string;
196
+ negativeColor: string;
197
+ invalid: string;
198
+ hint: string;
199
+ snapshot: string;
200
+ };
137
201
  /**
138
202
  * 列值格式化(声明式、JSON 可序列化)。
139
203
  * 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
@@ -200,6 +264,60 @@ declare type ColumnFormat_3 = {
200
264
  kind: "date";
201
265
  pattern?: string;
202
266
  };
267
+ declare type ColumnVisual = {
268
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
269
+ field?: string;
270
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
271
+ numeric?: "number" | "decimal";
272
+ min?: number;
273
+ max?: number;
274
+ } & ({
275
+ kind: "colorScale";
276
+ lowColor?: string;
277
+ highColor?: string;
278
+ } | {
279
+ kind: "dataBar";
280
+ color?: string;
281
+ negativeColor?: string;
282
+ });
283
+ declare type ColumnVisual_2 = {
284
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
285
+ field?: string;
286
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
287
+ numeric?: "number" | "decimal";
288
+ min?: number;
289
+ max?: number;
290
+ } & ({
291
+ kind: "colorScale";
292
+ lowColor?: string;
293
+ highColor?: string;
294
+ } | {
295
+ kind: "dataBar";
296
+ color?: string;
297
+ negativeColor?: string;
298
+ });
299
+ declare type ColumnVisual_3 = {
300
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
301
+ field?: string;
302
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
303
+ numeric?: "number" | "decimal";
304
+ min?: number;
305
+ max?: number;
306
+ } & ({
307
+ kind: "colorScale";
308
+ lowColor?: string;
309
+ highColor?: string;
310
+ } | {
311
+ kind: "dataBar";
312
+ color?: string;
313
+ negativeColor?: string;
314
+ });
315
+ export declare const ColumnVisualEditor: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
316
+ "update:modelValue": (visual: ColumnVisual_2 | undefined) => any;
317
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props> & Readonly<{
318
+ "onUpdate:modelValue"?: ((visual: ColumnVisual_2 | undefined) => any) | undefined;
319
+ }>, {}>;
320
+ export declare type ColumnVisualMessages = typeof COLUMN_VISUAL_MESSAGES;
203
321
  declare interface ComponentAssetRegistry {
204
322
  rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
205
323
  hasExtension(id: string, version: string, kind: string): boolean;
@@ -668,7 +786,21 @@ declare interface ExpressionOptions_3 {
668
786
  nulls?: "propagate" | "error";
669
787
  divisionByZero?: "null" | "error";
670
788
  }
789
+ declare interface FormulaAdapter {
790
+ /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
791
+ evaluate(expression: string, context: {
792
+ row: Readonly<Record<string, unknown>>;
793
+ rowIndex: number;
794
+ rows: readonly Record<string, unknown>[];
795
+ }): unknown;
796
+ }
671
797
  declare interface GridCell {
798
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
799
+ dataBar?: {
800
+ start: number;
801
+ end: number;
802
+ color: string;
803
+ };
672
804
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
673
805
  richParagraphs?: RichParagraph[];
674
806
  text?: string;
@@ -694,6 +826,12 @@ declare interface GridCell {
694
826
  style?: ComponentStyle;
695
827
  }
696
828
  declare interface GridCell_2 {
829
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
830
+ dataBar?: {
831
+ start: number;
832
+ end: number;
833
+ color: string;
834
+ };
697
835
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
698
836
  richParagraphs?: RichParagraph_2[];
699
837
  text?: string;
@@ -719,6 +857,12 @@ declare interface GridCell_2 {
719
857
  style?: ComponentStyle_2;
720
858
  }
721
859
  declare interface GridCell_3 {
860
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
861
+ dataBar?: {
862
+ start: number;
863
+ end: number;
864
+ color: string;
865
+ };
722
866
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
723
867
  richParagraphs?: RichParagraph_3[];
724
868
  text?: string;
@@ -777,6 +921,8 @@ declare interface ListColumn {
777
921
  format?: ColumnFormat;
778
922
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
779
923
  rules?: StyleRule[];
924
+ /** Optional resolved color scale or value-preserving data bar. */
925
+ visual?: ColumnVisual;
780
926
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
781
927
  editable?: boolean;
782
928
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -802,6 +948,8 @@ declare interface ListColumn_2 {
802
948
  format?: ColumnFormat_2;
803
949
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
804
950
  rules?: StyleRule_2[];
951
+ /** Optional resolved color scale or value-preserving data bar. */
952
+ visual?: ColumnVisual_2;
805
953
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
806
954
  editable?: boolean;
807
955
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -827,6 +975,8 @@ declare interface ListColumn_3 {
827
975
  format?: ColumnFormat_3;
828
976
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
829
977
  rules?: StyleRule_3[];
978
+ /** Optional resolved color scale or value-preserving data bar. */
979
+ visual?: ColumnVisual_3;
830
980
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
831
981
  editable?: boolean;
832
982
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1146,6 +1296,10 @@ declare interface MachReportDefaults {
1146
1296
  xlsx?: XlsxRenderOptions;
1147
1297
  /** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
1148
1298
  editable?: boolean | ReportEditingOptions;
1299
+ /** Optional reference-data loader; review and atomic editing are maintained inside the package. */
1300
+ prefill?: ReportPrefillReviewOptions | false;
1301
+ /** Compare a reference with the same query result rendered in the report. */
1302
+ dataComparison?: ReportDataComparisonReviewOptions | false;
1149
1303
  /** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
1150
1304
  excelImport?: boolean | ExcelImportOptions;
1151
1305
  }
@@ -1158,7 +1312,14 @@ declare type MachReportLogger = Pick<Console, "warn" | "info">;
1158
1312
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1159
1313
  */
1160
1314
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1161
- declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1315
+ declare interface MachReportMessages extends Partial<ReportCalculationMessages>, Partial<ReportDataReviewMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1316
+ reviewTools?: string;
1317
+ validationTitle?: string;
1318
+ validationError?: string;
1319
+ validationWarning?: string;
1320
+ validationDataset?: string;
1321
+ validationRow?: string;
1322
+ validationMore?: string;
1162
1323
  drillActions?: string;
1163
1324
  drillOpening?: string;
1164
1325
  drillMissingValue?: string;
@@ -1337,7 +1498,14 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>,
1337
1498
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1338
1499
  */
1339
1500
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1340
- declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1501
+ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, Partial<ReportDataReviewMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1502
+ reviewTools?: string;
1503
+ validationTitle?: string;
1504
+ validationError?: string;
1505
+ validationWarning?: string;
1506
+ validationDataset?: string;
1507
+ validationRow?: string;
1508
+ validationMore?: string;
1341
1509
  drillActions?: string;
1342
1510
  drillOpening?: string;
1343
1511
  drillMissingValue?: string;
@@ -1761,6 +1929,13 @@ export declare const PARAM_EDITOR_MESSAGES: {
1761
1929
  paramYear: string;
1762
1930
  paramDateRange: string;
1763
1931
  paramSelect: string;
1932
+ paramMultiSelect: string;
1933
+ paramCascader: string;
1934
+ paramNumberRange: string;
1935
+ paramMinItems: string;
1936
+ paramMaxItems: string;
1937
+ paramChildAdd: string;
1938
+ paramTreeHint: string;
1764
1939
  };
1765
1940
  export declare const ParamEditor: DefineComponent<ParamEditorOptions, {
1766
1941
  pending: ComputedRef<boolean>;
@@ -1777,10 +1952,14 @@ export declare interface ParamEditorOptions {
1777
1952
  document: ReportTemplateDocument;
1778
1953
  readonly?: boolean;
1779
1954
  messages?: Partial<ParamEditorMessages>;
1955
+ /** Reuses the same trusted option resolver used by ReportPreview. */
1956
+ loadOptions?: ReportParamOptionsLoader_2;
1780
1957
  /** Return false when the enclosing template transaction rejects the change. */
1781
1958
  accept(definitions: ReportParamDef[]): boolean;
1782
1959
  }
1783
1960
  declare interface PlanComponent {
1961
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
1962
+ chartBinding?: ReportChartBinding;
1784
1963
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1785
1964
  code?: CodeOptions;
1786
1965
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1809,6 +1988,8 @@ declare interface PlanComponent {
1809
1988
  fallbackText?: string;
1810
1989
  }
1811
1990
  declare interface PlanComponent_2 {
1991
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
1992
+ chartBinding?: ReportChartBinding_2;
1812
1993
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1813
1994
  code?: CodeOptions_2;
1814
1995
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1837,6 +2018,8 @@ declare interface PlanComponent_2 {
1837
2018
  fallbackText?: string;
1838
2019
  }
1839
2020
  declare interface PlanComponent_3 {
2021
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2022
+ chartBinding?: ReportChartBinding_3;
1840
2023
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1841
2024
  code?: CodeOptions_3;
1842
2025
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1891,6 +2074,18 @@ declare interface PlanGrid_3 {
1891
2074
  /** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
1892
2075
  paddingMm?: number;
1893
2076
  }
2077
+ declare interface PlanPage {
2078
+ meta?: Record<string, unknown>;
2079
+ /** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
2080
+ layout?: "page" | "wide";
2081
+ pageWidthMm: number;
2082
+ pageHeightMm: number;
2083
+ marginTopMm?: number;
2084
+ marginBottomMm?: number;
2085
+ marginLeftMm?: number;
2086
+ marginRightMm?: number;
2087
+ components: PlanComponent[];
2088
+ }
1894
2089
  /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
1895
2090
  declare interface PlanTableFragment {
1896
2091
  /** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
@@ -1940,6 +2135,37 @@ declare interface PlanTableFragment_3 {
1940
2135
  };
1941
2136
  }
1942
2137
  declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2138
+ chartNumeric: string;
2139
+ chartNumber: string;
2140
+ chartDecimal: string;
2141
+ chartDigits: string;
2142
+ chartWeight: string;
2143
+ chartWeightedAverage: string;
2144
+ chartNumberOptions: string;
2145
+ chartStacked: string;
2146
+ chartPercent: string;
2147
+ chartDataset: string;
2148
+ chartCategory: string;
2149
+ chartMeasure: string;
2150
+ chartAggregation: string;
2151
+ chartSeries: string;
2152
+ chartAddSeries: string;
2153
+ chartRemoveSeries: string;
2154
+ chartRecordCount: string;
2155
+ chartSum: string;
2156
+ chartAverage: string;
2157
+ chartMinimum: string;
2158
+ chartMaximum: string;
2159
+ chartType: string;
2160
+ chartBar: string;
2161
+ chartLine: string;
2162
+ chartSort: string;
2163
+ chartNatural: string;
2164
+ chartAscending: string;
2165
+ chartDescending: string;
2166
+ chartTitle: string;
2167
+ chartValues: string;
2168
+ chartBindingNote: string;
1943
2169
  toolTarget: string;
1944
2170
  toolPreview: string;
1945
2171
  toolPreviewHide: string;
@@ -2135,6 +2361,12 @@ declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2135
2361
  fieldPosition: string;
2136
2362
  previewFieldDirectory: string;
2137
2363
  };
2364
+ declare interface RenderPlan {
2365
+ schemaVersion: string;
2366
+ /** 编辑需要模板重算上下文;跨 Worker/JSON 保留要求,但不声明本地会话可用。 */
2367
+ requiresRecalculation?: boolean;
2368
+ pages: PlanPage[];
2369
+ }
2138
2370
  export declare const REPORT_BATCH_MESSAGES: {
2139
2371
  batchTitle: string;
2140
2372
  batchDescription: string;
@@ -2263,6 +2495,10 @@ declare interface ReportCalculationMessages_2 {
2263
2495
  calculationErrorOverflow: string;
2264
2496
  calculationErrorPrecision: string;
2265
2497
  }
2498
+ declare interface ReportCandidateValidationOptions extends Pick<ReportDatasetValidationOptions, "rules" | "maxChecks" | "maxIssues"> {
2499
+ /** Warnings are visible and allowed by default; block explicitly when required by business policy. */
2500
+ warningPolicy?: "allow" | "block";
2501
+ }
2266
2502
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
2267
2503
  declare interface ReportCellAddress {
2268
2504
  pageIndex: number;
@@ -2362,6 +2598,268 @@ declare interface ReportCellTableIdentity {
2362
2598
  }
2363
2599
  declare type ReportCellValue = string | number | boolean | null;
2364
2600
  declare type ReportCellValueType = NonNullable<GridCell["valueType"]>;
2601
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2602
+ declare interface ReportChartBinding {
2603
+ dataset: string;
2604
+ categoryField: string;
2605
+ measures: readonly ReportChartMeasure[];
2606
+ type: ReportChartOptions["type"];
2607
+ sort?: "asc" | "desc";
2608
+ title?: string;
2609
+ showValues?: boolean;
2610
+ maxRows?: number;
2611
+ maxCategories?: number;
2612
+ }
2613
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2614
+ declare interface ReportChartBinding_2 {
2615
+ dataset: string;
2616
+ categoryField: string;
2617
+ measures: readonly ReportChartMeasure_2[];
2618
+ type: ReportChartOptions_2["type"];
2619
+ sort?: "asc" | "desc";
2620
+ title?: string;
2621
+ showValues?: boolean;
2622
+ maxRows?: number;
2623
+ maxCategories?: number;
2624
+ }
2625
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2626
+ declare interface ReportChartBinding_3 {
2627
+ dataset: string;
2628
+ categoryField: string;
2629
+ measures: readonly ReportChartMeasure_3[];
2630
+ type: ReportChartOptions_3["type"];
2631
+ sort?: "asc" | "desc";
2632
+ title?: string;
2633
+ showValues?: boolean;
2634
+ maxRows?: number;
2635
+ maxCategories?: number;
2636
+ }
2637
+ declare interface ReportChartMeasure extends AggregateRequest {
2638
+ label?: string;
2639
+ color?: string;
2640
+ }
2641
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
2642
+ label?: string;
2643
+ color?: string;
2644
+ }
2645
+ declare interface ReportChartMeasure_3 extends AggregateRequest_3 {
2646
+ label?: string;
2647
+ color?: string;
2648
+ }
2649
+ declare interface ReportChartOptions {
2650
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2651
+ categories: readonly string[];
2652
+ series: readonly ReportChartSeries[];
2653
+ leftMm: number;
2654
+ topMm: number;
2655
+ widthMm: number;
2656
+ heightMm: number;
2657
+ title?: string;
2658
+ showValues?: boolean;
2659
+ }
2660
+ declare interface ReportChartOptions_2 {
2661
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2662
+ categories: readonly string[];
2663
+ series: readonly ReportChartSeries_2[];
2664
+ leftMm: number;
2665
+ topMm: number;
2666
+ widthMm: number;
2667
+ heightMm: number;
2668
+ title?: string;
2669
+ showValues?: boolean;
2670
+ }
2671
+ declare interface ReportChartOptions_3 {
2672
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2673
+ categories: readonly string[];
2674
+ series: readonly ReportChartSeries_3[];
2675
+ leftMm: number;
2676
+ topMm: number;
2677
+ widthMm: number;
2678
+ heightMm: number;
2679
+ title?: string;
2680
+ showValues?: boolean;
2681
+ }
2682
+ declare interface ReportChartSeries {
2683
+ name: string;
2684
+ values: readonly (number | null)[];
2685
+ color?: string;
2686
+ }
2687
+ declare interface ReportChartSeries_2 {
2688
+ name: string;
2689
+ values: readonly (number | null)[];
2690
+ color?: string;
2691
+ }
2692
+ declare interface ReportChartSeries_3 {
2693
+ name: string;
2694
+ values: readonly (number | null)[];
2695
+ color?: string;
2696
+ }
2697
+ declare interface ReportComparison {
2698
+ field: string;
2699
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2700
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2701
+ value?: ReportPredicateScalar;
2702
+ right?: ReportPredicateOperand;
2703
+ values?: readonly [
2704
+ ReportPredicateScalar,
2705
+ ReportPredicateScalar
2706
+ ];
2707
+ numeric?: "number" | "decimal";
2708
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2709
+ }
2710
+ declare interface ReportComparison_2 {
2711
+ field: string;
2712
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2713
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2714
+ value?: ReportPredicateScalar_2;
2715
+ right?: ReportPredicateOperand_2;
2716
+ values?: readonly [
2717
+ ReportPredicateScalar_2,
2718
+ ReportPredicateScalar_2
2719
+ ];
2720
+ numeric?: "number" | "decimal";
2721
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2722
+ }
2723
+ declare interface ReportComparison_3 {
2724
+ field: string;
2725
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2726
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2727
+ value?: ReportPredicateScalar_3;
2728
+ right?: ReportPredicateOperand_3;
2729
+ values?: readonly [
2730
+ ReportPredicateScalar_3,
2731
+ ReportPredicateScalar_3
2732
+ ];
2733
+ numeric?: "number" | "decimal";
2734
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2735
+ }
2736
+ declare interface ReportDataComparisonField {
2737
+ field: string;
2738
+ label?: string;
2739
+ /** Numeric comparison is explicit; identifiers containing digits stay text. */
2740
+ type?: "value" | "decimal";
2741
+ /** Absolute decimal tolerance, inclusive. No binary floating-point subtraction. */
2742
+ tolerance?: string;
2743
+ /** Fractional ratio digits. changeRatio is (after - before) / before, not a percent. */
2744
+ ratioDigits?: number;
2745
+ zeroDenominator?: "omit" | "zero-if-equal";
2746
+ missing?: "distinct" | "empty-equivalent" | "zero";
2747
+ }
2748
+ declare interface ReportDataComparisonReviewOptions extends ReportDataReviewSource {
2749
+ fields: readonly ReportDataComparisonField[];
2750
+ maxDifferences?: number;
2751
+ }
2752
+ declare interface ReportDataLimits {
2753
+ maxRows?: number;
2754
+ maxFields?: number;
2755
+ maxCells?: number;
2756
+ }
2757
+ /** A business record, never a physical report row index. */
2758
+ declare interface ReportDataRecord {
2759
+ rowKey: string | number;
2760
+ values: Readonly<Record<string, ReportCellValue>>;
2761
+ }
2762
+ declare interface ReportDataReviewMessages {
2763
+ prefillTitle: string;
2764
+ prefillHint: string;
2765
+ prefillCurrent: string;
2766
+ prefillReference: string;
2767
+ prefillLoad: string;
2768
+ prefillApply: string;
2769
+ prefillMatched: string;
2770
+ prefillChanged: string;
2771
+ prefillSkipped: string;
2772
+ prefillConflict: string;
2773
+ prefillUnchanged: string;
2774
+ prefillReadonly: string;
2775
+ prefillOccupied: string;
2776
+ prefillMissingSource: string;
2777
+ prefillMissingTarget: string;
2778
+ prefillAmbiguous: string;
2779
+ prefillInvalid: string;
2780
+ comparisonTitle: string;
2781
+ comparisonHint: string;
2782
+ comparisonLoad: string;
2783
+ comparisonAdded: string;
2784
+ comparisonRemoved: string;
2785
+ comparisonChanged: string;
2786
+ comparisonUnchanged: string;
2787
+ reviewCancel: string;
2788
+ reviewClose: string;
2789
+ reviewBefore: string;
2790
+ reviewAfter: string;
2791
+ reviewField: string;
2792
+ reviewKey: string;
2793
+ reviewDelta: string;
2794
+ reviewRatio: string;
2795
+ reviewLocate: string;
2796
+ reviewEmpty: string;
2797
+ reviewPrevious: string;
2798
+ reviewNext: string;
2799
+ reviewPage: string;
2800
+ }
2801
+ declare interface ReportDataReviewMessages_2 {
2802
+ prefillTitle: string;
2803
+ prefillHint: string;
2804
+ prefillCurrent: string;
2805
+ prefillReference: string;
2806
+ prefillLoad: string;
2807
+ prefillApply: string;
2808
+ prefillMatched: string;
2809
+ prefillChanged: string;
2810
+ prefillSkipped: string;
2811
+ prefillConflict: string;
2812
+ prefillUnchanged: string;
2813
+ prefillReadonly: string;
2814
+ prefillOccupied: string;
2815
+ prefillMissingSource: string;
2816
+ prefillMissingTarget: string;
2817
+ prefillAmbiguous: string;
2818
+ prefillInvalid: string;
2819
+ comparisonTitle: string;
2820
+ comparisonHint: string;
2821
+ comparisonLoad: string;
2822
+ comparisonAdded: string;
2823
+ comparisonRemoved: string;
2824
+ comparisonChanged: string;
2825
+ comparisonUnchanged: string;
2826
+ reviewCancel: string;
2827
+ reviewClose: string;
2828
+ reviewBefore: string;
2829
+ reviewAfter: string;
2830
+ reviewField: string;
2831
+ reviewKey: string;
2832
+ reviewDelta: string;
2833
+ reviewRatio: string;
2834
+ reviewLocate: string;
2835
+ reviewEmpty: string;
2836
+ reviewPrevious: string;
2837
+ reviewNext: string;
2838
+ reviewPage: string;
2839
+ }
2840
+ declare interface ReportDataReviewSource extends ReportDataLimits {
2841
+ sourceScope?: string;
2842
+ datasetId: string;
2843
+ label?: string;
2844
+ /** The host chooses history/instances; this package never guesses an endpoint or period. */
2845
+ load(operation: {
2846
+ signal: AbortSignal;
2847
+ }): readonly ReportDataRecord[] | Promise<readonly ReportDataRecord[]>;
2848
+ /** Cancel loaders that do not finish; default 15 seconds, bounded at 120 seconds. */
2849
+ timeoutMs?: number;
2850
+ }
2851
+ declare interface ReportDatasetValidationOptions {
2852
+ rules: readonly ReportValidationRule[];
2853
+ rowKey?: string;
2854
+ computed?: readonly ComputedField[];
2855
+ /** Explicit trusted engine, shared with pagination; never read from a serialized template. */
2856
+ formula?: FormulaAdapter;
2857
+ /** Uses the same bounded tree preparation and descendant-leaf summaries as pagination. */
2858
+ tree?: TreeTableOptions;
2859
+ maxChecks?: number;
2860
+ maxIssues?: number;
2861
+ signal?: AbortSignal;
2862
+ }
2365
2863
  declare type ReportDiscardReason = "reload" | "import" | "replace" | "leave";
2366
2864
  declare interface ReportDocumentStyle {
2367
2865
  id: string;
@@ -2431,6 +2929,10 @@ declare interface ReportEditingOptions {
2431
2929
  canEdit?(context: ReportCellContext): boolean;
2432
2930
  /** Return an error message or throw to reject the edit. */
2433
2931
  validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
2932
+ /** Same declarative rules can be run in Node via validateReportDataset. Requires a source-backed session. */
2933
+ validation?: ReportCandidateValidationOptions;
2934
+ /** Optional host batch validation sees the fully recalculated candidate plan. */
2935
+ validateBatch?(batch: Readonly<ReportEditBatch>, candidate: RenderPlan, operation: ReportEditOperation): void | readonly ReportValidationIssue[] | Promise<void | readonly ReportValidationIssue[]>;
2434
2936
  /** Called before applying the change. A rejection leaves the current report untouched. */
2435
2937
  save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | ReportEditResult | Promise<void | ReportEditResult>;
2436
2938
  /** Must commit all edits in one server transaction. Required for multi-cell persisted edits. */
@@ -2490,7 +2992,9 @@ declare type ReportExpression = {
2490
2992
  field?: string;
2491
2993
  weightField?: string;
2492
2994
  } | {
2493
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
2995
+ op: ReportExpressionOperation;
2996
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
2997
+ condition?: ReportPredicate;
2494
2998
  args: readonly ReportExpression[];
2495
2999
  };
2496
3000
  declare type ReportExpression_2 = {
@@ -2502,7 +3006,9 @@ declare type ReportExpression_2 = {
2502
3006
  field?: string;
2503
3007
  weightField?: string;
2504
3008
  } | {
2505
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3009
+ op: ReportExpressionOperation_2;
3010
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3011
+ condition?: ReportPredicate_2;
2506
3012
  args: readonly ReportExpression_2[];
2507
3013
  };
2508
3014
  declare type ReportExpression_3 = {
@@ -2514,9 +3020,14 @@ declare type ReportExpression_3 = {
2514
3020
  field?: string;
2515
3021
  weightField?: string;
2516
3022
  } | {
2517
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3023
+ op: ReportExpressionOperation_3;
3024
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3025
+ condition?: ReportPredicate_3;
2518
3026
  args: readonly ReportExpression_3[];
2519
3027
  };
3028
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3029
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3030
+ declare type ReportExpressionOperation_3 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
2520
3031
  declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
2521
3032
  declare type ReportFieldAggregation_2 = "sum" | "avg" | "min" | "max" | "count" | "none";
2522
3033
  declare interface ReportFieldCalculation {
@@ -2627,12 +3138,9 @@ declare interface ReportParamDef {
2627
3138
  field: string;
2628
3139
  /** 显示名(缺省用 field) */
2629
3140
  label?: string;
2630
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3141
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2631
3142
  /** select 选项 */
2632
- options?: Array<{
2633
- label: string;
2634
- value: string;
2635
- }>;
3143
+ options?: ReportParamTreeOption[];
2636
3144
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2637
3145
  optionsSource?: string;
2638
3146
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2645,6 +3153,9 @@ declare interface ReportParamDef {
2645
3153
  max?: number | string;
2646
3154
  minLength?: number;
2647
3155
  maxLength?: number;
3156
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3157
+ minItems?: number;
3158
+ maxItems?: number;
2648
3159
  }
2649
3160
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2650
3161
  declare interface ReportParamDef_2 {
@@ -2652,12 +3163,9 @@ declare interface ReportParamDef_2 {
2652
3163
  field: string;
2653
3164
  /** 显示名(缺省用 field) */
2654
3165
  label?: string;
2655
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3166
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2656
3167
  /** select 选项 */
2657
- options?: Array<{
2658
- label: string;
2659
- value: string;
2660
- }>;
3168
+ options?: ReportParamTreeOption_2[];
2661
3169
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2662
3170
  optionsSource?: string;
2663
3171
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2670,6 +3178,9 @@ declare interface ReportParamDef_2 {
2670
3178
  max?: number | string;
2671
3179
  minLength?: number;
2672
3180
  maxLength?: number;
3181
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3182
+ minItems?: number;
3183
+ maxItems?: number;
2673
3184
  }
2674
3185
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2675
3186
  declare interface ReportParamDef_3 {
@@ -2677,12 +3188,9 @@ declare interface ReportParamDef_3 {
2677
3188
  field: string;
2678
3189
  /** 显示名(缺省用 field) */
2679
3190
  label?: string;
2680
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3191
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2681
3192
  /** select 选项 */
2682
- options?: Array<{
2683
- label: string;
2684
- value: string;
2685
- }>;
3193
+ options?: ReportParamTreeOption_3[];
2686
3194
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2687
3195
  optionsSource?: string;
2688
3196
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2695,10 +3203,19 @@ declare interface ReportParamDef_3 {
2695
3203
  max?: number | string;
2696
3204
  minLength?: number;
2697
3205
  maxLength?: number;
3206
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3207
+ minItems?: number;
3208
+ maxItems?: number;
2698
3209
  }
2699
3210
  declare interface ReportParamOption {
2700
3211
  readonly label: string;
2701
3212
  readonly value: string;
3213
+ readonly children?: readonly ReportParamOption[];
3214
+ }
3215
+ declare interface ReportParamOption_2 {
3216
+ readonly label: string;
3217
+ readonly value: string;
3218
+ readonly children?: readonly ReportParamOption_2[];
2702
3219
  }
2703
3220
  declare interface ReportParamOptionsInput {
2704
3221
  readonly source: string;
@@ -2709,8 +3226,19 @@ declare interface ReportParamOptionsInput {
2709
3226
  readonly signal: AbortSignal;
2710
3227
  readonly limit: number;
2711
3228
  }
3229
+ declare interface ReportParamOptionsInput_2 {
3230
+ readonly source: string;
3231
+ readonly field: string;
3232
+ readonly query: string;
3233
+ /** Only declared dependencies, captured at request start. Never the mutable form. */
3234
+ readonly params: Readonly<Record<string, string>>;
3235
+ readonly signal: AbortSignal;
3236
+ readonly limit: number;
3237
+ }
2712
3238
  /** Resolve a trusted source key through the host's existing API/authentication. */
2713
3239
  declare type ReportParamOptionsLoader = (input: ReportParamOptionsInput) => Promise<readonly ReportParamOption[]>;
3240
+ /** Resolve a trusted source key through the host's existing API/authentication. */
3241
+ declare type ReportParamOptionsLoader_2 = (input: ReportParamOptionsInput_2) => Promise<readonly ReportParamOption_2[]>;
2714
3242
  declare interface ReportParamOptionsMessages {
2715
3243
  paramOptionsLoading?: string;
2716
3244
  paramOptionsEmpty?: string;
@@ -2718,6 +3246,8 @@ declare interface ReportParamOptionsMessages {
2718
3246
  paramOptionsMissingLoader?: string;
2719
3247
  paramOptionsDependencies?: string;
2720
3248
  paramOptionsClear?: string;
3249
+ paramNumberRangeStart?: string;
3250
+ paramNumberRangeEnd?: string;
2721
3251
  }
2722
3252
  declare interface ReportParamOptionsMessages_2 {
2723
3253
  paramOptionsLoading?: string;
@@ -2726,7 +3256,66 @@ declare interface ReportParamOptionsMessages_2 {
2726
3256
  paramOptionsMissingLoader?: string;
2727
3257
  paramOptionsDependencies?: string;
2728
3258
  paramOptionsClear?: string;
3259
+ paramNumberRangeStart?: string;
3260
+ paramNumberRangeEnd?: string;
3261
+ }
3262
+ /** Cascader values are unique within each sibling list. */
3263
+ declare interface ReportParamTreeOption {
3264
+ label: string;
3265
+ value: string;
3266
+ children?: ReportParamTreeOption[];
3267
+ }
3268
+ /** Cascader values are unique within each sibling list. */
3269
+ declare interface ReportParamTreeOption_2 {
3270
+ label: string;
3271
+ value: string;
3272
+ children?: ReportParamTreeOption_2[];
3273
+ }
3274
+ /** Cascader values are unique within each sibling list. */
3275
+ declare interface ReportParamTreeOption_3 {
3276
+ label: string;
3277
+ value: string;
3278
+ children?: ReportParamTreeOption_3[];
2729
3279
  }
3280
+ declare type ReportPredicate = ReportComparison | {
3281
+ all: readonly ReportPredicate[];
3282
+ } | {
3283
+ any: readonly ReportPredicate[];
3284
+ } | {
3285
+ not: ReportPredicate;
3286
+ };
3287
+ declare type ReportPredicate_2 = ReportComparison_2 | {
3288
+ all: readonly ReportPredicate_2[];
3289
+ } | {
3290
+ any: readonly ReportPredicate_2[];
3291
+ } | {
3292
+ not: ReportPredicate_2;
3293
+ };
3294
+ declare type ReportPredicate_3 = ReportComparison_3 | {
3295
+ all: readonly ReportPredicate_3[];
3296
+ } | {
3297
+ any: readonly ReportPredicate_3[];
3298
+ } | {
3299
+ not: ReportPredicate_3;
3300
+ };
3301
+ declare type ReportPredicateOperand = {
3302
+ field: string;
3303
+ } | {
3304
+ value: ReportPredicateScalar;
3305
+ };
3306
+ declare type ReportPredicateOperand_2 = {
3307
+ field: string;
3308
+ } | {
3309
+ value: ReportPredicateScalar_2;
3310
+ };
3311
+ declare type ReportPredicateOperand_3 = {
3312
+ field: string;
3313
+ } | {
3314
+ value: ReportPredicateScalar_3;
3315
+ };
3316
+ declare type ReportPredicateScalar = string | number | boolean | null;
3317
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
3318
+ declare type ReportPredicateScalar_3 = string | number | boolean | null;
2730
3319
  declare interface ReportPreferencesAdapter {
2731
3320
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2732
3321
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2737,6 +3326,16 @@ declare interface ReportPreferencesOptions {
2737
3326
  key: string;
2738
3327
  adapter: ReportPreferencesAdapter;
2739
3328
  }
3329
+ declare interface ReportPrefillField {
3330
+ field: string;
3331
+ sourceField?: string;
3332
+ label?: string;
3333
+ }
3334
+ declare interface ReportPrefillReviewOptions extends ReportDataReviewSource {
3335
+ fields: readonly ReportPrefillField[];
3336
+ mode?: "empty" | "replace";
3337
+ maxChanges?: number;
3338
+ }
2740
3339
  declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2741
3340
  declare type ReportPreviewTool = "search" | "thumbnails" | "zoom" | ReportExportFormat | "print" | "pdfWindow" | "editing" | "import";
2742
3341
  declare interface ReportPrintCalibration {
@@ -2783,6 +3382,8 @@ declare interface ReportRuntimeBudget {
2783
3382
  maxRows?: number;
2784
3383
  maxPages?: number;
2785
3384
  maxCells?: number;
3385
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
3386
+ maxChartComponents?: number;
2786
3387
  maxOutputBytes?: number;
2787
3388
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
2788
3389
  maxPreparedBytes?: number;
@@ -2955,6 +3556,29 @@ declare interface ReportTemplateReviewIssue {
2955
3556
  diagnostic?: OutputDiagnostic_2;
2956
3557
  }
2957
3558
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
3559
+ declare interface ReportValidationIssue {
3560
+ ruleId: string;
3561
+ rowKey?: string | number;
3562
+ rowIndex?: number;
3563
+ field?: string;
3564
+ dataset?: string;
3565
+ sourceScope?: string;
3566
+ severity: "error" | "warning";
3567
+ message: string;
3568
+ }
3569
+ declare interface ReportValidationRule {
3570
+ id: string;
3571
+ /** Optional target; omitted applies to each candidate dataset. */
3572
+ dataset?: string;
3573
+ assert: ReportPredicate;
3574
+ when?: ReportPredicate;
3575
+ field?: string;
3576
+ severity?: "error" | "warning";
3577
+ message: string;
3578
+ scope?: "row" | "dataset";
3579
+ /** Dataset-scope assertions read this explicit summary row, never an arbitrary detail row. */
3580
+ aggregates?: readonly AggregateDefinition[];
3581
+ }
2958
3582
  declare interface RichParagraph {
2959
3583
  segments: RichSegment[];
2960
3584
  align?: ComponentStyle["align"];
@@ -3084,6 +3708,34 @@ export declare const RULE_EDITOR_MESSAGES: {
3084
3708
  null: string;
3085
3709
  true: string;
3086
3710
  false: string;
3711
+ if: string;
3712
+ round: string;
3713
+ abs: string;
3714
+ concat: string;
3715
+ trim: string;
3716
+ upper: string;
3717
+ lower: string;
3718
+ dateYear: string;
3719
+ dateMonth: string;
3720
+ dateDay: string;
3721
+ all: string;
3722
+ any: string;
3723
+ not: string;
3724
+ conditionGroup: string;
3725
+ addCondition: string;
3726
+ compareField: string;
3727
+ compareValue: string;
3728
+ between: string;
3729
+ contains: string;
3730
+ isNull: string;
3731
+ isNotNull: string;
3732
+ valueKind: string;
3733
+ calendarDate: string;
3734
+ upperBound: string;
3735
+ lowerBound: string;
3736
+ functionHelp: string;
3737
+ thenValue: string;
3738
+ elseValue: string;
3087
3739
  add: string;
3088
3740
  subtract: string;
3089
3741
  multiply: string;
@@ -3175,41 +3827,54 @@ export declare interface RuleEditorOptions {
3175
3827
  }
3176
3828
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3177
3829
  declare interface StyleRule {
3178
- when: {
3179
- field: string;
3180
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3181
- value: number | string;
3182
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3183
- numeric?: "number" | "decimal";
3184
- };
3830
+ when: ReportPredicate;
3185
3831
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3186
3832
  style: Record<string, unknown>;
3187
3833
  }
3188
3834
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3189
3835
  declare interface StyleRule_2 {
3190
- when: {
3191
- field: string;
3192
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3193
- value: number | string;
3194
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3195
- numeric?: "number" | "decimal";
3196
- };
3836
+ when: ReportPredicate_2;
3197
3837
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3198
3838
  style: Record<string, unknown>;
3199
3839
  }
3200
3840
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3201
3841
  declare interface StyleRule_3 {
3202
- when: {
3203
- field: string;
3204
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3205
- value: number | string;
3206
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3207
- numeric?: "number" | "decimal";
3208
- };
3842
+ when: ReportPredicate_3;
3209
3843
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3210
3844
  style: Record<string, unknown>;
3211
3845
  }
3212
3846
  export declare const TEMPLATE_EDITOR_MESSAGES: {
3847
+ chartNumeric: string;
3848
+ chartNumber: string;
3849
+ chartDecimal: string;
3850
+ chartDigits: string;
3851
+ chartWeight: string;
3852
+ chartWeightedAverage: string;
3853
+ chartNumberOptions: string;
3854
+ chartStacked: string;
3855
+ chartPercent: string;
3856
+ chartDataset: string;
3857
+ chartCategory: string;
3858
+ chartMeasure: string;
3859
+ chartAggregation: string;
3860
+ chartSeries: string;
3861
+ chartAddSeries: string;
3862
+ chartRemoveSeries: string;
3863
+ chartRecordCount: string;
3864
+ chartSum: string;
3865
+ chartAverage: string;
3866
+ chartMinimum: string;
3867
+ chartMaximum: string;
3868
+ chartType: string;
3869
+ chartBar: string;
3870
+ chartLine: string;
3871
+ chartSort: string;
3872
+ chartNatural: string;
3873
+ chartAscending: string;
3874
+ chartDescending: string;
3875
+ chartTitle: string;
3876
+ chartValues: string;
3877
+ chartBindingNote: string;
3213
3878
  toolTarget: string;
3214
3879
  toolPreview: string;
3215
3880
  toolPreviewHide: string;
@@ -3720,7 +4385,8 @@ export declare interface TemplateEditorOptions extends TemplateEditorConflictOpt
3720
4385
  bindingSession?: AnyExcelBindingSession;
3721
4386
  readonly?: boolean;
3722
4387
  messages?: Partial<TemplateEditorMessages>;
3723
- preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar">;
4388
+ visualMessages?: Partial<ColumnVisualMessages>;
4389
+ preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar" | "loadParamOptions">;
3724
4390
  beforeDiscard?: TemplateEditorBeforeDiscard;
3725
4391
  save?: (document: ReportTemplateDocument, context: TemplateEditorSaveContext) => Promise<ReportTemplateDocument>;
3726
4392
  }
@@ -3925,6 +4591,8 @@ declare interface XlsxRenderOptions extends AssetRenderOptions, XlsxImageOptions
3925
4591
  sheetMode?: "auto" | "pages" | "continuous";
3926
4592
  /** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
3927
4593
  valueMode?: "text" | "raw";
4594
+ /** Static data-bar drawing budget; fail explicitly rather than omitting bars. Default 10,000. */
4595
+ maxDataBars?: number;
3928
4596
  /** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
3929
4597
  paperSize?: "auto" | "a3" | "a4" | "a5";
3930
4598
  }