@agile-team/mach-report 2.16.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 (177) hide show
  1. package/README.md +25 -12
  2. package/dist/{ExcelBindingWizard-CP6h2x1f.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-HhB3hAJE.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-ruxcbfY6.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-DcwrH-63.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-BDlNT8JN.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-CGrT5DFN.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-SXCjaPKR.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-6Z3wRFz8.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-lHLOS9Wn.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-Dpk7sLcF.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-CJ9PLc48.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +163 -42
  24. package/dist/analytics.d.ts +163 -42
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +110 -108
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-uVBjX1j5.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-YR7a4BtF.js → auto-BlchZ1b8.js} +10 -10
  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/dataset-DL83majE.js +161 -0
  48. package/dist/dataset-IrlXbUvh.cjs +1 -0
  49. package/dist/designer--TKECSEc.cjs +2 -0
  50. package/dist/designer-d6hJS41w.js +5683 -0
  51. package/dist/designer.cjs +1 -1
  52. package/dist/designer.d.cts +835 -45
  53. package/dist/designer.d.ts +835 -45
  54. package/dist/designer.js +23 -20
  55. package/dist/{encoding-BYF9ZTl9.cjs → encoding-B--eZpp1.cjs} +1 -1
  56. package/dist/{encoding-BOGq4qYL.js → encoding-mctOLocI.js} +2 -2
  57. package/dist/{font-loader-EKLzOJxf.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  58. package/dist/{font-loader-CzI1GuBc.js → font-loader-DW8tIaNp.js} +1 -1
  59. package/dist/index-CPh6tqge.js +1575 -0
  60. package/dist/index-CUNw7dL9.cjs +1 -0
  61. package/dist/index.cjs +8 -8
  62. package/dist/index.d.cts +534 -16
  63. package/dist/index.d.ts +534 -16
  64. package/dist/index.js +1393 -955
  65. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  66. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  67. package/dist/matrix-0hywp0-F.cjs +1 -0
  68. package/dist/matrix-Dy-tyY7E.js +381 -0
  69. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  70. package/dist/param-validation-CnDEd2l-.js +333 -0
  71. package/dist/{pdf-DJ5S6ukC.js → pdf-CKROKygt.js} +1845 -1845
  72. package/dist/{pdf-ByVCb1i6.cjs → pdf-DqyxJ96U.cjs} +47 -47
  73. package/dist/pdf.cjs +1 -1
  74. package/dist/pdf.d.cts +66 -0
  75. package/dist/pdf.d.ts +66 -0
  76. package/dist/pdf.js +2 -2
  77. package/dist/{plugin-C2j5_mhx.js → plugin-ByjF2kiV.js} +5 -5
  78. package/dist/{plugin-Dr39GBRG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  79. package/dist/prefill-B8H9qwE4.js +371 -0
  80. package/dist/prefill-D7EswyTI.cjs +1 -0
  81. package/dist/{prepared-DqtpvRTn.js → prepared-BE-4jfX5.js} +2 -2
  82. package/dist/{prepared-DdrjLC7L.cjs → prepared-CGVphji3.cjs} +1 -1
  83. package/dist/{protocol-BzwMP4Vw.cjs → protocol-ByRVzzQG.cjs} +1 -1
  84. package/dist/{protocol-kt4Iy6-3.js → protocol-Cr81vFSQ.js} +3 -3
  85. package/dist/{record-bindings-CZWBJ1fU.js → record-bindings-DEJtmo3p.js} +67 -107
  86. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  87. package/dist/{region-binding-workflow-CWNvIjkV.js → region-binding-workflow-CBg0l_tj.js} +2 -2
  88. package/dist/{region-binding-workflow-CqSMxQ4p.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  89. package/dist/report-encoding-worker.cjs +1 -1
  90. package/dist/report-encoding-worker.js +1 -1
  91. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  92. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  93. package/dist/runtime-CDA6d263.cjs +1 -0
  94. package/dist/runtime-CEMvybO7.js +170 -0
  95. package/dist/sbom.cdx.json +1 -1
  96. package/dist/server/node.d.cts +121 -7
  97. package/dist/server/node.d.ts +121 -7
  98. package/dist/server-node.cjs +4 -4
  99. package/dist/server-node.js +3446 -2115
  100. package/dist/server.cjs +1 -1
  101. package/dist/server.d.cts +417 -29
  102. package/dist/server.d.ts +417 -29
  103. package/dist/server.js +787 -544
  104. package/dist/sha256-BDQ1Qk7A.js +158 -0
  105. package/dist/sha256-DgZAKXqI.cjs +1 -0
  106. package/dist/style.css +1 -1
  107. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  108. package/dist/template-bindings-TKnXM7ll.js +62 -0
  109. package/dist/{template-catalog-BtR2JmCL.js → template-catalog-CmbWOJqy.js} +16 -16
  110. package/dist/template-catalog-Utu4GP09.cjs +1 -0
  111. package/dist/{template-fragments-BVsbxs4a.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  112. package/dist/{template-fragments-By0aZC1D.js → template-fragments-DWgo9tlZ.js} +2 -2
  113. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  114. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  115. package/dist/{template-registry-Cw3vRTX2.js → template-registry-BIhIHOab.js} +319 -314
  116. package/dist/template-registry-DzWswQI5.cjs +1 -0
  117. package/dist/vue/async.d.cts +636 -35
  118. package/dist/vue/async.d.ts +636 -35
  119. package/dist/vue/index.d.cts +746 -67
  120. package/dist/vue/index.d.ts +746 -67
  121. package/dist/vue-async.cjs +1 -1
  122. package/dist/vue-async.js +3 -3
  123. package/dist/vue.cjs +1 -1
  124. package/dist/vue.js +94 -89
  125. package/dist/{workbook-session-Cbts-22R.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  126. package/dist/{workbook-session-BeSO8PFB.js → workbook-session-BoScoOg-.js} +2 -2
  127. package/dist/worker.cjs +1 -1
  128. package/dist/worker.d.cts +75 -7
  129. package/dist/worker.d.ts +75 -7
  130. package/dist/worker.js +4 -4
  131. package/dist/xlsx.cjs +4 -4
  132. package/dist/xlsx.d.cts +208 -15
  133. package/dist/xlsx.d.ts +208 -15
  134. package/dist/xlsx.js +288 -252
  135. package/package.json +1 -1
  136. package/dist/ParamEditor-CUQLgoxa.cjs +0 -1
  137. package/dist/ParamEditor-OKesP_nO.js +0 -594
  138. package/dist/ReportBatchPanel-cZCAMAwH.cjs +0 -1
  139. package/dist/ReportPreview-BcDKCLiK.js +0 -4834
  140. package/dist/ReportPreview-Bk9nLfO9.cjs +0 -6
  141. package/dist/RuleEditor-BX5S8RSF.cjs +0 -1
  142. package/dist/RuleEditor-CGl9XY2s.js +0 -2037
  143. package/dist/assets-CqIbfbTr.js +0 -126
  144. package/dist/assets-e4YSke8n.cjs +0 -1
  145. package/dist/capabilities-DDwXr_cA.js +0 -103
  146. package/dist/capabilities-DNLyZdNw.cjs +0 -1
  147. package/dist/component-tree-Ca6YYfHq.js +0 -61
  148. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  149. package/dist/computed-C-4C2S5h.js +0 -521
  150. package/dist/computed-CGV2a809.cjs +0 -1
  151. package/dist/config-Dg_o8e7m.cjs +0 -1
  152. package/dist/config-XQ4qrQ7Q.js +0 -844
  153. package/dist/dataset-BkRmwgeJ.cjs +0 -1
  154. package/dist/dataset-H5pFuQGU.js +0 -121
  155. package/dist/designer-BfQSahxq.js +0 -5163
  156. package/dist/designer-CPPdeM5_.cjs +0 -2
  157. package/dist/diagnostic-notification-B9K9We3h.cjs +0 -1
  158. package/dist/diagnostic-notification-qGAYZdkB.js +0 -7
  159. package/dist/drill-CsdjgkRM.cjs +0 -1
  160. package/dist/drill-DIGsZfyB.js +0 -145
  161. package/dist/json-snapshot-D6ioHth9.js +0 -1702
  162. package/dist/json-snapshot-DknkjvxP.cjs +0 -2
  163. package/dist/matrix-CGRGkn5s.js +0 -112
  164. package/dist/matrix-gEO7ZM_u.cjs +0 -1
  165. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  166. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  167. package/dist/record-bindings-DUX1VMlR.cjs +0 -1
  168. package/dist/runtime-BjKBI530.js +0 -168
  169. package/dist/runtime-CBFEPKEs.cjs +0 -1
  170. package/dist/sha256-BshdOkCC.cjs +0 -1
  171. package/dist/sha256-DTG-Gq8i.js +0 -157
  172. package/dist/template-bindings-C2SpvsMU.js +0 -58
  173. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  174. package/dist/template-catalog-C2NLdrwB.cjs +0 -1
  175. package/dist/template-registry-C62vpv4a.cjs +0 -1
  176. package/dist/tree-BX380Rr7.cjs +0 -1
  177. package/dist/tree-CjVZLRw7.js +0 -172
@@ -8,7 +8,16 @@ import { ExtractPropTypes } from 'vue';
8
8
  import { InjectionKey } from 'vue';
9
9
  import { PropType } from 'vue';
10
10
  import { Ref } from 'vue';
11
+ import { ShallowRef } from 'vue';
11
12
  declare const __VLS_component: DefineComponent<ExtractPropTypes<{
13
+ prefill: {
14
+ type: PropType<ReportPrefillReviewOptions | false>;
15
+ default: undefined;
16
+ };
17
+ dataComparison: {
18
+ type: PropType<ReportDataComparisonReviewOptions | false>;
19
+ default: undefined;
20
+ };
12
21
  drill: {
13
22
  type: PropType<ReportDrillOptions>;
14
23
  default: undefined;
@@ -159,7 +168,7 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
159
168
  ?: boolean;
160
169
  }): Promise<void> | void;
161
170
  importExcel?(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
162
- getPlan?(): RenderPlan | null;
171
+ getPlan?(): RenderPlan_2 | null;
163
172
  getChanges?(): ReportCellEdit_2[];
164
173
  getDifferences?(): ReportCellEdit_2[];
165
174
  undo?(): Promise<boolean>;
@@ -183,6 +192,14 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
183
192
  "template-import": (result: ExcelImportResult) => any;
184
193
  "preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
185
194
  }, string, MachReportVuePublicProps, Readonly<ExtractPropTypes<{
195
+ prefill: {
196
+ type: PropType<ReportPrefillReviewOptions | false>;
197
+ default: undefined;
198
+ };
199
+ dataComparison: {
200
+ type: PropType<ReportDataComparisonReviewOptions | false>;
201
+ default: undefined;
202
+ };
186
203
  drill: {
187
204
  type: PropType<ReportDrillOptions>;
188
205
  default: undefined;
@@ -320,13 +337,14 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
320
337
  "onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
321
338
  "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
322
339
  }>, {
340
+ output: ReportOutputOptions;
323
341
  editable: boolean | ReportEditingOptions;
324
342
  params: Record<string, string>;
325
- output: ReportOutputOptions;
326
343
  height: string;
327
344
  gapPx: number;
328
345
  assets: AssetRenderOptions;
329
346
  reportId: string | string[] | null;
347
+ prefill: false | ReportPrefillReviewOptions;
330
348
  debug: boolean;
331
349
  showExport: boolean;
332
350
  showPrint: boolean;
@@ -343,6 +361,7 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
343
361
  guardChanges: boolean;
344
362
  beforeDiscard: ReportBeforeDiscard;
345
363
  messages: Partial<MachReportMessages>;
364
+ dataComparison: false | ReportDataComparisonReviewOptions;
346
365
  excelImport: boolean | ExcelImportOptions;
347
366
  preset: string;
348
367
  emptyState: boolean | ReportEmptyState;
@@ -429,6 +448,26 @@ declare type __VLS_Props_3 = {
429
448
  disabled?: boolean;
430
449
  loadOptions?: ReportParamOptionsLoader;
431
450
  };
451
+ declare type __VLS_Props_4 = {
452
+ issues: readonly ReportValidationIssue[];
453
+ messages?: Partial<{
454
+ title: string;
455
+ error: string;
456
+ warning: string;
457
+ locate: string;
458
+ dataset: string;
459
+ row: string;
460
+ more: string;
461
+ }>;
462
+ };
463
+ declare type __VLS_Props_5 = {
464
+ state: ReportPrefillState;
465
+ messages: ReportDataReviewMessages;
466
+ };
467
+ declare type __VLS_Props_6 = {
468
+ state: ReportDataComparisonState;
469
+ messages: ReportDataReviewMessages;
470
+ };
432
471
  declare function __VLS_template(): {
433
472
  slots: {
434
473
  settings?(_: {}): any;
@@ -439,6 +478,7 @@ declare function __VLS_template_2(): {
439
478
  attrs: Partial<{}>;
440
479
  slots: {
441
480
  navigation?(_: {}): any;
481
+ 'data-tools'?(_: {}): any;
442
482
  };
443
483
  refs: {
444
484
  searchToggleRef: HTMLButtonElement;
@@ -461,7 +501,7 @@ declare type __VLS_WithTemplateSlots_2<T, S> = T & {
461
501
  declare interface AggregateDefinition {
462
502
  /** Output column; valueField defaults to this field. */
463
503
  field: string;
464
- op: AggregateOperation;
504
+ op: AggregateOperation_2;
465
505
  valueField?: string;
466
506
  weightField?: string;
467
507
  numeric?: "number" | "decimal";
@@ -470,7 +510,7 @@ declare interface AggregateDefinition {
470
510
  declare interface AggregateDefinition_2 {
471
511
  /** Output column; valueField defaults to this field. */
472
512
  field: string;
473
- op: AggregateOperation_2;
513
+ op: AggregateOperation;
474
514
  valueField?: string;
475
515
  weightField?: string;
476
516
  numeric?: "number" | "decimal";
@@ -488,6 +528,27 @@ declare interface AggregateDefinition_3 {
488
528
  declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
489
529
  declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
490
530
  declare type AggregateOperation_3 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
531
+ declare interface AggregateRequest {
532
+ op: AggregateOperation;
533
+ field?: string;
534
+ weightField?: string;
535
+ numeric?: "number" | "decimal";
536
+ digits?: number;
537
+ }
538
+ declare interface AggregateRequest_2 {
539
+ op: AggregateOperation_2;
540
+ field?: string;
541
+ weightField?: string;
542
+ numeric?: "number" | "decimal";
543
+ digits?: number;
544
+ }
545
+ declare interface AggregateRequest_3 {
546
+ op: AggregateOperation_3;
547
+ field?: string;
548
+ weightField?: string;
549
+ numeric?: "number" | "decimal";
550
+ digits?: number;
551
+ }
491
552
  declare interface AssetRenderBudget {
492
553
  /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
493
554
  maxAssets?: number;
@@ -498,13 +559,34 @@ declare interface AssetRenderBudget {
498
559
  /** Wall-clock budget, including adapters that ignore AbortSignal. Default 30 seconds. */
499
560
  maxDurationMs?: number;
500
561
  }
562
+ declare interface AssetRenderBudget_2 {
563
+ /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
564
+ maxAssets?: number;
565
+ /** Maximum image payload bytes per new asset, default 32 MiB. */
566
+ maxImageBytes?: number;
567
+ /** Maximum total image payload bytes for new assets, default 128 MiB. */
568
+ maxTotalImageBytes?: number;
569
+ /** Wall-clock budget, including adapters that ignore AbortSignal. Default 30 seconds. */
570
+ maxDurationMs?: number;
571
+ }
501
572
  declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
502
573
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
574
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
575
+ assetRegistry?: ComponentAssetRegistry;
503
576
  assetBudget?: AssetRenderBudget;
504
577
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
505
578
  assetFailure?: "throw" | "placeholder";
506
579
  signal?: AbortSignal;
507
580
  }
581
+ declare interface AssetRenderOptions_2 extends OutputDiagnosticOptions_2, ImageMediaOptions_2 {
582
+ assetRenderers?: Partial<Record<ImageComponentKind_2, ComponentImageRenderer_2>>;
583
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
584
+ assetRegistry?: ComponentAssetRegistry_2;
585
+ assetBudget?: AssetRenderBudget_2;
586
+ /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
587
+ assetFailure?: "throw" | "placeholder";
588
+ signal?: AbortSignal;
589
+ }
508
590
  declare interface BrowserReportWorker {
509
591
  postMessage(value: unknown, transfer?: Transferable[]): void;
510
592
  terminate(): void;
@@ -514,8 +596,8 @@ declare interface BrowserReportWorker {
514
596
  removeEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
515
597
  }
516
598
  /** 供 HTML/Word 导出的完整文档;打印路径逐页渲染,避免预先生成所有页。 */
517
- export declare function buildPrintDocument(p: RenderPlan, options?: ReportPrintOptions): PrintHtmlResult;
518
- export declare function buildWordHtml(p: RenderPlan): {
599
+ export declare function buildPrintDocument(p: RenderPlan_2, options?: ReportPrintOptions): PrintHtmlResult;
600
+ export declare function buildWordHtml(p: RenderPlan_2): {
519
601
  html: string;
520
602
  filename: string;
521
603
  };
@@ -618,6 +700,62 @@ declare type ColumnFormat_3 = {
618
700
  kind: "date";
619
701
  pattern?: string;
620
702
  };
703
+ declare type ColumnVisual = {
704
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
705
+ field?: string;
706
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
707
+ numeric?: "number" | "decimal";
708
+ min?: number;
709
+ max?: number;
710
+ } & ({
711
+ kind: "colorScale";
712
+ lowColor?: string;
713
+ highColor?: string;
714
+ } | {
715
+ kind: "dataBar";
716
+ color?: string;
717
+ negativeColor?: string;
718
+ });
719
+ declare type ColumnVisual_2 = {
720
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
721
+ field?: string;
722
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
723
+ numeric?: "number" | "decimal";
724
+ min?: number;
725
+ max?: number;
726
+ } & ({
727
+ kind: "colorScale";
728
+ lowColor?: string;
729
+ highColor?: string;
730
+ } | {
731
+ kind: "dataBar";
732
+ color?: string;
733
+ negativeColor?: string;
734
+ });
735
+ declare type ColumnVisual_3 = {
736
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
737
+ field?: string;
738
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
739
+ numeric?: "number" | "decimal";
740
+ min?: number;
741
+ max?: number;
742
+ } & ({
743
+ kind: "colorScale";
744
+ lowColor?: string;
745
+ highColor?: string;
746
+ } | {
747
+ kind: "dataBar";
748
+ color?: string;
749
+ negativeColor?: string;
750
+ });
751
+ declare interface ComponentAssetRegistry {
752
+ rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
753
+ hasExtension(id: string, version: string, kind: string): boolean;
754
+ }
755
+ declare interface ComponentAssetRegistry_2 {
756
+ rendererFor(component: Readonly<PlanComponent_2>): ComponentImageRenderer_2 | undefined;
757
+ hasExtension(id: string, version: string, kind: string): boolean;
758
+ }
621
759
  /** A literal own field of the current label record; expressions and paths are not evaluated. */
622
760
  declare interface ComponentBinding {
623
761
  field: string;
@@ -649,7 +787,15 @@ declare interface ComponentImageContext {
649
787
  readonly componentPath: readonly number[];
650
788
  readonly signal: AbortSignal;
651
789
  }
790
+ declare interface ComponentImageContext_2 {
791
+ readonly component: Readonly<PlanComponent_2>;
792
+ readonly pageIndex: number;
793
+ readonly componentIndex: number;
794
+ readonly componentPath: readonly number[];
795
+ readonly signal: AbortSignal;
796
+ }
652
797
  declare type ComponentImageRenderer = (context: ComponentImageContext) => string | Promise<string>;
798
+ declare type ComponentImageRenderer_2 = (context: ComponentImageContext_2) => string | Promise<string>;
653
799
  declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
654
800
  declare type ComponentKind_2 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
655
801
  declare type ComponentKind_3 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
@@ -768,7 +914,7 @@ export declare function createFetchRequest(options?: FetchRequestOptions): HostR
768
914
  */
769
915
  export declare function createLocalFetcher(entries: Record<string, LocalTemplateEntry> | ReportRegistry): PlanFetcher;
770
916
  /** Independent physical test page. Its ruler is measured in millimetres, never CSS pixels. */
771
- export declare function createPrintCalibrationPlan(widthMm: number, heightMm: number): RenderPlan_2;
917
+ export declare function createPrintCalibrationPlan(widthMm: number, heightMm: number): RenderPlan;
772
918
  /** Explicit persistence bridge. Merely registering ReportProvider never enables editing or saving. */
773
919
  export declare function createProviderEditing(provider: ReportProvider, options: ProviderEditingOptions): ReportEditingOptions;
774
920
  /** Optional browser convenience adapter. Access errors are handled by the preview. */
@@ -786,6 +932,7 @@ declare interface DatasetValidationOptions {
786
932
  maxIssues?: number;
787
933
  }
788
934
  export declare const DEFAULT_CALCULATION_MESSAGES: ReportCalculationMessages;
935
+ export declare const DEFAULT_DATA_REVIEW_MESSAGES: ReportDataReviewMessages;
789
936
  export declare const DEFAULT_MESSAGES: MachReportMessages;
790
937
  export declare const DEFAULT_PRINT_MESSAGES: Required<ReportPrintMessages>;
791
938
  export declare const DEFAULT_THEME: MachReportTheme;
@@ -923,7 +1070,21 @@ declare interface FormulaAdapter {
923
1070
  rows: readonly Record<string, unknown>[];
924
1071
  }): unknown;
925
1072
  }
1073
+ declare interface FormulaAdapter_2 {
1074
+ /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
1075
+ evaluate(expression: string, context: {
1076
+ row: Readonly<Record<string, unknown>>;
1077
+ rowIndex: number;
1078
+ rows: readonly Record<string, unknown>[];
1079
+ }): unknown;
1080
+ }
926
1081
  declare interface GridCell {
1082
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1083
+ dataBar?: {
1084
+ start: number;
1085
+ end: number;
1086
+ color: string;
1087
+ };
927
1088
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
928
1089
  richParagraphs?: RichParagraph[];
929
1090
  text?: string;
@@ -949,6 +1110,12 @@ declare interface GridCell {
949
1110
  style?: ComponentStyle;
950
1111
  }
951
1112
  declare interface GridCell_2 {
1113
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1114
+ dataBar?: {
1115
+ start: number;
1116
+ end: number;
1117
+ color: string;
1118
+ };
952
1119
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
953
1120
  richParagraphs?: RichParagraph_2[];
954
1121
  text?: string;
@@ -974,6 +1141,12 @@ declare interface GridCell_2 {
974
1141
  style?: ComponentStyle_2;
975
1142
  }
976
1143
  declare interface GridCell_3 {
1144
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1145
+ dataBar?: {
1146
+ start: number;
1147
+ end: number;
1148
+ color: string;
1149
+ };
977
1150
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
978
1151
  richParagraphs?: RichParagraph_3[];
979
1152
  text?: string;
@@ -1007,6 +1180,7 @@ export declare type HostRequest = (config: {
1007
1180
  signal?: AbortSignal;
1008
1181
  }) => Promise<unknown>;
1009
1182
  declare type ImageComponentKind = "image" | "chart" | "barcode" | "qrcode";
1183
+ declare type ImageComponentKind_2 = "image" | "chart" | "barcode" | "qrcode";
1010
1184
  /** Bounded binary image inspection shared by PDF, Excel and template import. No decoder is loaded. */
1011
1185
  declare interface ImageMediaOptions {
1012
1186
  maxImageBytes?: number;
@@ -1053,6 +1227,8 @@ declare interface ListColumn {
1053
1227
  format?: ColumnFormat_2;
1054
1228
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1055
1229
  rules?: StyleRule[];
1230
+ /** Optional resolved color scale or value-preserving data bar. */
1231
+ visual?: ColumnVisual;
1056
1232
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1057
1233
  editable?: boolean;
1058
1234
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1078,6 +1254,8 @@ declare interface ListColumn_2 {
1078
1254
  format?: ColumnFormat;
1079
1255
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1080
1256
  rules?: StyleRule_2[];
1257
+ /** Optional resolved color scale or value-preserving data bar. */
1258
+ visual?: ColumnVisual_2;
1081
1259
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1082
1260
  editable?: boolean;
1083
1261
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1103,6 +1281,8 @@ declare interface ListColumn_3 {
1103
1281
  format?: ColumnFormat_3;
1104
1282
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1105
1283
  rules?: StyleRule_3[];
1284
+ /** Optional resolved color scale or value-preserving data bar. */
1285
+ visual?: ColumnVisual_3;
1106
1286
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1107
1287
  editable?: boolean;
1108
1288
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1431,7 +1611,7 @@ export declare interface MachReportController {
1431
1611
  /** Explicit import does not require the toolbar excelImport option. No host APIs are called. */
1432
1612
  importExcel?(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
1433
1613
  /** Copies prevent consumers from mutating the preview's current snapshot. */
1434
- getPlan?(): RenderPlan | null;
1614
+ getPlan?(): RenderPlan_2 | null;
1435
1615
  getChanges?(): ReportCellEdit_2[];
1436
1616
  getDifferences?(): ReportCellEdit_2[];
1437
1617
  undo?(): Promise<boolean>;
@@ -1479,6 +1659,10 @@ export declare interface MachReportDefaults {
1479
1659
  xlsx?: XlsxRenderOptions;
1480
1660
  /** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
1481
1661
  editable?: boolean | ReportEditingOptions;
1662
+ /** Optional reference-data loader; review and atomic editing are maintained inside the package. */
1663
+ prefill?: ReportPrefillReviewOptions | false;
1664
+ /** Compare a reference with the same query result rendered in the report. */
1665
+ dataComparison?: ReportDataComparisonReviewOptions | false;
1482
1666
  /** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
1483
1667
  excelImport?: boolean | ExcelImportOptions;
1484
1668
  }
@@ -1511,7 +1695,7 @@ export declare interface MachReportHandle extends MachReportController {
1511
1695
  reload?: boolean;
1512
1696
  }): Promise<void>;
1513
1697
  importExcel(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
1514
- getPlan(): RenderPlan | null;
1698
+ getPlan(): RenderPlan_2 | null;
1515
1699
  getChanges(): ReportCellEdit_2[];
1516
1700
  getDifferences(): ReportCellEdit_2[];
1517
1701
  undo(): Promise<boolean>;
@@ -1532,7 +1716,14 @@ export declare type MachReportLogger = Pick<Console, "warn" | "info">;
1532
1716
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1533
1717
  */
1534
1718
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1535
- export declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1719
+ export declare interface MachReportMessages extends Partial<ReportCalculationMessages>, Partial<ReportDataReviewMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1720
+ reviewTools?: string;
1721
+ validationTitle?: string;
1722
+ validationError?: string;
1723
+ validationWarning?: string;
1724
+ validationDataset?: string;
1725
+ validationRow?: string;
1726
+ validationMore?: string;
1536
1727
  drillActions?: string;
1537
1728
  drillOpening?: string;
1538
1729
  drillMissingValue?: string;
@@ -1803,6 +1994,57 @@ export declare interface MachReportToolbarOptions {
1803
1994
  /** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
1804
1995
  exportFormats?: ReportExportFormat[];
1805
1996
  }
1997
+ declare interface MatrixAxisOptions {
1998
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1999
+ labels?: readonly string[];
2000
+ /** Per-level sibling order; omitted levels retain first-seen order. */
2001
+ sort?: readonly MatrixDimensionOrder[];
2002
+ /** One-based prefix depths. Leaf depths are not subtotals. */
2003
+ subtotals?: readonly number[];
2004
+ }
2005
+ declare interface MatrixAxisOptions_2 {
2006
+ /** Display names in the same outer-to-inner order as the dimension fields. */
2007
+ labels?: readonly string[];
2008
+ /** Per-level sibling order; omitted levels retain first-seen order. */
2009
+ sort?: readonly MatrixDimensionOrder_2[];
2010
+ /** One-based prefix depths. Leaf depths are not subtotals. */
2011
+ subtotals?: readonly number[];
2012
+ }
2013
+ declare interface MatrixAxisOptions_3 {
2014
+ /** Display names in the same outer-to-inner order as the dimension fields. */
2015
+ labels?: readonly string[];
2016
+ /** Per-level sibling order; omitted levels retain first-seen order. */
2017
+ sort?: readonly MatrixDimensionOrder_3[];
2018
+ /** One-based prefix depths. Leaf depths are not subtotals. */
2019
+ subtotals?: readonly number[];
2020
+ }
2021
+ declare type MatrixDimensionOrder = "source" | "asc" | "desc";
2022
+ declare type MatrixDimensionOrder_2 = "source" | "asc" | "desc";
2023
+ declare type MatrixDimensionOrder_3 = "source" | "asc" | "desc";
2024
+ declare interface MatrixHierarchyOptions {
2025
+ row?: MatrixAxisOptions;
2026
+ column?: MatrixAxisOptions;
2027
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
2028
+ emptyLabel?: string;
2029
+ subtotalLabel?: string;
2030
+ totalLabel?: string;
2031
+ }
2032
+ declare interface MatrixHierarchyOptions_2 {
2033
+ row?: MatrixAxisOptions_2;
2034
+ column?: MatrixAxisOptions_2;
2035
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
2036
+ emptyLabel?: string;
2037
+ subtotalLabel?: string;
2038
+ totalLabel?: string;
2039
+ }
2040
+ declare interface MatrixHierarchyOptions_3 {
2041
+ row?: MatrixAxisOptions_3;
2042
+ column?: MatrixAxisOptions_3;
2043
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
2044
+ emptyLabel?: string;
2045
+ subtotalLabel?: string;
2046
+ totalLabel?: string;
2047
+ }
1806
2048
  declare interface MatrixTableOptions {
1807
2049
  rowFields: readonly string[];
1808
2050
  columnFields: readonly string[];
@@ -1817,6 +2059,10 @@ declare interface MatrixTableOptions {
1817
2059
  maxColumns?: number;
1818
2060
  maxInputRows?: number;
1819
2061
  maxCells?: number;
2062
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
2063
+ hierarchy?: MatrixHierarchyOptions;
2064
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
2065
+ maxAggregateUpdates?: number;
1820
2066
  }
1821
2067
  declare interface MatrixTableOptions_2 {
1822
2068
  rowFields: readonly string[];
@@ -1832,6 +2078,10 @@ declare interface MatrixTableOptions_2 {
1832
2078
  maxColumns?: number;
1833
2079
  maxInputRows?: number;
1834
2080
  maxCells?: number;
2081
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
2082
+ hierarchy?: MatrixHierarchyOptions_2;
2083
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
2084
+ maxAggregateUpdates?: number;
1835
2085
  }
1836
2086
  declare interface MatrixTableOptions_3 {
1837
2087
  rowFields: readonly string[];
@@ -1847,6 +2097,10 @@ declare interface MatrixTableOptions_3 {
1847
2097
  maxColumns?: number;
1848
2098
  maxInputRows?: number;
1849
2099
  maxCells?: number;
2100
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
2101
+ hierarchy?: MatrixHierarchyOptions_3;
2102
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
2103
+ maxAggregateUpdates?: number;
1850
2104
  }
1851
2105
  export declare function normalizeReportIds(reportId: ReportIdInput): string[];
1852
2106
  /** Workers preserve stable error codes, not JavaScript class identity. Only known codes cross the UI boundary. */
@@ -1861,6 +2115,11 @@ declare interface OutputDiagnostic {
1861
2115
  componentPath?: readonly number[];
1862
2116
  kind: string;
1863
2117
  nid?: string;
2118
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
2119
+ extension?: {
2120
+ id: string;
2121
+ version: string;
2122
+ };
1864
2123
  message: string;
1865
2124
  }
1866
2125
  declare interface OutputDiagnostic_2 {
@@ -1873,6 +2132,11 @@ declare interface OutputDiagnostic_2 {
1873
2132
  componentPath?: readonly number[];
1874
2133
  kind: string;
1875
2134
  nid?: string;
2135
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
2136
+ extension?: {
2137
+ id: string;
2138
+ version: string;
2139
+ };
1876
2140
  message: string;
1877
2141
  }
1878
2142
  declare interface OutputDiagnosticOptions extends OutputTaskOptions {
@@ -1919,17 +2183,19 @@ declare interface PaginateOptions {
1919
2183
  maxPages?: number;
1920
2184
  /** Actual grid cells, including repeated furniture and nested children; checked before each page is appended. */
1921
2185
  maxCells?: number;
2186
+ /** Shared bound-chart primitive budget, checked before expansion; default 50000, range 1..1000000. */
2187
+ maxChartComponents?: number;
1922
2188
  signal?: AbortSignal;
1923
2189
  /** Streaming total-page anchors can skip the bounded counting pass when known. */
1924
2190
  knownTotalPages?: number;
1925
2191
  onWarning?: (warning: string) => void;
1926
2192
  /** Trusted formula adapter is passed at execution time; it is never serialized in templates. */
1927
- formula?: FormulaAdapter;
2193
+ formula?: FormulaAdapter_2;
1928
2194
  }
1929
2195
  export declare const PARAM_OPTIONS_MESSAGES: Required<ReportParamOptionsMessages>;
1930
2196
  /** PDF 导出器:RenderPlan → PDF 字节;第二参数可上报非致命保真告警。 */
1931
2197
  export declare interface PdfExporter {
1932
- (plan: RenderPlan, onWarning?: (message: string) => void, task?: OutputTaskOptions_2 & {
2198
+ (plan: RenderPlan_2, onWarning?: (message: string) => void, task?: OutputTaskOptions_2 & {
1933
2199
  onDiagnostic?: (entry: OutputDiagnostic) => void;
1934
2200
  }): Promise<Uint8Array>;
1935
2201
  /** 可选轻量字体检查;旧版自定义导出函数无需实现。取消时拒绝 AbortError。 */
@@ -1946,6 +2212,8 @@ export declare interface PdfFontCheckResult {
1946
2212
  /** available 仅表示字体资源可达;实际导出仍会校验文字能否编码。 */
1947
2213
  export declare type PdfFontStatus = "unchecked" | "checking" | "available" | "disabled" | "unverified" | "error";
1948
2214
  declare interface PlanComponent {
2215
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2216
+ chartBinding?: ReportChartBinding;
1949
2217
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1950
2218
  code?: CodeOptions;
1951
2219
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1974,6 +2242,8 @@ declare interface PlanComponent {
1974
2242
  fallbackText?: string;
1975
2243
  }
1976
2244
  declare interface PlanComponent_2 {
2245
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2246
+ chartBinding?: ReportChartBinding_2;
1977
2247
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1978
2248
  code?: CodeOptions_2;
1979
2249
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -2002,6 +2272,8 @@ declare interface PlanComponent_2 {
2002
2272
  fallbackText?: string;
2003
2273
  }
2004
2274
  declare interface PlanComponent_3 {
2275
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2276
+ chartBinding?: ReportChartBinding_3;
2005
2277
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
2006
2278
  code?: CodeOptions_3;
2007
2279
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -2030,7 +2302,7 @@ declare interface PlanComponent_3 {
2030
2302
  fallbackText?: string;
2031
2303
  }
2032
2304
  export declare interface PlanFetcher {
2033
- (input: ReportFetchInput): Promise<RenderPlan>;
2305
+ (input: ReportFetchInput): Promise<RenderPlan_2>;
2034
2306
  getParamDefs?: ReportFetcher["getParamDefs"];
2035
2307
  }
2036
2308
  declare interface PlanGrid {
@@ -2073,7 +2345,7 @@ declare interface PlanPage {
2073
2345
  marginBottomMm?: number;
2074
2346
  marginLeftMm?: number;
2075
2347
  marginRightMm?: number;
2076
- components: PlanComponent[];
2348
+ components: PlanComponent_2[];
2077
2349
  }
2078
2350
  declare interface PlanPage_2 {
2079
2351
  meta?: Record<string, unknown>;
@@ -2085,7 +2357,7 @@ declare interface PlanPage_2 {
2085
2357
  marginBottomMm?: number;
2086
2358
  marginLeftMm?: number;
2087
2359
  marginRightMm?: number;
2088
- components: PlanComponent_2[];
2360
+ components: PlanComponent[];
2089
2361
  }
2090
2362
  /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
2091
2363
  declare interface PlanTableFragment {
@@ -2138,8 +2410,8 @@ declare interface PlanTableFragment_3 {
2138
2410
  /** Bounded concurrency, one stage timeout, and cancellation even for a hanging decoder. */
2139
2411
  export declare function preparePrintResources(doc: Document, options?: ReportPrintOptions, signal?: AbortSignal, base?: string): Promise<void>;
2140
2412
  declare interface PreviewEncoding {
2141
- pdf(plan: RenderPlan, exporter: PdfExporter, warning: (message: string) => void, task?: PreviewEncodingTask): Promise<Uint8Array>;
2142
- xlsx(plan: RenderPlan, options: XlsxRenderOptions, task: PreviewEncodingTask): Promise<{
2413
+ pdf(plan: RenderPlan_2, exporter: PdfExporter, warning: (message: string) => void, task?: PreviewEncodingTask): Promise<Uint8Array>;
2414
+ xlsx(plan: RenderPlan_2, options: XlsxRenderOptions, task: PreviewEncodingTask): Promise<{
2143
2415
  buffer: Uint8Array;
2144
2416
  warnings: string[];
2145
2417
  }>;
@@ -2159,7 +2431,7 @@ declare interface PrintHtmlResult {
2159
2431
  * 批量打印(多单连打):把多份计划合并为一个打印文档——
2160
2432
  * named pages 保证混合纸张正确分页,浏览器只弹一次打印对话框。
2161
2433
  */
2162
- export declare function printPlans(plans: RenderPlan[], options?: {
2434
+ export declare function printPlans(plans: RenderPlan_2[], options?: {
2163
2435
  onProgress?: (done: number, total: number) => void;
2164
2436
  onError?: (message: string) => void;
2165
2437
  signal?: AbortSignal;
@@ -2240,6 +2512,10 @@ export declare interface ReportCalculationMessages {
2240
2512
  calculationErrorOverflow: string;
2241
2513
  calculationErrorPrecision: string;
2242
2514
  }
2515
+ declare interface ReportCandidateValidationOptions extends Pick<ReportDatasetValidationOptions, "rules" | "maxChecks" | "maxIssues"> {
2516
+ /** Warnings are visible and allowed by default; block explicitly when required by business policy. */
2517
+ warningPolicy?: "allow" | "block";
2518
+ }
2243
2519
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
2244
2520
  declare interface ReportCellAddress {
2245
2521
  pageIndex: number;
@@ -2367,6 +2643,265 @@ declare interface ReportCellTableIdentity_2 {
2367
2643
  declare type ReportCellValue = string | number | boolean | null;
2368
2644
  declare type ReportCellValue_2 = string | number | boolean | null;
2369
2645
  declare type ReportCellValueType = NonNullable<GridCell_2["valueType"]>;
2646
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2647
+ declare interface ReportChartBinding {
2648
+ dataset: string;
2649
+ categoryField: string;
2650
+ measures: readonly ReportChartMeasure[];
2651
+ type: ReportChartOptions["type"];
2652
+ sort?: "asc" | "desc";
2653
+ title?: string;
2654
+ showValues?: boolean;
2655
+ maxRows?: number;
2656
+ maxCategories?: number;
2657
+ }
2658
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2659
+ declare interface ReportChartBinding_2 {
2660
+ dataset: string;
2661
+ categoryField: string;
2662
+ measures: readonly ReportChartMeasure_2[];
2663
+ type: ReportChartOptions_2["type"];
2664
+ sort?: "asc" | "desc";
2665
+ title?: string;
2666
+ showValues?: boolean;
2667
+ maxRows?: number;
2668
+ maxCategories?: number;
2669
+ }
2670
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2671
+ declare interface ReportChartBinding_3 {
2672
+ dataset: string;
2673
+ categoryField: string;
2674
+ measures: readonly ReportChartMeasure_3[];
2675
+ type: ReportChartOptions_3["type"];
2676
+ sort?: "asc" | "desc";
2677
+ title?: string;
2678
+ showValues?: boolean;
2679
+ maxRows?: number;
2680
+ maxCategories?: number;
2681
+ }
2682
+ declare interface ReportChartMeasure extends AggregateRequest {
2683
+ label?: string;
2684
+ color?: string;
2685
+ }
2686
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
2687
+ label?: string;
2688
+ color?: string;
2689
+ }
2690
+ declare interface ReportChartMeasure_3 extends AggregateRequest_3 {
2691
+ label?: string;
2692
+ color?: string;
2693
+ }
2694
+ declare interface ReportChartOptions {
2695
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2696
+ categories: readonly string[];
2697
+ series: readonly ReportChartSeries[];
2698
+ leftMm: number;
2699
+ topMm: number;
2700
+ widthMm: number;
2701
+ heightMm: number;
2702
+ title?: string;
2703
+ showValues?: boolean;
2704
+ }
2705
+ declare interface ReportChartOptions_2 {
2706
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2707
+ categories: readonly string[];
2708
+ series: readonly ReportChartSeries_2[];
2709
+ leftMm: number;
2710
+ topMm: number;
2711
+ widthMm: number;
2712
+ heightMm: number;
2713
+ title?: string;
2714
+ showValues?: boolean;
2715
+ }
2716
+ declare interface ReportChartOptions_3 {
2717
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2718
+ categories: readonly string[];
2719
+ series: readonly ReportChartSeries_3[];
2720
+ leftMm: number;
2721
+ topMm: number;
2722
+ widthMm: number;
2723
+ heightMm: number;
2724
+ title?: string;
2725
+ showValues?: boolean;
2726
+ }
2727
+ declare interface ReportChartSeries {
2728
+ name: string;
2729
+ values: readonly (number | null)[];
2730
+ color?: string;
2731
+ }
2732
+ declare interface ReportChartSeries_2 {
2733
+ name: string;
2734
+ values: readonly (number | null)[];
2735
+ color?: string;
2736
+ }
2737
+ declare interface ReportChartSeries_3 {
2738
+ name: string;
2739
+ values: readonly (number | null)[];
2740
+ color?: string;
2741
+ }
2742
+ declare interface ReportComparison {
2743
+ field: string;
2744
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2745
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2746
+ value?: ReportPredicateScalar;
2747
+ right?: ReportPredicateOperand;
2748
+ values?: readonly [
2749
+ ReportPredicateScalar,
2750
+ ReportPredicateScalar
2751
+ ];
2752
+ numeric?: "number" | "decimal";
2753
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2754
+ }
2755
+ declare interface ReportComparison_2 {
2756
+ field: string;
2757
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2758
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2759
+ value?: ReportPredicateScalar_2;
2760
+ right?: ReportPredicateOperand_2;
2761
+ values?: readonly [
2762
+ ReportPredicateScalar_2,
2763
+ ReportPredicateScalar_2
2764
+ ];
2765
+ numeric?: "number" | "decimal";
2766
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2767
+ }
2768
+ declare interface ReportComparison_3 {
2769
+ field: string;
2770
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2771
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2772
+ value?: ReportPredicateScalar_3;
2773
+ right?: ReportPredicateOperand_3;
2774
+ values?: readonly [
2775
+ ReportPredicateScalar_3,
2776
+ ReportPredicateScalar_3
2777
+ ];
2778
+ numeric?: "number" | "decimal";
2779
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2780
+ }
2781
+ declare interface ReportDataComparison {
2782
+ sourceScope?: string;
2783
+ datasetId: string;
2784
+ differences: readonly ReportDataDifference[];
2785
+ counts: {
2786
+ added: number;
2787
+ removed: number;
2788
+ changed: number;
2789
+ unchanged: number;
2790
+ cells: number;
2791
+ };
2792
+ }
2793
+ declare interface ReportDataComparisonField {
2794
+ field: string;
2795
+ label?: string;
2796
+ /** Numeric comparison is explicit; identifiers containing digits stay text. */
2797
+ type?: "value" | "decimal";
2798
+ /** Absolute decimal tolerance, inclusive. No binary floating-point subtraction. */
2799
+ tolerance?: string;
2800
+ /** Fractional ratio digits. changeRatio is (after - before) / before, not a percent. */
2801
+ ratioDigits?: number;
2802
+ zeroDenominator?: "omit" | "zero-if-equal";
2803
+ missing?: "distinct" | "empty-equivalent" | "zero";
2804
+ }
2805
+ export declare const ReportDataComparisonPanel: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, MachReportVuePublicProps, Readonly<__VLS_Props_6> & Readonly<{}>, {}>;
2806
+ export declare interface ReportDataComparisonReviewOptions extends ReportDataReviewSource {
2807
+ fields: readonly ReportDataComparisonField[];
2808
+ maxDifferences?: number;
2809
+ }
2810
+ export declare interface ReportDataComparisonState extends ReportDataReviewState<ReportDataComparison> {
2811
+ locate(item: ReportDataDifference): boolean;
2812
+ }
2813
+ declare interface ReportDataDifference {
2814
+ rowKey: string | number;
2815
+ kind: "added" | "removed" | "changed";
2816
+ field: string;
2817
+ label: string;
2818
+ before: ReportCellValue | undefined;
2819
+ after: ReportCellValue | undefined;
2820
+ /** Exact base-ten difference. Undefined when either input is missing/non-numeric. */
2821
+ delta?: string;
2822
+ changeRatio?: string;
2823
+ ratioUnavailable?: "zero-denominator" | "missing";
2824
+ }
2825
+ declare interface ReportDataLimits {
2826
+ maxRows?: number;
2827
+ maxFields?: number;
2828
+ maxCells?: number;
2829
+ }
2830
+ /** A business record, never a physical report row index. */
2831
+ declare interface ReportDataRecord {
2832
+ rowKey: string | number;
2833
+ values: Readonly<Record<string, ReportCellValue>>;
2834
+ }
2835
+ export declare interface ReportDataReviewMessages {
2836
+ prefillTitle: string;
2837
+ prefillHint: string;
2838
+ prefillCurrent: string;
2839
+ prefillReference: string;
2840
+ prefillLoad: string;
2841
+ prefillApply: string;
2842
+ prefillMatched: string;
2843
+ prefillChanged: string;
2844
+ prefillSkipped: string;
2845
+ prefillConflict: string;
2846
+ prefillUnchanged: string;
2847
+ prefillReadonly: string;
2848
+ prefillOccupied: string;
2849
+ prefillMissingSource: string;
2850
+ prefillMissingTarget: string;
2851
+ prefillAmbiguous: string;
2852
+ prefillInvalid: string;
2853
+ comparisonTitle: string;
2854
+ comparisonHint: string;
2855
+ comparisonLoad: string;
2856
+ comparisonAdded: string;
2857
+ comparisonRemoved: string;
2858
+ comparisonChanged: string;
2859
+ comparisonUnchanged: string;
2860
+ reviewCancel: string;
2861
+ reviewClose: string;
2862
+ reviewBefore: string;
2863
+ reviewAfter: string;
2864
+ reviewField: string;
2865
+ reviewKey: string;
2866
+ reviewDelta: string;
2867
+ reviewRatio: string;
2868
+ reviewLocate: string;
2869
+ reviewEmpty: string;
2870
+ reviewPrevious: string;
2871
+ reviewNext: string;
2872
+ reviewPage: string;
2873
+ }
2874
+ declare interface ReportDataReviewSource extends ReportDataLimits {
2875
+ sourceScope?: string;
2876
+ datasetId: string;
2877
+ label?: string;
2878
+ /** The host chooses history/instances; this package never guesses an endpoint or period. */
2879
+ load(operation: {
2880
+ signal: AbortSignal;
2881
+ }): readonly ReportDataRecord[] | Promise<readonly ReportDataRecord[]>;
2882
+ /** Cancel loaders that do not finish; default 15 seconds, bounded at 120 seconds. */
2883
+ timeoutMs?: number;
2884
+ }
2885
+ declare interface ReportDataReviewState<Result> {
2886
+ busy: Ref<boolean>;
2887
+ result: ShallowRef<Result | null>;
2888
+ error: Ref<string | null>;
2889
+ run(): Promise<void>;
2890
+ cancel(): void;
2891
+ clear(): void;
2892
+ }
2893
+ declare interface ReportDatasetValidationOptions {
2894
+ rules: readonly ReportValidationRule[];
2895
+ rowKey?: string;
2896
+ computed?: readonly ComputedField[];
2897
+ /** Explicit trusted engine, shared with pagination; never read from a serialized template. */
2898
+ formula?: FormulaAdapter;
2899
+ /** Uses the same bounded tree preparation and descendant-leaf summaries as pagination. */
2900
+ tree?: TreeTableOptions;
2901
+ maxChecks?: number;
2902
+ maxIssues?: number;
2903
+ signal?: AbortSignal;
2904
+ }
2370
2905
  declare interface ReportDataTarget {
2371
2906
  datasetId: string;
2372
2907
  field: string;
@@ -2474,6 +3009,10 @@ export declare interface ReportEditingOptions {
2474
3009
  canEdit?(context: ReportCellContext): boolean;
2475
3010
  /** Return an error message or throw to reject the edit. */
2476
3011
  validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
3012
+ /** Same declarative rules can be run in Node via validateReportDataset. Requires a source-backed session. */
3013
+ validation?: ReportCandidateValidationOptions;
3014
+ /** Optional host batch validation sees the fully recalculated candidate plan. */
3015
+ validateBatch?(batch: Readonly<ReportEditBatch>, candidate: RenderPlan, operation: ReportEditOperation): void | readonly ReportValidationIssue[] | Promise<void | readonly ReportValidationIssue[]>;
2477
3016
  /** Called before applying the change. A rejection leaves the current report untouched. */
2478
3017
  save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | ReportEditResult | Promise<void | ReportEditResult>;
2479
3018
  /** Must commit all edits in one server transaction. Required for multi-cell persisted edits. */
@@ -2534,11 +3073,13 @@ declare type ReportExpression = {
2534
3073
  } | {
2535
3074
  value: string | number | boolean | null;
2536
3075
  } | {
2537
- aggregate: AggregateOperation;
3076
+ aggregate: AggregateOperation_2;
2538
3077
  field?: string;
2539
3078
  weightField?: string;
2540
3079
  } | {
2541
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3080
+ op: ReportExpressionOperation;
3081
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3082
+ condition?: ReportPredicate;
2542
3083
  args: readonly ReportExpression[];
2543
3084
  };
2544
3085
  declare type ReportExpression_2 = {
@@ -2546,11 +3087,13 @@ declare type ReportExpression_2 = {
2546
3087
  } | {
2547
3088
  value: string | number | boolean | null;
2548
3089
  } | {
2549
- aggregate: AggregateOperation_2;
3090
+ aggregate: AggregateOperation;
2550
3091
  field?: string;
2551
3092
  weightField?: string;
2552
3093
  } | {
2553
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3094
+ op: ReportExpressionOperation_2;
3095
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3096
+ condition?: ReportPredicate_2;
2554
3097
  args: readonly ReportExpression_2[];
2555
3098
  };
2556
3099
  declare type ReportExpression_3 = {
@@ -2562,12 +3105,17 @@ declare type ReportExpression_3 = {
2562
3105
  field?: string;
2563
3106
  weightField?: string;
2564
3107
  } | {
2565
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3108
+ op: ReportExpressionOperation_3;
3109
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3110
+ condition?: ReportPredicate_3;
2566
3111
  args: readonly ReportExpression_3[];
2567
3112
  };
3113
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3114
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3115
+ declare type ReportExpressionOperation_3 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
2568
3116
  /** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
2569
3117
  declare interface ReportFetcher {
2570
- (input: ReportFetchInput): Promise<RenderPlan>;
3118
+ (input: ReportFetchInput): Promise<RenderPlan_2>;
2571
3119
  getParamDefs?: (reportIds: string[]) => ReportParamDef[];
2572
3120
  }
2573
3121
  declare interface ReportFetchInput extends ReportTaskMonitoring {
@@ -2579,7 +3127,13 @@ declare interface ReportFetchInput extends ReportTaskMonitoring {
2579
3127
  /** Index scopes diagnostics when reports share datasets or a report ID is repeated. */
2580
3128
  onQueryResult?: (reportId: string, result: ReportQueryResult, reportIndex?: number) => void;
2581
3129
  }
2582
- declare interface ReportFieldContract {
3130
+ declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
3131
+ declare interface ReportFieldCalculation {
3132
+ /** Business-owned explanation, never executable JavaScript or an inferred business formula. */
3133
+ description: string;
3134
+ dependsOn: readonly string[];
3135
+ }
3136
+ declare interface ReportFieldContract extends ReportFieldSemantics {
2583
3137
  field: string;
2584
3138
  label?: string;
2585
3139
  type: "text" | "number" | "boolean" | "date" | "decimal";
@@ -2593,6 +3147,16 @@ declare interface ReportFieldContract {
2593
3147
  semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
2594
3148
  unit?: string;
2595
3149
  }
3150
+ declare interface ReportFieldSemantics {
3151
+ description?: string;
3152
+ /** Explicit meaning of null/missing; does not convert blanks into zero. */
3153
+ missingMeaning?: string;
3154
+ /** Recommended aggregation; none marks non-additive measures such as ratios. No aggregation runs implicitly. */
3155
+ aggregation?: ReportFieldAggregation;
3156
+ /** Shared presentation only; raw values and calculation precision remain unchanged. */
3157
+ format?: ColumnFormat;
3158
+ calculation?: ReportFieldCalculation;
3159
+ }
2596
3160
  export declare interface ReportFieldTarget {
2597
3161
  field: string;
2598
3162
  datasetId?: string;
@@ -2662,12 +3226,9 @@ declare interface ReportParamDef {
2662
3226
  field: string;
2663
3227
  /** 显示名(缺省用 field) */
2664
3228
  label?: string;
2665
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3229
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2666
3230
  /** select 选项 */
2667
- options?: Array<{
2668
- label: string;
2669
- value: string;
2670
- }>;
3231
+ options?: ReportParamTreeOption[];
2671
3232
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2672
3233
  optionsSource?: string;
2673
3234
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2680,6 +3241,9 @@ declare interface ReportParamDef {
2680
3241
  max?: number | string;
2681
3242
  minLength?: number;
2682
3243
  maxLength?: number;
3244
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3245
+ minItems?: number;
3246
+ maxItems?: number;
2683
3247
  }
2684
3248
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2685
3249
  declare interface ReportParamDef_2 {
@@ -2687,12 +3251,9 @@ declare interface ReportParamDef_2 {
2687
3251
  field: string;
2688
3252
  /** 显示名(缺省用 field) */
2689
3253
  label?: string;
2690
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3254
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2691
3255
  /** select 选项 */
2692
- options?: Array<{
2693
- label: string;
2694
- value: string;
2695
- }>;
3256
+ options?: ReportParamTreeOption_2[];
2696
3257
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2697
3258
  optionsSource?: string;
2698
3259
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2705,6 +3266,9 @@ declare interface ReportParamDef_2 {
2705
3266
  max?: number | string;
2706
3267
  minLength?: number;
2707
3268
  maxLength?: number;
3269
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3270
+ minItems?: number;
3271
+ maxItems?: number;
2708
3272
  }
2709
3273
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2710
3274
  declare interface ReportParamDef_3 {
@@ -2712,12 +3276,9 @@ declare interface ReportParamDef_3 {
2712
3276
  field: string;
2713
3277
  /** 显示名(缺省用 field) */
2714
3278
  label?: string;
2715
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3279
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2716
3280
  /** select 选项 */
2717
- options?: Array<{
2718
- label: string;
2719
- value: string;
2720
- }>;
3281
+ options?: ReportParamTreeOption_3[];
2721
3282
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2722
3283
  optionsSource?: string;
2723
3284
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2730,6 +3291,9 @@ declare interface ReportParamDef_3 {
2730
3291
  max?: number | string;
2731
3292
  minLength?: number;
2732
3293
  maxLength?: number;
3294
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3295
+ minItems?: number;
3296
+ maxItems?: number;
2733
3297
  }
2734
3298
  declare interface ReportParamIssue {
2735
3299
  code: ReportParamIssueCode;
@@ -2737,10 +3301,11 @@ declare interface ReportParamIssue {
2737
3301
  field: string;
2738
3302
  message: string;
2739
3303
  }
2740
- declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
3304
+ declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength" | "minItems" | "maxItems";
2741
3305
  export declare interface ReportParamOption {
2742
3306
  readonly label: string;
2743
3307
  readonly value: string;
3308
+ readonly children?: readonly ReportParamOption[];
2744
3309
  }
2745
3310
  export declare interface ReportParamOptionsInput {
2746
3311
  readonly source: string;
@@ -2760,6 +3325,8 @@ export declare interface ReportParamOptionsMessages {
2760
3325
  paramOptionsMissingLoader?: string;
2761
3326
  paramOptionsDependencies?: string;
2762
3327
  paramOptionsClear?: string;
3328
+ paramNumberRangeStart?: string;
3329
+ paramNumberRangeEnd?: string;
2763
3330
  }
2764
3331
  export declare const ReportParamPanel: DefineComponent<__VLS_Props_3, {
2765
3332
  focusInvalid: typeof focusInvalid;
@@ -2772,12 +3339,30 @@ export declare const ReportParamPanel: DefineComponent<__VLS_Props_3, {
2772
3339
  onQuery?: (() => any) | undefined;
2773
3340
  "onUpdate:modelValue"?: ((value: Record<string, string>) => any) | undefined;
2774
3341
  }>, {
2775
- disabled: boolean;
2776
3342
  issues: readonly ReportParamIssue[];
3343
+ disabled: boolean;
2777
3344
  loadOptions: ReportParamOptionsLoader;
2778
3345
  showActions: boolean;
2779
3346
  showTitle: boolean;
2780
3347
  }>;
3348
+ /** Cascader values are unique within each sibling list. */
3349
+ declare interface ReportParamTreeOption {
3350
+ label: string;
3351
+ value: string;
3352
+ children?: ReportParamTreeOption[];
3353
+ }
3354
+ /** Cascader values are unique within each sibling list. */
3355
+ declare interface ReportParamTreeOption_2 {
3356
+ label: string;
3357
+ value: string;
3358
+ children?: ReportParamTreeOption_2[];
3359
+ }
3360
+ /** Cascader values are unique within each sibling list. */
3361
+ declare interface ReportParamTreeOption_3 {
3362
+ label: string;
3363
+ value: string;
3364
+ children?: ReportParamTreeOption_3[];
3365
+ }
2781
3366
  /** Licensed local font bytes; never downloaded implicitly by the runtime. */
2782
3367
  declare interface ReportPdfFontOptions {
2783
3368
  customFontBytes?: Uint8Array | ArrayBuffer;
@@ -2789,6 +3374,45 @@ declare interface ReportPdfFontOptions {
2789
3374
  boldItalic?: Uint8Array | ArrayBuffer;
2790
3375
  };
2791
3376
  }
3377
+ declare type ReportPredicate = ReportComparison | {
3378
+ all: readonly ReportPredicate[];
3379
+ } | {
3380
+ any: readonly ReportPredicate[];
3381
+ } | {
3382
+ not: ReportPredicate;
3383
+ };
3384
+ declare type ReportPredicate_2 = ReportComparison_2 | {
3385
+ all: readonly ReportPredicate_2[];
3386
+ } | {
3387
+ any: readonly ReportPredicate_2[];
3388
+ } | {
3389
+ not: ReportPredicate_2;
3390
+ };
3391
+ declare type ReportPredicate_3 = ReportComparison_3 | {
3392
+ all: readonly ReportPredicate_3[];
3393
+ } | {
3394
+ any: readonly ReportPredicate_3[];
3395
+ } | {
3396
+ not: ReportPredicate_3;
3397
+ };
3398
+ declare type ReportPredicateOperand = {
3399
+ field: string;
3400
+ } | {
3401
+ value: ReportPredicateScalar;
3402
+ };
3403
+ declare type ReportPredicateOperand_2 = {
3404
+ field: string;
3405
+ } | {
3406
+ value: ReportPredicateScalar_2;
3407
+ };
3408
+ declare type ReportPredicateOperand_3 = {
3409
+ field: string;
3410
+ } | {
3411
+ value: ReportPredicateScalar_3;
3412
+ };
3413
+ declare type ReportPredicateScalar = string | number | boolean | null;
3414
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
3415
+ declare type ReportPredicateScalar_3 = string | number | boolean | null;
2792
3416
  export declare interface ReportPreferencesAdapter {
2793
3417
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2794
3418
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2799,6 +3423,41 @@ export declare interface ReportPreferencesOptions {
2799
3423
  key: string;
2800
3424
  adapter: ReportPreferencesAdapter;
2801
3425
  }
3426
+ declare interface ReportPrefillField {
3427
+ field: string;
3428
+ sourceField?: string;
3429
+ label?: string;
3430
+ }
3431
+ declare interface ReportPrefillItem {
3432
+ source: Readonly<ReportCellSource>;
3433
+ label: string;
3434
+ status: ReportPrefillStatus;
3435
+ reason?: ReportPrefillReason;
3436
+ before?: ReportCellValue;
3437
+ after?: ReportCellValue;
3438
+ }
3439
+ export declare const ReportPrefillPanel: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, MachReportVuePublicProps, Readonly<__VLS_Props_5> & Readonly<{}>, {}>;
3440
+ declare interface ReportPrefillPreview {
3441
+ sourceScope?: string;
3442
+ datasetId: string;
3443
+ items: readonly ReportPrefillItem[];
3444
+ counts: Readonly<Record<ReportPrefillStatus, number>>;
3445
+ /** Optimistic source tokens and previous values are retained for an atomic edit. */
3446
+ edits: readonly ReportCellEdit[];
3447
+ }
3448
+ declare type ReportPrefillReason = "unchanged" | "readonly" | "occupied" | "missing-source" | "missing-target" | "ambiguous" | "invalid";
3449
+ export declare interface ReportPrefillReviewOptions extends ReportDataReviewSource {
3450
+ fields: readonly ReportPrefillField[];
3451
+ mode?: "empty" | "replace";
3452
+ maxChanges?: number;
3453
+ }
3454
+ export declare interface ReportPrefillState extends ReportDataReviewState<ReportPrefillPreview> {
3455
+ applying: Ref<boolean>;
3456
+ blockedReason: ComputedRef<string | undefined>;
3457
+ canApply: ComputedRef<boolean>;
3458
+ apply(): Promise<boolean>;
3459
+ }
3460
+ declare type ReportPrefillStatus = "matched" | "changed" | "skipped" | "conflict";
2802
3461
  export declare const ReportPreview: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
2803
3462
  export declare interface ReportPreviewDataTarget extends ReportDataTarget_2 {
2804
3463
  /** Added by the query adapter; isolates identical dataset/row/field identities across reports. */
@@ -2891,6 +3550,8 @@ declare interface ReportRuntimeBudget {
2891
3550
  maxRows?: number;
2892
3551
  maxPages?: number;
2893
3552
  maxCells?: number;
3553
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
3554
+ maxChartComponents?: number;
2894
3555
  maxOutputBytes?: number;
2895
3556
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
2896
3557
  maxPreparedBytes?: number;
@@ -3005,6 +3666,34 @@ declare interface ReportTemplateRepeat_3 {
3005
3666
  }
3006
3667
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
3007
3668
  export declare const ReportToolbar: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
3669
+ declare interface ReportValidationIssue {
3670
+ ruleId: string;
3671
+ rowKey?: string | number;
3672
+ rowIndex?: number;
3673
+ field?: string;
3674
+ dataset?: string;
3675
+ sourceScope?: string;
3676
+ severity: "error" | "warning";
3677
+ message: string;
3678
+ }
3679
+ export declare const ReportValidationPanel: DefineComponent<__VLS_Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3680
+ locate: (issue: ReportValidationIssue) => any;
3681
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props_4> & Readonly<{
3682
+ onLocate?: ((issue: ReportValidationIssue) => any) | undefined;
3683
+ }>, {}>;
3684
+ declare interface ReportValidationRule {
3685
+ id: string;
3686
+ /** Optional target; omitted applies to each candidate dataset. */
3687
+ dataset?: string;
3688
+ assert: ReportPredicate;
3689
+ when?: ReportPredicate;
3690
+ field?: string;
3691
+ severity?: "error" | "warning";
3692
+ message: string;
3693
+ scope?: "row" | "dataset";
3694
+ /** Dataset-scope assertions read this explicit summary row, never an arbitrary detail row. */
3695
+ aggregates?: readonly AggregateDefinition[];
3696
+ }
3008
3697
  /** Optional business explanations never replace raw data or schema validation. */
3009
3698
  declare type ReportValueState = "missing-source" | "not-applicable" | "not-calculable";
3010
3699
  /** Optional business explanations never replace raw data or schema validation. */
@@ -3012,10 +3701,14 @@ declare type ReportValueState_2 = "missing-source" | "not-applicable" | "not-cal
3012
3701
  /** 新消息保持可选,旧的完整文案对象也能获得新增能力的默认文案。 */
3013
3702
  export declare function resolveCalculationMessages(messages: Partial<ReportCalculationMessages>): ReportCalculationMessages;
3014
3703
  export declare function resolveConfig(config: MachReportConfig | null | undefined, presetName?: string): ResolvedConfig;
3704
+ /** Optional message additions preserve complete message objects supplied by older consumers. */
3705
+ export declare function resolveDataReviewMessages(messages: Partial<ReportDataReviewMessages>): ReportDataReviewMessages;
3015
3706
  export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showSettings" | "showParams" | "gapPx">> & {
3016
3707
  exportExecution?: ReportExportExecutionOptions;
3017
3708
  drill?: ReportDrillOptions;
3018
3709
  loadParamOptions?: ReportParamOptionsLoader;
3710
+ prefill?: ReportPrefillReviewOptions | false;
3711
+ dataComparison?: ReportDataComparisonReviewOptions | false;
3019
3712
  pdfFontUrl: string;
3020
3713
  theme: MachReportTheme;
3021
3714
  messages: MachReportMessages;
@@ -3079,37 +3772,19 @@ export declare const SILENT_LOGGER: MachReportLogger;
3079
3772
  export declare function snapshotPrintOptions(options?: ReportPrintOptions): ReportPrintOptions;
3080
3773
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3081
3774
  declare interface StyleRule {
3082
- when: {
3083
- field: string;
3084
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3085
- value: number | string;
3086
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3087
- numeric?: "number" | "decimal";
3088
- };
3775
+ when: ReportPredicate;
3089
3776
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3090
3777
  style: Record<string, unknown>;
3091
3778
  }
3092
3779
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3093
3780
  declare interface StyleRule_2 {
3094
- when: {
3095
- field: string;
3096
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3097
- value: number | string;
3098
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3099
- numeric?: "number" | "decimal";
3100
- };
3781
+ when: ReportPredicate_2;
3101
3782
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3102
3783
  style: Record<string, unknown>;
3103
3784
  }
3104
3785
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3105
3786
  declare interface StyleRule_3 {
3106
- when: {
3107
- field: string;
3108
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3109
- value: number | string;
3110
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3111
- numeric?: "number" | "decimal";
3112
- };
3787
+ when: ReportPredicate_3;
3113
3788
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3114
3789
  style: Record<string, unknown>;
3115
3790
  }
@@ -3245,7 +3920,7 @@ export declare function useMachReport(): MachReportHandle;
3245
3920
  /** 组件内部读取当前生效配置层(未提供时返回 null → 走内置缺省) */
3246
3921
  export declare function useMachReportConfig(): ConfigRef;
3247
3922
  /** 页级虚拟化;页几何按计划引用缓存,滚动仅更新坐标,不遍历整个计划。 */
3248
- export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<number>, options?: {
3923
+ export declare function usePageWindow(plan: Ref<RenderPlan_2 | null>, zoom: Ref<number>, options?: {
3249
3924
  pxPerMm?: number;
3250
3925
  gapPx?: number | Ref<number>;
3251
3926
  overscan?: number | Ref<number>;
@@ -3256,7 +3931,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
3256
3931
  }>;
3257
3932
  windowRange: ComputedRef<PageWindow>;
3258
3933
  visiblePages: ComputedRef<{
3259
- page: PlanPage;
3934
+ page: PlanPage_2;
3260
3935
  index: number;
3261
3936
  }[]>;
3262
3937
  makeScrollHandler: (currentPage: Ref<number>, pageCount: Ref<number>) => (vp: HTMLElement) => void;
@@ -3265,7 +3940,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
3265
3940
  pageOffsetPx: (index: number) => number;
3266
3941
  destroy: () => void;
3267
3942
  };
3268
- export declare function usePrintExport(plan: Ref<RenderPlan | null>, hooks: {
3943
+ export declare function usePrintExport(plan: Ref<RenderPlan_2 | null>, hooks: {
3269
3944
  /** 按导出开始时的配置快照处理,避免输出过程中跟随路由配置变化。 */
3270
3945
  getXlsxOptions?: () => XlsxRenderOptions;
3271
3946
  getPrintOptions?: () => ReportPrintOptions;
@@ -3277,6 +3952,8 @@ export declare function usePrintExport(plan: Ref<RenderPlan | null>, hooks: {
3277
3952
  encoding?: PreviewEncoding;
3278
3953
  onError: (message: string, code?: string) => void;
3279
3954
  onWarning?: (message: string) => void;
3955
+ /** Informational output semantics, separate from fidelity failures. */
3956
+ onNote?: (message: string) => void;
3280
3957
  onBusy?: (format: string | null) => void;
3281
3958
  onPrinting?: (printing: boolean) => void;
3282
3959
  onTask?: (task: Readonly<ReportPreviewTask>) => void;
@@ -3335,13 +4012,15 @@ declare type XlsxImageOptions = ImageMediaOptions_2;
3335
4012
  * 目标是"财务能直接用的对账表"而非复刻版面)
3336
4013
  * - 原生 richText 保留基础字形;未支持组件、段落专有排版与单元格嵌套组件计入 diagnostics / warnings
3337
4014
  */
3338
- declare interface XlsxRenderOptions extends OutputDiagnosticOptions_2, XlsxImageOptions {
4015
+ declare interface XlsxRenderOptions extends AssetRenderOptions_2, XlsxImageOptions {
3339
4016
  /** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
3340
4017
  sheetName?: (sheetIndex: number) => string;
3341
4018
  /** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
3342
4019
  sheetMode?: "auto" | "pages" | "continuous";
3343
4020
  /** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
3344
4021
  valueMode?: "text" | "raw";
4022
+ /** Static data-bar drawing budget; fail explicitly rather than omitting bars. Default 10,000. */
4023
+ maxDataBars?: number;
3345
4024
  /** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
3346
4025
  paperSize?: "auto" | "a3" | "a4" | "a5";
3347
4026
  }