@bimatrix-aud-platform/aud_mcp_server 1.1.41 → 1.1.43

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.
@@ -287,12 +287,246 @@ export declare function iGridDefaults(): {
287
287
  ServerScript: string;
288
288
  TemplateCode: string;
289
289
  };
290
+ export declare function defaultOlapViewOptions(): {
291
+ ViewType: number;
292
+ IsExpandAll: boolean;
293
+ ShowExpandButtons: boolean;
294
+ EmptyCellText: string;
295
+ NotAvaliableCellText: string;
296
+ ZeroDivisioinCellText: string;
297
+ ErrorCellText: string;
298
+ RowGrandTotalText: string;
299
+ ColumnGrandTotalText: string;
300
+ RowTotalText: string;
301
+ ColumnTotalText: string;
302
+ RowTotalLocation: number;
303
+ ColumnTotalLocation: number;
304
+ RowGrandTotalLocation: number;
305
+ ColumnGrandTotalLocation: number;
306
+ DisplayColumnSubTotal: boolean;
307
+ HideTotalChildIsOneColumn: boolean;
308
+ HideTotalChildIsOneRow: boolean;
309
+ HideEmptyMeasureRows: boolean;
310
+ HideEmptyMeasureColumns: boolean;
311
+ DisplayRowSubTotal: boolean;
312
+ DisplayColumnGrandTotal: boolean;
313
+ DisplayRowGrandTotal: boolean;
314
+ ShowFilterArea: boolean;
315
+ ShowColumnrArea: boolean;
316
+ ShowRowArea: boolean;
317
+ ShowDataArea: boolean;
318
+ UseMultiHeader: boolean;
319
+ RowAreaText: string;
320
+ ColumnAreaText: string;
321
+ DataAreaText: string;
322
+ FilterAreaText: string;
323
+ MeasuresText: string;
324
+ AutoSelection: boolean;
325
+ AutoSelectionRangeLeft: number;
326
+ AutoSelectionRangeTop: number;
327
+ AutoSelectionRangeRight: number;
328
+ AutoSelectionRangeBottom: number;
329
+ HideHorizontalScrollBar: boolean;
330
+ HideVerticalScrollBar: boolean;
331
+ DisableClipBoard: boolean;
332
+ CellHeight: number;
333
+ HeaderCellHeight: number;
334
+ CanResizeCellWidth: boolean;
335
+ RowHeaderUnFix: boolean;
336
+ MeasuresCreateArea: number;
337
+ TreeHeaderWidth: number;
338
+ TreeIndentWidth: number;
339
+ DisableColumnSort: boolean;
340
+ MergeColumnHeaders: boolean;
341
+ MergeRowHeaders: boolean;
342
+ OptimizingHybridFilter: boolean;
343
+ AutoHideGrandTotalRow: boolean;
344
+ AutoHideGrandTotalColumn: boolean;
345
+ ExportOption: {
346
+ ExportSheetSize: number;
347
+ ExportDisableRowMerge: boolean;
348
+ UseServerExport: boolean;
349
+ };
350
+ PagerInfo: {
351
+ PageSize: number;
352
+ UsePaging: boolean;
353
+ IgnoreTotalCount: boolean;
354
+ };
355
+ Style: {
356
+ ColumnHeaderVerticalAlignment: number;
357
+ RowHeaderVerticalAlignment: number;
358
+ LineColor: string;
359
+ BackgroundColor: string;
360
+ };
361
+ CacheOption: {
362
+ CacheMode: number;
363
+ ExpiredMinutes: number;
364
+ UpdateMinutes: number;
365
+ UseHybrid: boolean;
366
+ HybridSort: boolean;
367
+ };
368
+ };
369
+ export declare function defaultOlapExtraOption(): {
370
+ CurrentPageSize: number;
371
+ UseMeta: boolean;
372
+ UseChartSourceTotal: boolean;
373
+ UseChartSourceGrandTotal: boolean;
374
+ UseChartSourceReverse: boolean;
375
+ ChartLabelDepth: number;
376
+ ConditionalStyleName: string;
377
+ BackgroundColorBoxStyleKey: string;
378
+ EtcExportData: boolean;
379
+ EtcExportExcel: boolean;
380
+ EtcExportCSV: boolean;
381
+ EtcExportText: boolean;
382
+ EtcExpandAll: boolean;
383
+ EtcExpandAllClose: boolean;
384
+ EtcFormat: boolean;
385
+ EtcVisibleTotal: boolean;
386
+ EtcSort: boolean;
387
+ EtcFilterClean: boolean;
388
+ EtcSwitchRowAndColumn: boolean;
389
+ EtcLayoutEditor: boolean;
390
+ EtcProperties: boolean;
391
+ EtcAnalysisItemsSettings: boolean;
392
+ EtcFormulaEditor: boolean;
393
+ EtcCustomDimensionFields: boolean;
394
+ EtcHiding: boolean;
395
+ EtcStyle: boolean;
396
+ EtcMultiHeader: boolean;
397
+ EtcCacheInfo: boolean;
398
+ EtcFieldGroup: boolean;
399
+ EtcFilterManager: boolean;
400
+ EtcTopFilter: boolean;
401
+ };
290
402
  export declare function olapGridDefaults(): {
291
403
  AutoRefresh: boolean;
292
404
  DoRefresh: boolean;
293
405
  DoExport: boolean;
294
- iOLAPView: Record<string, any>;
295
- ExtraOption: Record<string, any>;
406
+ iOLAPView: {
407
+ Options: {
408
+ ViewType: number;
409
+ IsExpandAll: boolean;
410
+ ShowExpandButtons: boolean;
411
+ EmptyCellText: string;
412
+ NotAvaliableCellText: string;
413
+ ZeroDivisioinCellText: string;
414
+ ErrorCellText: string;
415
+ RowGrandTotalText: string;
416
+ ColumnGrandTotalText: string;
417
+ RowTotalText: string;
418
+ ColumnTotalText: string;
419
+ RowTotalLocation: number;
420
+ ColumnTotalLocation: number;
421
+ RowGrandTotalLocation: number;
422
+ ColumnGrandTotalLocation: number;
423
+ DisplayColumnSubTotal: boolean;
424
+ HideTotalChildIsOneColumn: boolean;
425
+ HideTotalChildIsOneRow: boolean;
426
+ HideEmptyMeasureRows: boolean;
427
+ HideEmptyMeasureColumns: boolean;
428
+ DisplayRowSubTotal: boolean;
429
+ DisplayColumnGrandTotal: boolean;
430
+ DisplayRowGrandTotal: boolean;
431
+ ShowFilterArea: boolean;
432
+ ShowColumnrArea: boolean;
433
+ ShowRowArea: boolean;
434
+ ShowDataArea: boolean;
435
+ UseMultiHeader: boolean;
436
+ RowAreaText: string;
437
+ ColumnAreaText: string;
438
+ DataAreaText: string;
439
+ FilterAreaText: string;
440
+ MeasuresText: string;
441
+ AutoSelection: boolean;
442
+ AutoSelectionRangeLeft: number;
443
+ AutoSelectionRangeTop: number;
444
+ AutoSelectionRangeRight: number;
445
+ AutoSelectionRangeBottom: number;
446
+ HideHorizontalScrollBar: boolean;
447
+ HideVerticalScrollBar: boolean;
448
+ DisableClipBoard: boolean;
449
+ CellHeight: number;
450
+ HeaderCellHeight: number;
451
+ CanResizeCellWidth: boolean;
452
+ RowHeaderUnFix: boolean;
453
+ MeasuresCreateArea: number;
454
+ TreeHeaderWidth: number;
455
+ TreeIndentWidth: number;
456
+ DisableColumnSort: boolean;
457
+ MergeColumnHeaders: boolean;
458
+ MergeRowHeaders: boolean;
459
+ OptimizingHybridFilter: boolean;
460
+ AutoHideGrandTotalRow: boolean;
461
+ AutoHideGrandTotalColumn: boolean;
462
+ ExportOption: {
463
+ ExportSheetSize: number;
464
+ ExportDisableRowMerge: boolean;
465
+ UseServerExport: boolean;
466
+ };
467
+ PagerInfo: {
468
+ PageSize: number;
469
+ UsePaging: boolean;
470
+ IgnoreTotalCount: boolean;
471
+ };
472
+ Style: {
473
+ ColumnHeaderVerticalAlignment: number;
474
+ RowHeaderVerticalAlignment: number;
475
+ LineColor: string;
476
+ BackgroundColor: string;
477
+ };
478
+ CacheOption: {
479
+ CacheMode: number;
480
+ ExpiredMinutes: number;
481
+ UpdateMinutes: number;
482
+ UseHybrid: boolean;
483
+ HybridSort: boolean;
484
+ };
485
+ };
486
+ TopFilter: {
487
+ Dimension: string;
488
+ Measure: string;
489
+ Rank: number;
490
+ IsTop: boolean;
491
+ GroupBy: any[];
492
+ };
493
+ PreFilters: any[];
494
+ Fields: any[];
495
+ MultiHeaderCells: any[];
496
+ };
497
+ ExtraOption: {
498
+ CurrentPageSize: number;
499
+ UseMeta: boolean;
500
+ UseChartSourceTotal: boolean;
501
+ UseChartSourceGrandTotal: boolean;
502
+ UseChartSourceReverse: boolean;
503
+ ChartLabelDepth: number;
504
+ ConditionalStyleName: string;
505
+ BackgroundColorBoxStyleKey: string;
506
+ EtcExportData: boolean;
507
+ EtcExportExcel: boolean;
508
+ EtcExportCSV: boolean;
509
+ EtcExportText: boolean;
510
+ EtcExpandAll: boolean;
511
+ EtcExpandAllClose: boolean;
512
+ EtcFormat: boolean;
513
+ EtcVisibleTotal: boolean;
514
+ EtcSort: boolean;
515
+ EtcFilterClean: boolean;
516
+ EtcSwitchRowAndColumn: boolean;
517
+ EtcLayoutEditor: boolean;
518
+ EtcProperties: boolean;
519
+ EtcAnalysisItemsSettings: boolean;
520
+ EtcFormulaEditor: boolean;
521
+ EtcCustomDimensionFields: boolean;
522
+ EtcHiding: boolean;
523
+ EtcStyle: boolean;
524
+ EtcMultiHeader: boolean;
525
+ EtcCacheInfo: boolean;
526
+ EtcFieldGroup: boolean;
527
+ EtcFilterManager: boolean;
528
+ EtcTopFilter: boolean;
529
+ };
296
530
  };
