@agile-team/mach-report 2.4.1 → 2.6.1

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 (84) hide show
  1. package/README.md +119 -13
  2. package/dist/ReportPreview-Dk-28QAi.js +2946 -0
  3. package/dist/ReportPreview-FSvcBLjH.cjs +6 -0
  4. package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
  5. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  6. package/dist/analytics.cjs +1 -0
  7. package/dist/analytics.d.cts +276 -0
  8. package/dist/analytics.d.ts +276 -0
  9. package/dist/analytics.js +223 -0
  10. package/dist/assets-66UBlhES.cjs +1 -0
  11. package/dist/assets-NVA_sftu.js +163 -0
  12. package/dist/capabilities-CNjIirfo.js +36 -0
  13. package/dist/capabilities-D4xeVYSR.cjs +1 -0
  14. package/dist/designer.cjs +1 -0
  15. package/dist/designer.d.cts +753 -0
  16. package/dist/designer.d.ts +753 -0
  17. package/dist/designer.js +372 -0
  18. package/dist/grid-geometry-BNptEcMm.js +65 -0
  19. package/dist/grid-geometry-CZ_cYB6O.cjs +1 -0
  20. package/dist/index.cjs +8 -5
  21. package/dist/index.d.cts +413 -8
  22. package/dist/index.d.ts +413 -8
  23. package/dist/index.js +1016 -1501
  24. package/dist/param-validation-BWNjLcN0.js +116 -0
  25. package/dist/param-validation-CiTxFeZ8.cjs +1 -0
  26. package/dist/pdf.cjs +48 -48
  27. package/dist/pdf.d.cts +111 -1
  28. package/dist/pdf.d.ts +111 -1
  29. package/dist/pdf.js +3931 -3868
  30. package/dist/{plugin-DwKr8oF6.cjs → plugin-BqBkn_kI.cjs} +1 -1
  31. package/dist/{plugin-CKnSVuVe.js → plugin-Ds10VnQO.js} +2 -2
  32. package/dist/render-plan-CckPEQyf.cjs +1 -0
  33. package/dist/{render-plan-CXBWRog4.js → render-plan-uzZYYSy1.js} +11 -10
  34. package/dist/report-params-B_VCihAh.js +12 -0
  35. package/dist/report-params-CjWrjPl6.cjs +1 -0
  36. package/dist/report-source-B9bENO0F.js +750 -0
  37. package/dist/report-source-BbNkkBDy.cjs +1 -0
  38. package/dist/server/node.d.cts +297 -0
  39. package/dist/server/node.d.ts +297 -0
  40. package/dist/server-node.cjs +1 -0
  41. package/dist/server-node.js +270 -0
  42. package/dist/server.cjs +1 -0
  43. package/dist/server.d.cts +643 -0
  44. package/dist/server.d.ts +643 -0
  45. package/dist/server.js +237 -0
  46. package/dist/style-CpwiOPyB.cjs +1 -0
  47. package/dist/style-Dv5o_x6b.js +67 -0
  48. package/dist/style.css +1 -1
  49. package/dist/template-registry-DWExx0gU.cjs +1 -0
  50. package/dist/template-registry-NpOakidD.js +354 -0
  51. package/dist/textwrap-CnGsEum6.cjs +4 -0
  52. package/dist/textwrap-DOl04hCQ.js +110 -0
  53. package/dist/validate-DfHPD8wX.cjs +1 -0
  54. package/dist/validate-S6CgIm5d.js +148 -0
  55. package/dist/vue/async.d.cts +694 -54
  56. package/dist/vue/async.d.ts +694 -54
  57. package/dist/vue/index.d.cts +1212 -111
  58. package/dist/vue/index.d.ts +1212 -111
  59. package/dist/vue-async.cjs +1 -1
  60. package/dist/vue-async.js +3 -3
  61. package/dist/vue.cjs +1 -1
  62. package/dist/vue.js +167 -80
  63. package/dist/worker.cjs +1 -0
  64. package/dist/worker.d.cts +302 -0
  65. package/dist/worker.d.ts +302 -0
  66. package/dist/worker.js +133 -0
  67. package/dist/xlsx/node.d.cts +47 -0
  68. package/dist/xlsx/node.d.ts +47 -0
  69. package/dist/xlsx-node.cjs +221 -0
  70. package/dist/xlsx-node.js +36409 -0
  71. package/dist/xlsx.cjs +20 -20
  72. package/dist/xlsx.d.cts +78 -1
  73. package/dist/xlsx.d.ts +78 -1
  74. package/dist/xlsx.js +5974 -5831
  75. package/package.json +62 -2
  76. package/dist/ReportPreview-BVTpw9Tb.cjs +0 -6
  77. package/dist/ReportPreview-XF8iSUG1.js +0 -1910
  78. package/dist/grid-geometry-BNIvw52m.cjs +0 -1
  79. package/dist/grid-geometry-C8hGoe9o.js +0 -130
  80. package/dist/render-plan-CCTL4F9v.cjs +0 -1
  81. package/dist/report-params-B3Fia6JO.js +0 -10
  82. package/dist/report-params-D1gZ1DME.cjs +0 -1
  83. package/dist/textwrap-nH0UYU6D.js +0 -108
  84. package/dist/textwrap-oD-t4b4B.cjs +0 -4
