@bimatrix-aud-platform/aud_mcp_server 1.1.46 → 1.1.48

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.
@@ -555,6 +555,33 @@ export declare function chartDefaults(): {
555
555
  };
556
556
  SeriesSet: any[];
557
557
  };
558
+ export declare function treeDefaults(): {
559
+ AutoRefresh: boolean;
560
+ DoRefresh: boolean;
561
+ ShowCheckBox: boolean;
562
+ DataSourceInfo: {
563
+ LabelField: string;
564
+ ValueField: string;
565
+ HasChildField: string;
566
+ ImageField: string;
567
+ OnImageField: string;
568
+ KeyField: string;
569
+ ParentKeyField: string;
570
+ ToolTipField: string;
571
+ };
572
+ HoverBackgroundColor: {
573
+ R: number;
574
+ G: number;
575
+ B: number;
576
+ A: number;
577
+ };
578
+ HoverFontColor: {
579
+ R: number;
580
+ G: number;
581
+ B: number;
582
+ A: number;
583
+ };
584
+ };
558
585
  export declare function emptyDefaults(): Record<string, any>;
559
586
  export declare function groupDefaults(): {
560
587
  ChildElements: any[];
@@ -580,6 +607,6 @@ export declare function userComponentDefaults(): {
580
607
  export declare function webContainerDefaults(): {
581
608
  AutoRefresh: boolean;
582
609
  DoRefresh: boolean;
583
- TargetURL: string;
610
+ DataSource: string;
584
611
  };
585
612
  export declare const ELEMENT_DEFAULTS_MAP: Record<string, () => Record<string, any>>;
@@ -440,6 +440,25 @@ export function chartDefaults() {
440
440
  };
441
441
  }
442
442
  // -- 트리 컨트롤 --
443
+ export function treeDefaults() {
444
+ return {
445
+ AutoRefresh: false,
446
+ DoRefresh: true,
447
+ ShowCheckBox: false,
448
+ DataSourceInfo: {
449
+ LabelField: "",
450
+ ValueField: "",
451
+ HasChildField: "",
452
+ ImageField: "",
453
+ OnImageField: "",
454
+ KeyField: "",
455
+ ParentKeyField: "",
456
+ ToolTipField: "",
457
+ },
458
+ HoverBackgroundColor: { R: 220, G: 235, B: 252, A: 255 },
459
+ HoverFontColor: { R: 0, G: 0, B: 0, A: 255 },
460
+ };
461
+ }
443
462
  export function emptyDefaults() {
444
463
  return {};
445
464
  }
@@ -473,9 +492,9 @@ export function userComponentDefaults() {
473
492
  }
474
493
  export function webContainerDefaults() {
475
494
  return {
476
- AutoRefresh: true,
495
+ AutoRefresh: false,
477
496
  DoRefresh: true,
478
- TargetURL: "",
497
+ DataSource: "",
479
498
  };
480
499
  }
481
500
  // Type → defaults 팩토리 매핑
@@ -498,6 +517,8 @@ export const ELEMENT_DEFAULTS_MAP = {
498
517
  Calendar: calendarDefaults,
499
518
  CalendarYear: calendarDefaults,
500
519
  CalendarYM: calendarDefaults,
520
+ CalendarFromTo: calendarDefaults,
521
+ CalendarWeeklyFromTo: calendarDefaults,
501
522
  // 이미지/색상/파일
502
523
  Image: imageDefaults,
503
524
  ColorSelector: colorSelectorDefaults,
@@ -514,7 +535,7 @@ export const ELEMENT_DEFAULTS_MAP = {
514
535
  ScatterChart: chartDefaults,
515
536
  PolygonChart: chartDefaults,
516
537
  // 트리 컨트롤
517
- Tree: emptyDefaults,
538
+ Tree: treeDefaults,
518
539
  TreeView: emptyDefaults,
519
540
  // 컨테이너/레이아웃
520
541
  Group: groupDefaults,
@@ -398,15 +398,15 @@ function fixEnumAndRangeValues(doc, datas, fixes) {
398
398
  walkElements(elements, (el, path) => {
399
399
  // ---- AutoRefresh / DoRefresh / DoExport 필수 속성 보정 ----
400
400
  const type = el.Type;
401
- // AutoRefresh 대상: DataGrid, ComboBox, MultiComboBox, OlapGrid, Chart, PieChart, ScatterChart, PolygonChart, TreeGrid, iGrid, WebContainer
402
- const hasAutoRefresh = ["DataGrid", "ComboBox", "MultiComboBox", "OlapGrid", "Chart", "PieChart", "ScatterChart", "PolygonChart", "TreeGrid", "iGrid", "WebContainer"];
401
+ // AutoRefresh 대상: DataGrid, ComboBox, MultiComboBox, OlapGrid, Chart, PieChart, ScatterChart, PolygonChart, TreeGrid, iGrid, WebContainer, Tree
402
+ const hasAutoRefresh = ["DataGrid", "ComboBox", "MultiComboBox", "OlapGrid", "Chart", "PieChart", "ScatterChart", "PolygonChart", "TreeGrid", "iGrid", "WebContainer", "Tree"];
403
403
  if (hasAutoRefresh.includes(type) && !("AutoRefresh" in el)) {
404
404
  const autoDefault = type === "ComboBox" ? true : false;
405
405
  el.AutoRefresh = autoDefault;
406
406
  fixes.push(`[Rule3] ${path}.AutoRefresh: 누락 → ${autoDefault}`);
407
407
  }
408
- // DoRefresh 대상: DataGrid, ComboBox, OlapGrid, Chart, PieChart, ScatterChart, PolygonChart, TreeGrid, iGrid, UserComponent, WebContainer
409
- const hasDoRefresh = ["DataGrid", "ComboBox", "OlapGrid", "Chart", "PieChart", "ScatterChart", "PolygonChart", "TreeGrid", "iGrid", "UserComponent", "WebContainer"];
408
+ // DoRefresh 대상: DataGrid, ComboBox, OlapGrid, Chart, PieChart, ScatterChart, PolygonChart, TreeGrid, iGrid, UserComponent, WebContainer, Tree
409
+ const hasDoRefresh = ["DataGrid", "ComboBox", "OlapGrid", "Chart", "PieChart", "ScatterChart", "PolygonChart", "TreeGrid", "iGrid", "UserComponent", "WebContainer", "Tree"];
410
410
  if (hasDoRefresh.includes(type) && !("DoRefresh" in el)) {
411
411
  const isCombo = type === "ComboBox";
412
412
  el.DoRefresh = isCombo ? false : true;
@@ -671,7 +671,7 @@ class ElementContainer {
671
671
  Position: buildPosition({ width: 800, height: 400, ...opts }),
672
672
  Style: buildStyle(opts),
673
673
  ...getTypeDefaults("WebContainer"),
674
- ...(opts.url !== undefined ? { TargetURL: opts.url } : {}),
674
+ ...(opts.url !== undefined ? { DataSource: opts.url } : {}),
675
675
  };
676
676
  this._applyPassThrough(element, opts);
677
677
  this._addElement(element);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bimatrix-aud-platform/aud_mcp_server",
3
- "version": "1.1.46",
3
+ "version": "1.1.48",
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",
@@ -460,7 +460,7 @@ export interface ILabelElement extends IBaseElement {
460
460
  Type: 'Label';
461
461
  /** 표시할 텍스트 내용 */
462
462
  Text: string;
463
- /** 마우스 커서 스타일 (예: "pointer", "default") */
463
+ /** 마우스 커서 스타일 (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
464
464
  Cursor: string;
465
465
  /** 텍스트를 동적으로 계산할 수식 (FormulaManager에서 처리) */
466
466
  Formula?: string;
@@ -488,7 +488,7 @@ export interface IButtonElement extends IBaseElement {
488
488
  Type: 'Button';
489
489
  /** 버튼에 표시될 텍스트 */
490
490
  Value: string;
491
- /** 마우스 커서 스타일 */
491
+ /** 마우스 커서 스타일 (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
492
492
  Cursor: string;
493
493
  /** 툴팁 사용 여부 */
494
494
  UseTooltip?: boolean;
@@ -661,7 +661,7 @@ export interface IGridColumn {
661
661
  UseExport?: boolean;
662
662
  /** 컬럼 타입 (0:None, 1:Text, 2:CheckBox, 3:NumberBox, 4:ComboBox, 5:DateTime, 6:MaskEdit, 8:Image, 9:MultiLineText, 10:TrendLine, 11:SingleBarChart, 12:ColorPicker, 15:Time) */
663
663
  ColumnType?: number;
664
- /** 커서 타입 */
664
+ /** 커서 타입 (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
665
665
  CursorType?: string;
666
666
  /** 키 타입 (0:None, 1:NotNull, 2:Nullable, 3:Primary) */
667
667
  KeyType: number;
@@ -782,7 +782,7 @@ export interface IGroupElement extends IBaseElement {
782
782
  */
783
783
  export interface IImageElement extends IBaseElement {
784
784
  Type: 'Image';
785
- /** 마우스 커서 스타일 */
785
+ /** 마우스 커서 스타일 (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
786
786
  Cursor?: string;
787
787
  /** 기본 이미지 정보 */
788
788
  Image: IImageInfo;
@@ -2448,6 +2448,57 @@ export interface IWorkFlowLink {
2448
2448
  FromParam: string;
2449
2449
  }
2450
2450
 
2451
+ // ============================================
2452
+ // Tree Element
2453
+ // ============================================
2454
+
2455
+ /**
2456
+ * 트리 데이터소스 필드 바인딩 정보
2457
+ */
2458
+ export interface ITreeDataSourceInfo {
2459
+ /** 노드 라벨에 표시할 필드명 */
2460
+ LabelField: string;
2461
+ /** 노드 값 필드명 */
2462
+ ValueField: string;
2463
+ /** 자식 노드 존재 여부 필드명 ("Y"|"N") */
2464
+ HasChildField: string;
2465
+ /** 노드 이미지 필드명 */
2466
+ ImageField: string;
2467
+ /** 폴더 노드 선택 시 이미지 필드명 */
2468
+ OnImageField: string;
2469
+ /** 부모-자식 관계를 위한 키 필드명 */
2470
+ KeyField: string;
2471
+ /** 부모 키 필드명 */
2472
+ ParentKeyField: string;
2473
+ /** 노드 툴팁 필드명 */
2474
+ ToolTipField: string;
2475
+ }
2476
+
2477
+ /**
2478
+ * 트리 컨트롤 인터페이스
2479
+ * 계층 구조 데이터를 트리 형태로 표시하는 컨트롤입니다.
2480
+ * @see src/control/checkbox/Tree.ts
2481
+ */
2482
+ export interface ITreeElement extends IBaseElement {
2483
+ Type: 'Tree';
2484
+ /** 데이터소스 ID */
2485
+ DataSource?: string;
2486
+ /** 자식 데이터소스 ID */
2487
+ DataSource_child?: string;
2488
+ /** 보고서 열기 시 자동 데이터 조회 여부 */
2489
+ AutoRefresh: boolean;
2490
+ /** 새로고침 포함 여부 */
2491
+ DoRefresh: boolean;
2492
+ /** 체크박스 표시 여부 */
2493
+ ShowCheckBox: boolean;
2494
+ /** 데이터소스 필드 바인딩 정보 */
2495
+ DataSourceInfo: ITreeDataSourceInfo;
2496
+ /** 마우스 오버/선택 시 배경색 */
2497
+ HoverBackgroundColor?: IColor;
2498
+ /** 마우스 오버/선택 시 폰트색 */
2499
+ HoverFontColor?: IColor;
2500
+ }
2501
+
2451
2502
  // ============================================
2452
2503
  // RadioButton Element
2453
2504
  // ============================================
@@ -3096,7 +3147,7 @@ export interface ITabItemBaseProperties {
3096
3147
  };
3097
3148
  /** 표시 여부 : 기본값 true */
3098
3149
  Visible: boolean;
3099
- /** 커서 타입 */
3150
+ /** 커서 타입 (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
3100
3151
  Cursor: string;
3101
3152
  }
3102
3153
 
@@ -3265,7 +3316,7 @@ export interface IFileUploadButtonElement extends IBaseElement {
3265
3316
  Type: 'FileUploadButton';
3266
3317
  /** 버튼 텍스트, 기본값 : upload */
3267
3318
  Value: string;
3268
- /** 마우스 커서 스타일 기본값 : "pointer" */
3319
+ /** 마우스 커서 스타일, 기본값: "pointer" (enPropCursor: "default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help") */
3269
3320
  Cursor: string;
3270
3321
  /** 허용 파일 확장자 (예: ".xlsx,.csv") */
3271
3322
  AllowExt?: string;
@@ -3306,8 +3357,8 @@ export interface IPickListElement extends IBaseElement {
3306
3357
  */
3307
3358
  export interface IWebContainerElement extends IBaseElement {
3308
3359
  Type: 'WebContainer';
3309
- /** 대상 URL */
3310
- TargetURL?: string;
3360
+ /** 대상 URL : 이름은 DataSource이나 실제로는 URL이 들어감 */
3361
+ DataSource?: string;
3311
3362
  /** 보고서 로딩 시 자동 로딩 여부, 기본값: false */
3312
3363
  AutoRefresh: boolean;
3313
3364
  /** 수동 새로고침 버튼 표시 여부, 기본값: true */
@@ -3330,6 +3381,7 @@ export type IElement =
3330
3381
  | IImageElement
3331
3382
  | IRichTextBoxElement
3332
3383
  | ICheckBoxElement
3384
+ | ITreeElement
3333
3385
  | IComboBoxElement
3334
3386
  | IMultiComboBoxElement
3335
3387
  | ITextBoxElement
@@ -3404,6 +3456,13 @@ export function isCheckBoxElement(element: IElement): element is ICheckBoxElemen
3404
3456
  return element.Type === 'CheckBox';
3405
3457
  }
3406
3458
 
3459
+ /**
3460
+ * Tree 타입 가드
3461
+ */
3462
+ export function isTreeElement(element: IElement): element is ITreeElement {
3463
+ return element.Type === 'Tree';
3464
+ }
3465
+
3407
3466
  /**
3408
3467
  * ComboBox 타입 가드
3409
3468
  */
@@ -235,6 +235,10 @@
235
235
  "if": { "properties": { "Type": { "const": "CheckBox" } } },
236
236
  "then": { "$ref": "#/$defs/CheckBoxElement" }
237
237
  },
238
+ {
239
+ "if": { "properties": { "Type": { "const": "Tree" } } },
240
+ "then": { "$ref": "#/$defs/TreeElement" }
241
+ },
238
242
  {
239
243
  "if": { "properties": { "Type": { "const": "ComboBox" } } },
240
244
  "then": { "$ref": "#/$defs/ComboBoxElement" }
@@ -348,7 +352,7 @@
348
352
  "properties": {
349
353
  "LanguageCode": { "type": "string", "description": "다국어 키 코드" },
350
354
  "Text": { "type": "string", "description": "표시할 텍스트" },
351
- "Cursor": { "type": "string", "description": "마우스 커서 스타일" },
355
+ "Cursor": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "마우스 커서 스타일 (enPropCursor)" },
352
356
  "Formula": { "type": "string", "description": "동적 수식" },
353
357
  "UseTextOverflow": { "type": "boolean", "description": "텍스트 오버플로우 처리" },
354
358
  "UseAutoLineBreak": { "type": "boolean", "description": "자동 줄바꿈" },
@@ -368,7 +372,7 @@
368
372
  "properties": {
369
373
  "LanguageCode": { "type": "string", "description": "다국어 키 코드" },
370
374
  "Value": { "type": "string", "description": "버튼 텍스트" },
371
- "Cursor": { "type": "string", "description": "마우스 커서 스타일" },
375
+ "Cursor": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "마우스 커서 스타일 (enPropCursor)" },
372
376
  "HasNewRadius": { "type": "boolean", "description": "새로운 모서리 반경 사용" },
373
377
  "UseTooltip": { "type": "boolean", "description": "툴팁 사용 여부 (정의되어 있을 때만)" },
374
378
  "MouseOver": { "$ref": "#/$defs/MouseState", "description": "마우스 오버 스타일 (null이 아닐 때만)" },
@@ -472,7 +476,7 @@
472
476
  "description": "이미지 컨트롤",
473
477
  "required": ["Image"],
474
478
  "properties": {
475
- "Cursor": { "type": "string", "description": "마우스 커서 스타일" },
479
+ "Cursor": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "마우스 커서 스타일 (enPropCursor)" },
476
480
  "Image": { "$ref": "#/$defs/ImageInfo", "description": "기본 이미지 정보" },
477
481
  "OnImage": { "$ref": "#/$defs/ImageInfo", "description": "마우스 오버 시 이미지" },
478
482
  "ImageBase64Text": { "type": "string", "description": "Base64 인코딩 이미지" },
@@ -512,6 +516,35 @@
512
516
  "BindingInfo": { "$ref": "#/$defs/BindingInfo", "description": "데이터 바인딩 정보 (GridID && GridColumnID 있을 때만)" }
513
517
  }
514
518
  },
519
+ "TreeElement": {
520
+ "type": "object",
521
+ "description": "트리 컨트롤 — 계층 구조 데이터를 트리 형태로 표시",
522
+ "required": ["AutoRefresh", "DoRefresh", "ShowCheckBox", "DataSourceInfo"],
523
+ "properties": {
524
+ "DataSource": { "type": "string", "description": "데이터소스 ID" },
525
+ "DataSource_child": { "type": "string", "description": "자식 데이터소스 ID" },
526
+ "AutoRefresh": { "type": "boolean", "description": "보고서 열기 시 자동 데이터 조회 여부" },
527
+ "DoRefresh": { "type": "boolean", "description": "새로고침 포함 여부" },
528
+ "ShowCheckBox": { "type": "boolean", "description": "체크박스 표시 여부" },
529
+ "DataSourceInfo": {
530
+ "type": "object",
531
+ "description": "데이터소스 필드 바인딩 정보",
532
+ "required": ["LabelField", "ValueField", "HasChildField", "ImageField", "OnImageField", "KeyField", "ParentKeyField", "ToolTipField"],
533
+ "properties": {
534
+ "LabelField": { "type": "string", "description": "노드 라벨 필드명" },
535
+ "ValueField": { "type": "string", "description": "노드 값 필드명" },
536
+ "HasChildField": { "type": "string", "description": "자식 노드 존재 여부 필드명 (Y|N)" },
537
+ "ImageField": { "type": "string", "description": "노드 이미지 필드명" },
538
+ "OnImageField": { "type": "string", "description": "폴더 노드 선택 시 이미지 필드명" },
539
+ "KeyField": { "type": "string", "description": "부모-자식 관계 키 필드명" },
540
+ "ParentKeyField": { "type": "string", "description": "부모 키 필드명" },
541
+ "ToolTipField": { "type": "string", "description": "노드 툴팁 필드명" }
542
+ }
543
+ },
544
+ "HoverBackgroundColor": { "$ref": "#/$defs/Color", "description": "마우스 오버/선택 시 배경색" },
545
+ "HoverFontColor": { "$ref": "#/$defs/Color", "description": "마우스 오버/선택 시 폰트색" }
546
+ }
547
+ },
515
548
  "ComboBoxElement": {
516
549
  "type": "object",
517
550
  "description": "콤보박스 컨트롤",
@@ -693,7 +726,7 @@
693
726
  }
694
727
  },
695
728
  "Visible": { "type": "boolean", "description": "표시 여부" },
696
- "Cursor": { "type": "string", "description": "커서 타입" }
729
+ "Cursor": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "커서 타입 (enPropCursor)" }
697
730
  }
698
731
  },
699
732
  "TabItemStyleProperties": {
@@ -1115,10 +1148,10 @@
1115
1148
  },
1116
1149
  "WebContainerElement": {
1117
1150
  "type": "object",
1118
- "description": "웹 브라우저 컨테이너 컨트롤",
1151
+ "description": "웹 컨테이너 컨트롤 — 외부 URL을 iframe으로 표시",
1119
1152
  "required": ["AutoRefresh", "DoRefresh"],
1120
1153
  "properties": {
1121
- "TargetURL": { "type": "string", "description": "대상 URL" },
1154
+ "DataSource": { "type": "string", "description": "대상 URL (이름은 DataSource이나 실제로는 URL이 들어감)" },
1122
1155
  "AutoRefresh": { "type": "boolean", "description": "보고서 로딩 시 자동 로딩 여부 (기본값: false)" },
1123
1156
  "DoRefresh": { "type": "boolean", "description": "수동 새로고침 버튼 표시 여부 (기본값: true)" }
1124
1157
  }
@@ -1164,7 +1197,7 @@
1164
1197
  "properties": {
1165
1198
  "LanguageCode": { "type": "string", "description": "다국어 키 코드" },
1166
1199
  "Value": { "type": "string", "description": "버튼 텍스트 (기본값: upload)" },
1167
- "Cursor": { "type": "string", "description": "마우스 커서 스타일 (기본값: pointer)" },
1200
+ "Cursor": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "마우스 커서 스타일, 기본값: pointer (enPropCursor)" },
1168
1201
  "AllowExt": { "type": "string", "description": "허용 파일 확장자" },
1169
1202
  "SaveLimitSize": { "type": "number", "description": "업로드 크기 제한" },
1170
1203
  "SaveFolderName": { "type": "string", "description": "저장 폴더명" }
@@ -1681,7 +1714,7 @@
1681
1714
  "Resizable": { "type": "boolean" },
1682
1715
  "UseExport": { "type": "boolean" },
1683
1716
  "ColumnType": { "type": "integer", "description": "컬럼 타입 (0:None, 1:Text, 2:CheckBox, 3:NumberBox, 4:ComboBox, 5:DateTime, 6:MaskEdit, 8:Image, 9:MultiLineText, 10:TrendLine, 11:SingleBarChart, 12:ColorPicker, 15:Time)" },
1684
- "CursorType": { "type": "string" },
1717
+ "CursorType": { "type": "string", "enum": ["default","crosshair","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","help"], "description": "커서 타입 (enPropCursor)" },
1685
1718
  "KeyType": { "type": "integer", "description": "키 타입 (0:None, 1:NotNull, 2:Nullable, 3:Primary)" },
1686
1719
  "DataType": { "type": "integer", "description": "데이터 타입 (0:Numeric, 1:String, 2:DateTime8(yyyyMMdd), 3:DateTimeNow, 4:UserCode, 5:CLOB, 7:UUID)" },
1687
1720
  "HeaderPosition": { "type": "string", "enum": ["left", "center", "right", "start", "end"] },