297
531
  export declare function chartDefaults(): {
298
532
  AutoRefresh: boolean;
@@ -275,13 +275,141 @@ export function iGridDefaults() {
275
275
  TemplateCode: "",
276
276
  };
277
277
  }
278
+ export function defaultOlapViewOptions() {
279
+ return {
280
+ ViewType: 0,
281
+ IsExpandAll: true,
282
+ ShowExpandButtons: true,
283
+ EmptyCellText: "-",
284
+ NotAvaliableCellText: "N/A",
285
+ ZeroDivisioinCellText: "#DIV/0!",
286
+ ErrorCellText: "NG",
287
+ RowGrandTotalText: "Grand Total",
288
+ ColumnGrandTotalText: "Grand Total",
289
+ RowTotalText: " Total",
290
+ ColumnTotalText: " Total",
291
+ RowTotalLocation: 0,
292
+ ColumnTotalLocation: 0,
293
+ RowGrandTotalLocation: 0,
294
+ ColumnGrandTotalLocation: 0,
295
+ DisplayColumnSubTotal: true,
296
+ HideTotalChildIsOneColumn: false,
297
+ HideTotalChildIsOneRow: false,
298
+ HideEmptyMeasureRows: false,
299
+ HideEmptyMeasureColumns: false,
300
+ DisplayRowSubTotal: true,
301
+ DisplayColumnGrandTotal: true,
302
+ DisplayRowGrandTotal: true,
303
+ ShowFilterArea: true,
304
+ ShowColumnrArea: true,
305
+ ShowRowArea: true,
306
+ ShowDataArea: true,
307
+ UseMultiHeader: false,
308
+ RowAreaText: "Row Area",
309
+ ColumnAreaText: "Column Area",
310
+ DataAreaText: "Data Area",
311
+ FilterAreaText: "Filter Area",
312
+ MeasuresText: "Measures",
313
+ AutoSelection: false,
314
+ AutoSelectionRangeLeft: 0,
315
+ AutoSelectionRangeTop: 0,
316
+ AutoSelectionRangeRight: 0,
317
+ AutoSelectionRangeBottom: 0,
318
+ HideHorizontalScrollBar: false,
319
+ HideVerticalScrollBar: false,
320
+ DisableClipBoard: false,
321
+ CellHeight: 23,
322
+ HeaderCellHeight: 23,
323
+ CanResizeCellWidth: true,
324
+ RowHeaderUnFix: false,
325
+ MeasuresCreateArea: 2,
326
+ TreeHeaderWidth: 300,
327
+ TreeIndentWidth: 20,
328
+ DisableColumnSort: false,
329
+ MergeColumnHeaders: false,
330
+ MergeRowHeaders: false,
331
+ OptimizingHybridFilter: false,
332
+ AutoHideGrandTotalRow: false,
333
+ AutoHideGrandTotalColumn: false,
334
+ ExportOption: {
335
+ ExportSheetSize: 1000000,
336
+ ExportDisableRowMerge: false,
337
+ UseServerExport: true,
338
+ },
339
+ PagerInfo: {
340
+ PageSize: 100,
341
+ UsePaging: true,
342
+ IgnoreTotalCount: false,
343
+ },
344
+ Style: {
345
+ ColumnHeaderVerticalAlignment: 0,
346
+ RowHeaderVerticalAlignment: 0,
347
+ LineColor: "",
348
+ BackgroundColor: "",
349
+ },
350
+ CacheOption: {
351
+ CacheMode: 1,
352
+ ExpiredMinutes: 480,
353
+ UpdateMinutes: 60,
354
+ UseHybrid: true,
355
+ HybridSort: false,
356
+ },
357
+ };
358
+ }
359
+ export function defaultOlapExtraOption() {
360
+ return {
361
+ CurrentPageSize: 0,
362
+ UseMeta: false,
363
+ UseChartSourceTotal: false,
364
+ UseChartSourceGrandTotal: false,
365
+ UseChartSourceReverse: false,
366
+ ChartLabelDepth: -1,
367
+ ConditionalStyleName: "",
368
+ BackgroundColorBoxStyleKey: "",
369
+ EtcExportData: true,
370
+ EtcExportExcel: true,
371
+ EtcExportCSV: true,
372
+ EtcExportText: true,
373
+ EtcExpandAll: true,
374
+ EtcExpandAllClose: true,
375
+ EtcFormat: false,
376
+ EtcVisibleTotal: true,
377
+ EtcSort: true,
378
+ EtcFilterClean: true,
379
+ EtcSwitchRowAndColumn: true,
380
+ EtcLayoutEditor: true,
381
+ EtcProperties: false,
382
+ EtcAnalysisItemsSettings: true,
383
+ EtcFormulaEditor: true,
384
+ EtcCustomDimensionFields: true,
385
+ EtcHiding: false,
386
+ EtcStyle: true,
387
+ EtcMultiHeader: false,
388
+ EtcCacheInfo: true,
389
+ EtcFieldGroup: true,
390
+ EtcFilterManager: true,
391
+ EtcTopFilter: true,
392
+ };
393
+ }
278
394
  export function olapGridDefaults() {
279
395
  return {
280
396
  AutoRefresh: false,
281
397
  DoRefresh: true,
282
398
  DoExport: true,
283
- iOLAPView: {},
284
- ExtraOption: {},
399
+ iOLAPView: {
400
+ Options: defaultOlapViewOptions(),
401
+ TopFilter: {
402
+ Dimension: "",
403
+ Measure: "",
404
+ Rank: 10,
405
+ IsTop: true,
406
+ GroupBy: [],
407
+ },
408
+ PreFilters: [],
409
+ Fields: [],
410
+ MultiHeaderCells: [],
411
+ },
412
+ ExtraOption: defaultOlapExtraOption(),
285
413
  };
286
414
  }