package/dist/xlsx.d.cts CHANGED
@@ -53,6 +53,9 @@ declare type AutoFilter = string | {
53
53
  to: string | { row: number; column: number };
54
54
  };
55
55
 
56
+ /** 将明确声明的 Excel 表区域变成可反复取数的业务模板;不保留样例明细值,不猜接口。 */
57
+ export declare function bindExcelTemplate(imported: ExcelImportResult, bindings: readonly ExcelTableBinding[]): ExcelTemplateBindingResult;
58
+
56
59
  declare interface Border {
57
60
  style: BorderStyle;
58
61
  color: Partial<Color>;
@@ -563,6 +566,10 @@ declare enum ErrorValue {
563
566
  Num = '#NUM!',
564
567
  }
565
568
 
569
+ export declare type ExcelBindingColumn = string | (Omit<ListColumn, "widthMm" | "header"> & {
570
+ header?: string;
571
+ });
572
+
566
573
  export declare interface ExcelImportedSheet {
567
574
  name: string;
568
575
  /** Original, one-based workbook position. */
@@ -738,6 +745,26 @@ declare namespace ExcelJS {
738
745
  }
739
746
  }
740
747
 
748
+ export declare interface ExcelTableBinding {
749
+ sheet: string;
750
+ dataset?: string;
751
+ /** 完整列宽的表头范围,允许多行合并。 */
752
+ header: string;
753
+ /** 将整个样例明细区域替换为动态数据;缺省为表头下方全部行。 */
754
+ detail?: string;
755
+ columns: readonly ExcelBindingColumn[];
756
+ rowKey?: string;
757
+ revisionField?: string;
758
+ sourceTokenField?: string;
759
+ groupBy?: ListComponent["groupBy"];
760
+ grandTotal?: ListComponent["grandTotal"];
761
+ }
762
+
763
+ export declare interface ExcelTemplateBindingResult {
764
+ template: ReportTemplate;
765
+ warnings: string[];
766
+ }
767
+
741
768
  declare interface ExpressionRuleType extends ConditionalFormattingBaseRule {
742
769
  type: 'expression';
743
770
  formulae?: any[];
@@ -866,6 +893,7 @@ declare interface GridCell {
866
893
  valueType?: "text" | "number" | "boolean";
867
894
  /** 单元格级编辑控制;预览仍需显式开启 editing。 */
868
895
  editable?: boolean;
896
+ source?: ReportCellSource;
869
897
  /** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
870
898
  formula?: string;
871
899
  children?: PlanComponent[];
@@ -998,6 +1026,8 @@ declare interface ListColumn {
998
1026
  editable?: boolean;
999
1027
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
1000
1028
  valueType?: GridCell["valueType"];
1029
+ /** 字段语义用于 auto 对齐;明确声明编号,避免把数字编号当成度量。 */
1030
+ semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
1001
1031
  }
1002
1032
 
1003
1033
  declare interface ListComponent {
@@ -1011,6 +1041,10 @@ declare interface ListComponent {
1011
1041
  topMm: number;
1012
1042
  widthMm: number;
1013
1043
  dataset: string;
1044
+ /** 数据集中稳定业务主键的字段名;省略时编辑仅有计划内坐标。 */
1045
+ rowKey?: string;
1046
+ revisionField?: string;
1047
+ sourceTokenField?: string;
1014
1048
  columns: ListColumn[];
1015
1049
  fontSizePt?: number;
1016
1050
  headerBold?: boolean;
@@ -1023,6 +1057,8 @@ declare interface ListComponent {
1023
1057
  /** 表头默认对齐,列配置可覆盖。 */
1024
1058
  headerAlign?: ComponentStyle["align"];
1025
1059
  headerStyle?: ComponentStyle;
1060
+ /** 可选多行合并表头;列宽按列表物理列对齐,供 Excel 业务模板复用。 */
1061
+ headerGrid?: PlanGrid;
1026
1062
  border?: boolean;
1027
1063
  /** 分组小计(组头/组尾小计/组头防孤行) */
1028
1064
  groupBy?: ListGroupBy;
@@ -1075,6 +1111,26 @@ declare interface Media {
1075
1111
  buffer: Buffer_2;
1076
1112
  }
1077
1113
 
1114
+ declare interface OutputDiagnostic {
1115
+ code: "missing-image" | "unsupported-component" | "unsupported-image-format" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
1116
+ severity: "warning";
1117
+ format: OutputFormat;
1118
+ pageIndex: number;
1119
+ componentIndex: number;
1120
+ /** Nested grid child location as repeating [rowIndex, columnIndex, childIndex] triples. */
1121
+ componentPath?: readonly number[];
1122
+ kind: string;
1123
+ nid?: string;
1124
+ message: string;
1125
+ }
1126
+
1127
+ declare interface OutputDiagnosticOptions {
1128
+ /** Structured fidelity diagnostics; rendering never silently invents missing content. */
1129
+ onDiagnostic?: (diagnostic: OutputDiagnostic) => void;
1130
+ }
1131
+
1132
+ declare type OutputFormat = "dom" | "canvas" | "pdf" | "xlsx";
1133
+
1078
1134
  declare interface PageSetup {
1079
1135
  /**
1080
1136
  * Whitespace on the borders of the page. Units are inches.
@@ -1252,6 +1308,8 @@ declare interface PlanComponent {
1252
1308
  lines?: string[];
1253
1309
  richParagraphs?: RichParagraph[];
1254
1310
  imageData?: string;
1311
+ /** 明确指定线段方向;省略保持历史水平线行为。 */
1312
+ lineDirection?: "down" | "up";
1255
1313
  grid?: PlanGrid;
1256
1314
  table?: PlanTableFragment;
1257
1315
  style?: ComponentStyle;
@@ -1293,6 +1351,10 @@ declare interface PlanTableFragment {
1293
1351
  columnKeys: string[];
1294
1352
  layout?: "page" | "wide";
1295
1353
  title?: string;
1354
+ /** 只有宿主声明稳定 rowKey 时生成,不能用显示顺序替代业务主键。 */
1355
+ source?: Omit<ReportCellSource, "field" | "rowKey"> & {
1356
+ rowKey?: string | number;
1357
+ };
1296
1358
  }
1297
1359
 
1298
1360
  declare interface Protection {
@@ -1376,6 +1438,15 @@ declare interface RenderPlan {
1376
1438
 
1377
1439
  export declare function renderPlanToXlsx(plan: RenderPlan, options?: XlsxRenderOptions): Promise<XlsxRenderResult>;
1378
1440
 
1441
+ /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
1442
+ declare interface ReportCellSource {
1443
+ datasetId: string;
1444
+ rowKey: string | number;
1445
+ field: string;
1446
+ revision?: string | number;
1447
+ sourceToken?: string;
1448
+ }
1449
+
1379
1450
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
1380
1451
  declare interface ReportParamDef {
1381
1452
  /** 参数名(传入 params,与数据集 SQL #{field} 绑定对应) */
@@ -1391,6 +1462,11 @@ declare interface ReportParamDef {
1391
1462
  defaultValue?: string;
1392
1463
  required?: boolean;
1393
1464
  placeholder?: string;
1465
+ /** 数字上下界;date 参数使用 YYYY-MM-DD 字符串(含边界)。 */
1466
+ min?: number | string;
1467
+ max?: number | string;
1468
+ minLength?: number;
1469
+ maxLength?: number;
1394
1470
  }
1395
1471
 
1396
1472
  declare interface ReportTemplate {
@@ -2502,7 +2578,7 @@ declare interface XlsxReadOptions {
2502
2578
  * 目标是"财务能直接用的对账表"而非复刻版面)
2503
2579
  * - 未支持组件、富文本专有内容与单元格嵌套组件跳过并计入 warnings
2504
2580
  */
2505
- export declare interface XlsxRenderOptions {
2581
+ export declare interface XlsxRenderOptions extends OutputDiagnosticOptions {
2506
2582
  /** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
2507
2583
  sheetName?: (sheetIndex: number) => string;
2508
2584
  /** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
@@ -2517,6 +2593,7 @@ export declare interface XlsxRenderResult {
2517
2593
  workbook: ExcelJS.Workbook;
2518
2594
  buffer: ExcelJS.Buffer;
2519
2595
  warnings: string[];
2596
+ diagnostics?: OutputDiagnostic[];
2520
2597
  }
2521
2598
 
2522
2599
  declare interface XlsxWriteOptions extends stream.xlsx.WorkbookWriterOptions {
package/dist/xlsx.d.ts CHANGED
@@ -53,6 +53,9 @@ declare type AutoFilter = string | {
53
53
  to: string | { row: number; column: number };
54
54
  };
55
55
 
56
+ /** 将明确声明的 Excel 表区域变成可反复取数的业务模板;不保留样例明细值,不猜接口。 */
57
+ export declare function bindExcelTemplate(imported: ExcelImportResult, bindings: readonly ExcelTableBinding[]): ExcelTemplateBindingResult;
58
+
56
59
  declare interface Border {
57
60
  style: BorderStyle;
58
61
  color: Partial<Color>;
@@ -563,6 +566,10 @@ declare enum ErrorValue {
563
566
  Num = '#NUM!',
564
567
  }
565
568
 
569
+ export declare type ExcelBindingColumn = string | (Omit<ListColumn, "widthMm" | "header"> & {
570
+ header?: string;
571
+ });
572
+
566
573
  export declare interface ExcelImportedSheet {
567
574
  name: string;
568
575
  /** Original, one-based workbook position. */
@@ -738,6 +745,26 @@ declare namespace ExcelJS {
738
745
  }
739
746
  }
740
747
 
748
+ export declare interface ExcelTableBinding {
749
+ sheet: string;
750
+ dataset?: string;
751
+ /** 完整列宽的表头范围,允许多行合并。 */
752
+ header: string;
753
+ /** 将整个样例明细区域替换为动态数据;缺省为表头下方全部行。 */
754
+ detail?: string;
755
+ columns: readonly ExcelBindingColumn[];
756
+ rowKey?: string;
757
+ revisionField?: string;
758
+ sourceTokenField?: string;
759
+ groupBy?: ListComponent["groupBy"];
760
+ grandTotal?: ListComponent["grandTotal"];
761
+ }
762
+
763
+ export declare interface ExcelTemplateBindingResult {
764
+ template: ReportTemplate;
765
+ warnings: string[];
766
+ }
767
+
741
768
  declare interface ExpressionRuleType extends ConditionalFormattingBaseRule {
742
769
  type: 'expression';
743
770
  formulae?: any[];
@@ -866,6 +893,7 @@ declare interface GridCell {
866
893
  valueType?: "text" | "number" | "boolean";
867
894
  /** 单元格级编辑控制;预览仍需显式开启 editing。 */
868
895
  editable?: boolean;
896
+ source?: ReportCellSource;
869
897
  /** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
870
898
  formula?: string;
871
899
  children?: PlanComponent[];
@@ -998,6 +1026,8 @@ declare interface ListColumn {
998
1026
  editable?: boolean;
999
1027
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
1000
1028
  valueType?: GridCell["valueType"];
1029
+ /** 字段语义用于 auto 对齐;明确声明编号,避免把数字编号当成度量。 */
1030
+ semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
1001
1031
  }
1002
1032
 
1003
1033
  declare interface ListComponent {
@@ -1011,6 +1041,10 @@ declare interface ListComponent {
1011
1041
  topMm: number;
1012
1042
  widthMm: number;
1013
1043
  dataset: string;
1044
+ /** 数据集中稳定业务主键的字段名;省略时编辑仅有计划内坐标。 */
1045
+ rowKey?: string;
1046
+ revisionField?: string;
1047
+ sourceTokenField?: string;
1014
1048
  columns: ListColumn[];
1015
1049
  fontSizePt?: number;
1016
1050
  headerBold?: boolean;
@@ -1023,6 +1057,8 @@ declare interface ListComponent {
1023
1057
  /** 表头默认对齐,列配置可覆盖。 */
1024
1058
  headerAlign?: ComponentStyle["align"];
1025
1059
  headerStyle?: ComponentStyle;
1060
+ /** 可选多行合并表头;列宽按列表物理列对齐,供 Excel 业务模板复用。 */
1061
+ headerGrid?: PlanGrid;
1026
1062
  border?: boolean;
1027
1063
  /** 分组小计(组头/组尾小计/组头防孤行) */
1028
1064
  groupBy?: ListGroupBy;
@@ -1075,6 +1111,26 @@ declare interface Media {
1075
1111
  buffer: Buffer_2;
1076
1112
  }
1077
1113
 
1114
+ declare interface OutputDiagnostic {
1115
+ code: "missing-image" | "unsupported-component" | "unsupported-image-format" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
1116
+ severity: "warning";
1117
+ format: OutputFormat;
1118
+ pageIndex: number;
1119
+ componentIndex: number;
1120
+ /** Nested grid child location as repeating [rowIndex, columnIndex, childIndex] triples. */
1121
+ componentPath?: readonly number[];
1122
+ kind: string;
1123
+ nid?: string;
1124
+ message: string;
1125
+ }
1126
+
1127
+ declare interface OutputDiagnosticOptions {
1128
+ /** Structured fidelity diagnostics; rendering never silently invents missing content. */
1129
+ onDiagnostic?: (diagnostic: OutputDiagnostic) => void;
1130
+ }
1131
+
1132
+ declare type OutputFormat = "dom" | "canvas" | "pdf" | "xlsx";
1133
+
1078
1134
  declare interface PageSetup {
1079
1135
  /**
1080
1136
  * Whitespace on the borders of the page. Units are inches.
@@ -1252,6 +1308,8 @@ declare interface PlanComponent {
1252
1308
  lines?: string[];
1253
1309
  richParagraphs?: RichParagraph[];
1254
1310
  imageData?: string;
1311
+ /** 明确指定线段方向;省略保持历史水平线行为。 */
1312
+ lineDirection?: "down" | "up";
1255
1313
  grid?: PlanGrid;
1256
1314
  table?: PlanTableFragment;
1257
1315
  style?: ComponentStyle;
@@ -1293,6 +1351,10 @@ declare interface PlanTableFragment {
1293
1351
  columnKeys: string[];
1294
1352
  layout?: "page" | "wide";
1295
1353
  title?: string;
1354
+ /** 只有宿主声明稳定 rowKey 时生成,不能用显示顺序替代业务主键。 */
1355
+ source?: Omit<ReportCellSource, "field" | "rowKey"> & {
1356
+ rowKey?: string | number;
1357
+ };
1296
1358
  }
1297
1359
 
1298
1360
  declare interface Protection {
@@ -1376,6 +1438,15 @@ declare interface RenderPlan {
1376
1438
 
1377
1439
  export declare function renderPlanToXlsx(plan: RenderPlan, options?: XlsxRenderOptions): Promise<XlsxRenderResult>;
1378
1440
 
1441
+ /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
1442
+ declare interface ReportCellSource {
1443
+ datasetId: string;
1444
+ rowKey: string | number;
1445
+ field: string;
1446
+ revision?: string | number;
1447
+ sourceToken?: string;
1448
+ }
1449
+
1379
1450
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
1380
1451
  declare interface ReportParamDef {
1381
1452
  /** 参数名(传入 params,与数据集 SQL #{field} 绑定对应) */
@@ -1391,6 +1462,11 @@ declare interface ReportParamDef {
1391
1462
  defaultValue?: string;
1392
1463
  required?: boolean;
1393
1464
  placeholder?: string;
1465
+ /** 数字上下界;date 参数使用 YYYY-MM-DD 字符串(含边界)。 */
1466
+ min?: number | string;
1467
+ max?: number | string;
1468
+ minLength?: number;
1469
+ maxLength?: number;
1394
1470
  }
1395
1471
 
1396
1472
  declare interface ReportTemplate {
@@ -2502,7 +2578,7 @@ declare interface XlsxReadOptions {
2502
2578
  * 目标是"财务能直接用的对账表"而非复刻版面)
2503
2579
  * - 未支持组件、富文本专有内容与单元格嵌套组件跳过并计入 warnings
2504
2580
  */
2505
- export declare interface XlsxRenderOptions {
2581
+ export declare interface XlsxRenderOptions extends OutputDiagnosticOptions {
2506
2582
  /** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
2507
2583
  sheetName?: (sheetIndex: number) => string;
2508
2584
  /** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
@@ -2517,6 +2593,7 @@ export declare interface XlsxRenderResult {
2517
2593
  workbook: ExcelJS.Workbook;
2518
2594
  buffer: ExcelJS.Buffer;
2519
2595
  warnings: string[];
2596
+ diagnostics?: OutputDiagnostic[];
2520
2597
  }
2521
2598
 
2522
2599
  declare interface XlsxWriteOptions extends stream.xlsx.WorkbookWriterOptions {