287
415
  // -- 차트 컨트롤 --
@@ -379,7 +379,17 @@ function fixEnumAndRangeValues(doc, datas, fixes) {
379
379
  const forms = doc.Forms || [];
380
380
  for (const form of forms) {
381
381
  if (form.Style) {
382
- fixIntRange(form.Style, "Type", 0, 2, 0, `Form("${form.Name}").Style`, fixes); // 기본값: 0(Skin)
382
+ const fPath = `Form("${form.Name}").Style`;
383
+ fixIntRange(form.Style, "Type", 0, 2, 0, fPath, fixes); // 기본값: 0(Skin)
384
+ // Background 빈 객체 보정
385
+ if (!form.Style.Background || typeof form.Style.Background !== "object") {
386
+ form.Style.Background = { Color: { R: 255, G: 255, B: 255, A: 1 } };
387
+ fixes.push(`[Rule3] ${fPath}.Background: 누락 → 흰색 기본값 보정`);
388
+ }
389
+ else if (!form.Style.Background.Color) {
390
+ form.Style.Background.Color = { R: 255, G: 255, B: 255, A: 1 };
391
+ fixes.push(`[Rule3] ${fPath}.Background.Color: 누락 → 흰색 기본값 보정`);
392
+ }
383
393
  }
384
394
  }
385
395
  // ── 4. Elements (walkElements 순회) ──
@@ -472,9 +482,17 @@ function fixEnumAndRangeValues(doc, datas, fixes) {
472
482
  if (font.Color)
473
483
  clampColorRGBA(font.Color, `${path}.Style.Font.Color`, fixes);
474
484
  }
475
- // ---- Style.Background Color ----
476
- const bg = el.Style?.Background;
477
- if (bg) {
485
+ // ---- Style.Background Color (빈 객체 {} 허용 안 됨) ----
486
+ if (el.Style) {
487
+ if (!el.Style.Background || typeof el.Style.Background !== "object") {
488
+ el.Style.Background = { Color: { R: 255, G: 255, B: 255, A: 1 } };
489
+ fixes.push(`[Rule3] ${path}.Style.Background: 누락 → 흰색 기본값 보정`);
490
+ }
491
+ else if (!el.Style.Background.Color) {
492
+ el.Style.Background.Color = { R: 255, G: 255, B: 255, A: 1 };
493
+ fixes.push(`[Rule3] ${path}.Style.Background.Color: 누락 → 흰색 기본값 보정`);
494
+ }
495
+ const bg = el.Style.Background;
478
496
  clampColorRGBA(bg, `${path}.Style.Background`, fixes);
479
497
  if (bg.Color)
480
498
  clampColorRGBA(bg.Color, `${path}.Style.Background.Color`, fixes);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bimatrix-aud-platform/aud_mcp_server",
3
- "version": "1.1.41",
3
+ "version": "1.1.43",
4
4
  "description": "MCP Server for i-AUD MTSD document validation, generation, schema querying, control info extraction, and database operations",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -226,18 +226,20 @@ export interface IColor {
226
226
 
227
227
  /**
228
228
  * 배경 스타일 인터페이스
229
+ * Color는 필수입니다. 빈 객체 {}는 허용되지 않습니다.
230
+ * 기본값: { Color: { R: 255, G: 255, B: 255, A: 1 } } (흰색)
229
231
  */
230
232
  export interface IBackground {
231
- /** 배경 색상 (IColor 객체) */
233
+ /** 배경 색상 (필수 — 빈 Background 허용 안 됨) */
232
234
  Color: IColor;
233
- /** Red 값 (개별 속성으로 지정 시) */
234
- ColorR: number;
235
- /** Green 값 (개별 속성으로 지정 시) */
236
- ColorG: number;
237
- /** Blue 값 (개별 속성으로 지정 시) */
238
- ColorB: number;
239
- /** Alpha 값 (개별 속성으로 지정 시) */
240
- ColorA: number;
235
+ /** Red 값 (Form 레벨에서 개별 속성으로 지정 시) */
236
+ ColorR?: number;
237
+ /** Green 값 (Form 레벨에서 개별 속성으로 지정 시) */
238
+ ColorG?: number;
239
+ /** Blue 값 (Form 레벨에서 개별 속성으로 지정 시) */
240
+ ColorB?: number;
241
+ /** Alpha 값 (Form 레벨에서 개별 속성으로 지정 시) */
242
+ ColorA?: number;
241
243
  }
242
244
 
243
245
  /**
@@ -246,14 +248,14 @@ export interface IBackground {
246
248
  export interface IBorder {
247
249
  /** 테두리 색상 (IColor 객체) */
248
250
  Color: IColor;
249
- /** Red 값 (개별 속성으로 지정 시) */
250
- ColorR: number;
251
- /** Green 값 (개별 속성으로 지정 시) */
252
- ColorG: number;
253
- /** Blue 값 (개별 속성으로 지정 시) */
254
- ColorB: number;
255
- /** Alpha 값 (개별 속성으로 지정 시) */
256
- ColorA: number;
251
+ /** Red 값 (Form 레벨에서 개별 속성으로 지정 시) */
252
+ ColorR?: number;
253
+ /** Green 값 (Form 레벨에서 개별 속성으로 지정 시) */
254
+ ColorG?: number;
255
+ /** Blue 값 (Form 레벨에서 개별 속성으로 지정 시) */
256
+ ColorB?: number;
257
+ /** Alpha 값 (Form 레벨에서 개별 속성으로 지정 시) */
258
+ ColorA?: number;
257
259
  /** 모서리 둥글기 (예: "5,5,5,5" - 좌상, 우상, 우하, 좌하) */
258
260
  CornerRadius: string;
259
261
  /** 테두리 선 종류 (Solid, Dashed, Dotted 등) */
@@ -1072,67 +1074,67 @@ export interface IOlapGridElement extends IBaseElement {
1072
1074
  */
1073
1075
  export interface IOlapGridExtraOption {
1074
1076
  /** 속성창에서 마지막으로 설정한 페이지 사이즈 */
1075
- CurrentPageSize?: number;
1077
+ CurrentPageSize: number;
1076
1078
  /** 메타 사용 여부 */
1077
- UseMeta?: boolean;
1079
+ UseMeta: boolean;
1078
1080
  /** 차트 소스 소계 표시 */
1079
- UseChartSourceTotal?: boolean;
1081
+ UseChartSourceTotal: boolean;
1080
1082
  /** 차트 소스 총계 표시 */
1081
- UseChartSourceGrandTotal?: boolean;
1083
+ UseChartSourceGrandTotal: boolean;
1082
1084
  /** 차트 소스 테이블 반대 */
1083
- UseChartSourceReverse?: boolean;
1085
+ UseChartSourceReverse: boolean;
1084
1086
  /** 차트 레이블 필드 최대 계층 수 */
1085
- ChartLabelDepth?: number;
1087
+ ChartLabelDepth: number;
1086
1088
  /** 조건부 서식명 */
1087
- ConditionalStyleName?: string;
1089
+ ConditionalStyleName : string;
1088
1090
  /** 배경색 박스 스타일 키 */
1089
- BackgroundColorBoxStyleKey?: string;
1091
+ BackgroundColorBoxStyleKey: string;
1090
1092
  /** 컨텍스트 메뉴: 내보내기 */
1091
- EtcExportData?: boolean;
1093
+ EtcExportData: boolean;
1092
1094
  /** 컨텍스트 메뉴: 내보내기 엑셀 */
1093
- EtcExportExcel?: boolean;
1095
+ EtcExportExcel: boolean;
1094
1096
  /** 컨텍스트 메뉴: 내보내기 CSV */
1095
- EtcExportCSV?: boolean;
1097
+ EtcExportCSV: boolean;
1096
1098
  /** 컨텍스트 메뉴: 내보내기 텍스트 */
1097
- EtcExportText?: boolean;
1099
+ EtcExportText: boolean;
1098
1100
  /** 컨텍스트 메뉴: 전체 확장 */
1099
- EtcExpandAll?: boolean;
1101
+ EtcExpandAll: boolean;
1100
1102
  /** 컨텍스트 메뉴: 전체 축소 */
1101
- EtcExpandAllClose?: boolean;
1103
+ EtcExpandAllClose: boolean;
1102
1104
  /** 컨텍스트 메뉴: 서식 설정 */
1103
- EtcFormat?: boolean;
1105
+ EtcFormat: boolean;
1104
1106
  /** 컨텍스트 메뉴: 합계 표시 */
1105
- EtcVisibleTotal?: boolean;
1107
+ EtcVisibleTotal: boolean;
1106
1108
  /** 컨텍스트 메뉴: 정렬 */
1107
- EtcSort?: boolean;
1109
+ EtcSort: boolean;
1108
1110
  /** 컨텍스트 메뉴: 필터 해제 */
1109
- EtcFilterClean?: boolean;
1111
+ EtcFilterClean: boolean;
1110
1112
  /** 컨텍스트 메뉴: 축 변경(행/열) */
1111
- EtcSwitchRowAndColumn?: boolean;
1113
+ EtcSwitchRowAndColumn: boolean;
1112
1114
  /** 컨텍스트 메뉴: 레이아웃 관리자 */
1113
- EtcLayoutEditor?: boolean;
1115
+ EtcLayoutEditor: boolean;
1114
1116
  /** 컨텍스트 메뉴: 디자인(속성) */
1115
- EtcProperties?: boolean;
1117
+ EtcProperties: boolean;
1116
1118
  /** 컨텍스트 메뉴: 분석 항목 설정 */
1117
- EtcAnalysisItemsSettings?: boolean;
1119
+ EtcAnalysisItemsSettings: boolean;
1118
1120
  /** 컨텍스트 메뉴: 수식 편집기 */
1119
- EtcFormulaEditor?: boolean;
1121
+ EtcFormulaEditor: boolean;
1120
1122
  /** 컨텍스트 메뉴: 사용자 정의 항목 */
1121
- EtcCustomDimensionFields?: boolean;
1123
+ EtcCustomDimensionFields: boolean;
1122
1124
  /** 컨텍스트 메뉴: Hiding */
1123
- EtcHiding?: boolean;
1125
+ EtcHiding: boolean;
1124
1126
  /** 컨텍스트 메뉴: Style */
1125
- EtcStyle?: boolean;
1127
+ EtcStyle: boolean;
1126
1128
  /** 컨텍스트 메뉴: 멀티 헤더 */
1127
- EtcMultiHeader?: boolean;
1129
+ EtcMultiHeader: boolean;
1128
1130
  /** 컨텍스트 메뉴: 캐시 정보 */
1129
- EtcCacheInfo?: boolean;
1131
+ EtcCacheInfo: boolean;
1130
1132
  /** 컨텍스트 메뉴: 필드 그룹 */
1131
- EtcFieldGroup?: boolean;
1133
+ EtcFieldGroup: boolean;
1132
1134
  /** 컨텍스트 메뉴: 필터 관리 */
1133
- EtcFilterManager?: boolean;
1135
+ EtcFilterManager: boolean;
1134
1136
  /** 컨텍스트 메뉴: Top N Filter */
1135
- EtcTopFilter?: boolean;
1137
+ EtcTopFilter: boolean;
1136
1138
  }
1137
1139
 
1138
1140
  // ============================================
@@ -1576,20 +1576,20 @@
1576
1576
  },
1577
1577
  "Background": {
1578
1578
  "type": "object",
1579
- "description": "배경 스타일 (Color 또는 ColorR/G/B/A 사용)",
1580
- "required": ["Color", "ColorR", "ColorG", "ColorB", "ColorA"],
1579
+ "description": "배경 스타일 — Color 필수 (빈 객체 {} 허용 안 됨). 기본값: 흰색 { Color: { R:255, G:255, B:255, A:1 } }",
1580
+ "required": ["Color"],
1581
1581
  "properties": {
1582
1582
  "Color": { "$ref": "#/$defs/Color" },
1583
- "ColorR": { "type": "number", "minimum": 0, "maximum": 255 },
1584
- "ColorG": { "type": "number", "minimum": 0, "maximum": 255 },
1585
- "ColorB": { "type": "number", "minimum": 0, "maximum": 255 },
1586
- "ColorA": { "type": "number", "minimum": 0, "maximum": 255 }
1583
+ "ColorR": { "type": "number", "minimum": 0, "maximum": 255, "description": "Form 레벨 개별 속성" },
1584
+ "ColorG": { "type": "number", "minimum": 0, "maximum": 255, "description": "Form 레벨 개별 속성" },
1585
+ "ColorB": { "type": "number", "minimum": 0, "maximum": 255, "description": "Form 레벨 개별 속성" },
1586
+ "ColorA": { "type": "number", "minimum": 0, "maximum": 255, "description": "Form 레벨 개별 속성" }
1587
1587
  }
1588
1588
  },
1589
1589
  "Border": {
1590
1590
  "type": "object",
1591
1591
  "description": "테두리 스타일",
1592
- "required": ["Color", "ColorR", "ColorG", "ColorB", "ColorA", "CornerRadius", "LineType", "Thickness"],
1592
+ "required": ["Color", "CornerRadius", "LineType", "Thickness"],
1593
1593
  "properties": {
1594
1594
  "Color": { "$ref": "#/$defs/Color" },
1595
1595
  "ColorR": { "type": "number", "minimum": 0, "maximum": 255 },