diff --git a/app/Config/Routes.php b/app/Config/Routes.php index d17de7f..ba3ce62 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -67,19 +67,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'ClientController::batchjob_delete'); $routes->get('download/(:alpha)', 'ClientController::download/$1'); }); - $routes->group('clienthistory', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { - $routes->get('/', 'ClientHistoryController::index'); - $routes->get('create', 'ClientHistoryController::create_form'); - $routes->post('create', 'ClientHistoryController::create'); - $routes->get('modify/(:num)', 'ClientHistoryController::modify_form/$1'); - $routes->post('modify/(:num)', 'ClientHistoryController::modify/$1'); - $routes->get('view/(:num)', 'ClientHistoryController::view/$1'); - $routes->get('delete/(:num)', 'ClientHistoryController::delete/$1'); - $routes->get('toggle/(:num)/(:any)', 'ClientHistoryController::toggle/$1/$2'); - $routes->post('batchjob', 'ClientHistoryController::batchjob'); - $routes->post('batchjob_delete', 'ClientHistoryController::batchjob_delete'); - $routes->get('download/(:alpha)', 'ClientHistoryController::download/$1'); - }); $routes->group('account', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { $routes->get('/', 'AccountController::index'); $routes->get('create', 'AccountController::create_form'); @@ -145,19 +132,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'ServiceItemController::batchjob_delete'); $routes->get('download/(:alpha)', 'ServiceItemController::download/$1'); }); - $routes->group('servicehistory', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { - $routes->get('/', 'ServiceHistoryController::index'); - $routes->get('create', 'ServiceHistoryController::create_form'); - $routes->post('create', 'ServiceHistoryController::create'); - $routes->get('modify/(:num)', 'ServiceHistoryController::modify_form/$1'); - $routes->post('modify/(:num)', 'ServiceHistoryController::modify/$1'); - $routes->get('view/(:num)', 'ServiceHistoryController::view/$1'); - $routes->get('delete/(:num)', 'ServiceHistoryController::delete/$1'); - $routes->get('toggle/(:num)/(:any)', 'ServiceHistoryController::toggle/$1/$2'); - $routes->post('batchjob', 'ServiceHistoryController::batchjob'); - $routes->post('batchjob_delete', 'ServiceHistoryController::batchjob_delete'); - $routes->get('download/(:alpha)', 'ServiceHistoryController::download/$1'); - }); $routes->group('payment', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) { $routes->get('/', 'ServicePaymentController::index'); $routes->get('create', 'ServicePaymentController::create_form'); @@ -187,19 +161,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'SwitchController::batchjob_delete'); $routes->get('download/(:alpha)', 'SwitchController::download/$1'); }); - $routes->group('code', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { - $routes->get('/', 'CodeController::index'); - $routes->get('create', 'CodeController::create_form'); - $routes->post('create', 'CodeController::create'); - $routes->get('modify/(:alphanum)', 'CodeController::modify_form/$1'); - $routes->post('modify/(:alphanum)', 'CodeController::modify/$1'); - $routes->get('view/(:alphanum)', 'CodeController::view/$1'); - $routes->get('delete/(:alphanum)', 'CodeController::delete/$1'); - $routes->get('toggle/(:alphanum)/(:any)', 'CodeController::toggle/$1/$2'); - $routes->post('batchjob', 'CodeController::batchjob'); - $routes->post('batchjob_delete', 'CodeController::batchjob_delete'); - $routes->get('download/(:alpha)', 'CodeController::download/$1'); - }); $routes->group('server', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { $routes->get('/', 'ServerController::index'); $routes->get('create', 'ServerController::create_form'); diff --git a/app/Config/Services.php b/app/Config/Services.php index df7c8ad..0f26514 100644 --- a/app/Config/Services.php +++ b/app/Config/Services.php @@ -2,6 +2,8 @@ namespace Config; +use App\Models\UserModel; +use App\Services\Auth\LocalService; use CodeIgniter\Config\BaseService; /** @@ -29,4 +31,13 @@ class Services extends BaseService * return new \CodeIgniter\Example(); * } */ + + public static function myauth($getShared = true): LocalService + { + if ($getShared) { + return static::getSharedInstance('myauth'); + } else { + return new LocalService(new UserModel()); + } + } } diff --git a/app/Controllers/Admin/Customer/ClientHistoryController.php b/app/Controllers/Admin/Customer/ClientHistoryController.php deleted file mode 100644 index 0c9c9a7..0000000 --- a/app/Controllers/Admin/Customer/ClientHistoryController.php +++ /dev/null @@ -1,53 +0,0 @@ -content_title = lang("{$this->getService()->getClassName()}.title"); - $this->class_path .= $this->getService()->getClassName(); - $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; - // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; - - } - - public function getService(): ClientHistoryService - { - if (!$this->_service) { - $this->_service = new ClientHistoryService(); - } - return $this->_service; - } - public function getHelper(): ClientHistoryHelper - { - if (!$this->_helper) { - $this->_helper = new ClientHistoryHelper(); - } - return $this->_helper; - } - - protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string - { - switch ($this->getAction()) { - case 'index': - $result = parent::getResultSuccess($message, $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'popup'); - break; - default: - $result = parent::getResultSuccess($message, $actionTemplate); - break; - } - return $result; - } - //Index,FieldForm관련 -} diff --git a/app/Controllers/Admin/Customer/ServiceHistoryController.php b/app/Controllers/Admin/Customer/ServiceHistoryController.php deleted file mode 100644 index e4f68aa..0000000 --- a/app/Controllers/Admin/Customer/ServiceHistoryController.php +++ /dev/null @@ -1,53 +0,0 @@ -content_title = lang("{$this->getService()->getClassName()}.title"); - $this->class_path .= $this->getService()->getClassName(); - $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; - // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; - - } - - public function getService(): ServiceHistoryService - { - if (!$this->_service) { - $this->_service = new ServiceHistoryService(); - } - return $this->_service; - } - public function getHelper(): ServiceHistoryHelper - { - if (!$this->_helper) { - $this->_helper = new ServiceHistoryHelper(); - } - return $this->_helper; - } - - protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string - { - switch ($this->getAction()) { - case 'index': - $result = parent::getResultSuccess($message, $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'popup'); - break; - default: - $result = parent::getResultSuccess($message, $actionTemplate); - break; - } - return $result; - } - //Index,FieldForm관련 -} diff --git a/app/Controllers/Admin/Equipment/CodeController.php b/app/Controllers/Admin/Equipment/CodeController.php deleted file mode 100644 index e01df73..0000000 --- a/app/Controllers/Admin/Equipment/CodeController.php +++ /dev/null @@ -1,38 +0,0 @@ -content_title = lang("{$this->getService()->getClassName()}.title"); - $this->class_path .= $this->getService()->getClassName(); - $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; - // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; - - } - public function getService(): CodeService - { - if (!$this->_service) { - $this->_service = new CodeService(); - } - return $this->_service; - } - public function getHelper(): CodeHelper - { - if (!$this->_helper) { - $this->_helper = new CodeHelper(); - } - return $this->_helper; - } - //Index,FieldForm관련 -} diff --git a/app/Controllers/Admin/Customer/ServicePaymentController.php b/app/Controllers/Admin/Payment/MonthController.php similarity index 100% rename from app/Controllers/Admin/Customer/ServicePaymentController.php rename to app/Controllers/Admin/Payment/MonthController.php diff --git a/app/Controllers/Admin/Payment/OnetimeController.php b/app/Controllers/Admin/Payment/OnetimeController.php new file mode 100644 index 0000000..b85fbb5 --- /dev/null +++ b/app/Controllers/Admin/Payment/OnetimeController.php @@ -0,0 +1,190 @@ +content_title = lang("{$this->getService()->getClassName()}.title"); + $this->class_path .= $this->getService()->getClassName(); + $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; + // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; + } + public function getService(): ServicePaymentService + { + if (!$this->_service) { + $this->_service = new ServicePaymentService(); + } + return $this->_service; + } + public function getHelper(): ServicePaymentHelper + { + if (!$this->_helper) { + $this->_helper = new ServicePaymentHelper(); + } + return $this->_helper; + } + public function getClientService(): ClientService + { + if (!$this->_clientService) { + $this->_clientService = new ClientService(); + } + return $this->_clientService; + } + protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string + { + switch ($this->getAction()) { + case 'invoice': + $this->control = $this->getControlDatas(); + $this->getHelper()->setViewDatas($this->getViewDatas()); + $actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'payment'; + if ($actionTemplate) { + $view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction(); + } else { + $view_file = $this->view_path . $this->getAction(); + } + $result = view($view_file, ['viewDatas' => $this->getViewDatas()]); + break; + default: + $result = parent::getResultSuccess($message, $actionTemplate); + break; + } + return $result; + } + //Index,FieldForm관련 + //생성관련 + protected function create_process(array $formDatas): void + { + // 관리자 UID는 현재 인증된 사용자로 설정 + $formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo(); + parent::create_process($formDatas); + } + //수정관련 + protected function modify_process(mixed $entity, array $formDatas): void + { + // 관리자 UID는 현재 인증된 사용자로 설정 + $formDatas['user_uid'] = $this->getMyAuth()->getUIDByAuthInfo(); + parent::modify_process($entity, $formDatas); + } + //View 관련 + protected function view_process(mixed $entity): void + { + //LINE,IP,SERVER등 추가 FilterOption 셋팅용 + $this->setFilterOptionsByItemType(); + //부모처리 + parent::view_process($entity); + } + //List 관련 + protected function index_process(): void + { + //LINE,IP,SERVER등 추가 FilterOption 셋팅용 + $this->setFilterOptionsByItemType(); + //부모처리 + parent::index_process(); + } + //Invoice 관련 + private function getOwnersForInvoice(ClientEntity $ownerEntity): array + { + $temps = [ + 'name' => $ownerEntity->getName(), + 'total_amount' => 0, + 'services' => [] + ]; + return $temps; + } + private function getServicesForInvoice(ServiceEntity $serviceEntity): array + { + $temps = [ + 'code' => $serviceEntity->getTitle(), + 'billing_at' => $serviceEntity->getBillingAt(), + 'items' => [] + ]; + return $temps; + } + private function getItemsForInvoice(ServicePaymentEntity $entity): array + { + $partEntites = $this->getFilterFieldOption($entity->getItemType()); + // dd($partEntites); + $temps = [ + 'item_type' => SERVICE_ITEM_TYPES[$entity->getItemType()], + 'item_uid' => $partEntites[$entity->getItemUid()]->getTitle(), + 'amount' => $entity->getAmount() + ]; + return $temps; + } + private function invoice_process(): void + { + //변경할 UIDS + $uids = $this->request->getPost('batchjob_uids[]'); + if (!is_array($uids) || !count($uids)) { + throw new \Exception("청구서에 적용될 리스트를 선택하셔야합니다."); + } + $owner_pk = false; + $entities = []; + foreach ($uids as $uid) { + //기존 Entity 가져오기 + $entity = $this->getService()->getEntity($uid); + if (!$entity) { + LogCollector::debug(__METHOD__ . "에서 {$uid}에 대한 결제정보를 찾을수 없습니다."); + } + //entities에 관리자 설정 + $ownerEntity = $this->getClientService()->getEntity($entity->getOwnerUID()); + if (!$ownerEntity) { + LogCollector::debug(__METHOD__ . "에서 {$entity->getOwnerUID()}에 대한 관라자정보를 찾을수 없습니다."); + } + if ($ownerEntity->getPK() !== $owner_pk) { + if (!array_key_exists($ownerEntity->getPK(), $entities)) { + $entities[$ownerEntity->getPK()] = $this->getOwnersForInvoice($ownerEntity); + } + $owner_pk = $ownerEntity->getPK(); + } + //entities에 서비스 설정 + $serviceEntity = $this->getServiceService()->getEntity($entity->getServiceUid()); + if (!$serviceEntity) { + LogCollector::debug(__METHOD__ . "에서 {$entity->getServiceUid()}에 대한 서비스정보를 찾을수 없습니다."); + } + if (!array_key_exists($serviceEntity->getPK(), $entities[$owner_pk]['services'])) { + $entities[$owner_pk]['services'][$serviceEntity->getPK()] = $this->getServicesForInvoice($serviceEntity); + } + //entities에 서비스 Item Type,Item 설정 + if (!array_key_exists($entity->getPK(), $entities[$owner_pk]['services'][$serviceEntity->getPK()])) { + $entities[$owner_pk]['services'][$serviceEntity->getPK()]['items'][] = $this->getItemsForInvoice($entity); + } + //entities에 총 결제금액 설정 + $entities[$ownerEntity->getPK()]['total_amount'] += $entity->getAmount(); + } + // dd($entities); + $this->entities = $entities; + } + public function invoice(): RedirectResponse|string + { + try { + $this->initAction(__FUNCTION__); + //LINE,IP,SERVER등 추가 FilterOption 셋팅용 + foreach (SERVICE_ITEM_TYPES as $item_type => $label) { + $this->setFilterFieldOption($item_type, $this->getServiceService()->getFilterOptionsByItemType($item_type)); + } + $this->invoice_process(); + return $this->getResultSuccess(); + } catch (\Exception $e) { + return $this->getResultFail($e->getMessage()); + } + } +} diff --git a/app/Database/dbmsv2.vuerd.json b/app/Database/dbmsv2.vuerd.json index a7c68f7..0548982 100644 --- a/app/Database/dbmsv2.vuerd.json +++ b/app/Database/dbmsv2.vuerd.json @@ -4,13 +4,13 @@ "settings": { "width": 3000, "height": 3000, - "scrollTop": -1300.3994, - "scrollLeft": -768.1905, - "zoomLevel": 0.91, + "scrollTop": -417.4401, + "scrollLeft": -1101, + "zoomLevel": 0.73, "show": 511, "database": 4, "databaseName": "", - "canvasType": "@dineug/erd-editor/builtin-schema-sql", + "canvasType": "ERD", "language": 1, "tableNameCase": 4, "columnNameCase": 2, @@ -40,40 +40,38 @@ "ZLEpY5EjuZV21718zf-Y1", "jO40Ej5EXImXnadoJo9bn", "gsa0XtQZQgrJ8ZXy8VQVg", - "RTq5rHQupiXXJPXqpN8K5", "QCNA57Pi6A9dJDgybxS5v", "B8haiEbPc1lRBWTv1g25G", "IsMoJXzvtuoOFFt93qS0w", - "1IgC97w7iAToPDVjmA6cP", - "MgyqOOvja_MGR3f4xNT8T" + "MgyqOOvja_MGR3f4xNT8T", + "SEgsi7mbM-56Rsx5-qj8K", + "8GYAVBvZGaMFeq3QuXk_B", + "PdXX5ghGi8ZK89G9OjtnQ" ], "relationshipIds": [ - "gAVYXWnBSnCw-0ieO4Mil", - "4BDt10BeeryoN0ZdEHIui", "AH1dyESfueUlhcoiU6KsQ", - "anhMCXytE7rcE_drKBPWz", - "Hj5AZkoYGvM_syvnqMeOi", "cRqZmxohkCGd_FTkg1rhI", "e74Cc4zZztxyoazM_ssbu", - "R1Q9ObPbavZ376JxKDHml", "6eVY12bW8ePKGX43ni21y", - "y5sp_z99F97sAiCCdnTTW", - "nmEnsmK_piSwiEtnCHtt0", - "5r-OCo3EmmyaYBSoa3krf", - "rx_sTCXajEGKsrvHFkCOd", "wmEgQA24OTZKcWDKf8tSK", "Pq5Jn2IXFEMjYVBvdAwWg", "fp3dQLQSGF28FCgdXZVk1", - "T0xgwi6PW29Li2aIEF6Sz", - "6gutySOOqGWkINveSAXkF", - "a7L1HKwTJKRJDSfPZsgUw", - "NLUQsRNE-NSQqHbMHXhPR", - "aVVc2BUhfFz1n8P4q9Ddy", - "jJ3o4rL5L7hoxF1an89Rv", - "YG90_d6_uD4ie3S1Lct0e", "k2INu4Ko-5SzpTwqOAnY7", - "R9Ge21GXokM9ZgvAyGJ4W", - "Gn7pH20-lzXXtz5jMqRib" + "igy5Ns2bjd79UocDnODgu", + "-6P0QeZZJQRJ5_ZQjzb1M", + "5p6IeLChVoXSw9jrqw-QW", + "e57qOlaGNqgfNVFBAoaDa", + "yNXavIEUyRz9ijpnoapzg", + "-innuV4-s0XLM5nzcY6qH", + "29R_28dluuNshr0cYiWmK", + "NMZvzyFkfEHAC1ky3ra_L", + "K6ujfXDMBCmHruD8sWvXo", + "VroEhP44BVBCHx9WyFjhm", + "2UJ97eZArC3FeTkEjPTUl", + "uTwhO_6djzNzMFo8rwOSQ", + "FjAORncWifI_a1aI6e0LJ", + "qVSQf-uiaof7exFrBC68_", + "TkraffhuWi06www9bNecX" ], "indexIds": [], "memoIds": [] @@ -110,15 +108,15 @@ "w_EuwbTwtLEPAgYjS1aYq" ], "ui": { - "x": 1221.6512, - "y": 447.2874, + "x": 1128.6512, + "y": 85.2874, "zIndex": 2, "widthName": 60, "widthComment": 62, "color": "" }, "meta": { - "updateAt": 1755217978373, + "updateAt": 1755480211458, "createAt": 1745819764136 } }, @@ -127,9 +125,8 @@ "name": "clientinfo", "comment": "고객정보", "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx", - "hrPg0uHAdEjamOj--BVzO", "n7IyDCZLDqfEo49XRYtYR", + "hrPg0uHAdEjamOj--BVzO", "z-q_Ah0sghd0nR7VcCTLX", "n61V7aSxLmcIeQqsYgAEE", "5hP5ZiQGWDGf4HJrOiFb6", @@ -144,9 +141,9 @@ "JEk5AASiK6MpT9QBRWjMX" ], "seqColumnIds": [ + "n7IyDCZLDqfEo49XRYtYR", "_AcWUYKzNJd-V0fRHq8Cx", "hrPg0uHAdEjamOj--BVzO", - "n7IyDCZLDqfEo49XRYtYR", "z-q_Ah0sghd0nR7VcCTLX", "FFviMCKUUVRlcZdx-Uqiq", "n61V7aSxLmcIeQqsYgAEE", @@ -168,15 +165,15 @@ "JEk5AASiK6MpT9QBRWjMX" ], "ui": { - "x": 885.6138, - "y": 1017.1133, + "x": 1285.73, + "y": 468.8448, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755231517018, + "updateAt": 1755483290342, "createAt": 1745819764137 } }, @@ -186,8 +183,8 @@ "comment": "예치금계좌", "columnIds": [ "ia3c6jjHvbTOX0cX4gbJl", - "nPYun5WHoy8uroXUBiqh8", "10Ii30CtjhJA-dPVnX2Z-", + "7e7kPIVKM4VrUWTZADe-5", "jOM-6WvS4B5lGVJuNRQ9L", "tmkHXMc6fdNicHeig7nss", "foBGnViYEjNlWIAhXeuLw", @@ -202,6 +199,7 @@ "ia3c6jjHvbTOX0cX4gbJl", "nPYun5WHoy8uroXUBiqh8", "10Ii30CtjhJA-dPVnX2Z-", + "7e7kPIVKM4VrUWTZADe-5", "jOM-6WvS4B5lGVJuNRQ9L", "tmkHXMc6fdNicHeig7nss", "foBGnViYEjNlWIAhXeuLw", @@ -217,15 +215,15 @@ "_nE1H-douje4Wo8mZ4XUG" ], "ui": { - "x": 138.2029, - "y": 489.901, + "x": 75.5444, + "y": 462.2669, "zIndex": 2, "widthName": 64, "widthComment": 62, "color": "" }, "meta": { - "updateAt": 1755220454437, + "updateAt": 1755483450469, "createAt": 1745819764137 } }, @@ -234,16 +232,11 @@ "name": "serverinfo", "comment": "서버정보", "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1", - "imjqFzOrKxNF9-aH171pe", - "EKrwHre6e66jqAMnAW_KR", "34psXzS7RLX0sWXZyDGGf", - "-AKzQ_bVWf3IcwlXB5pxu", - "RHpWknapRWyOzjFyHP8dB", + "3fZMQ9qB1DO8y44eJRKdt", "9F6QpQqxeEggZ0FHM81O1", - "54iuIW4knok06vP4JH-oN", "tsDqk1dzwzUtvBzpjmarJ", - "5LbBaqufhFMN2X15ksCbZ", + "gf3QFUo-9exbygXX3-0H0", "bh-W1plz0vCW2rURDnfDR", "hmZlcR-Pw2C_ife1zzo5o", "tNaVOzr3vywCXiQdfUJWq", @@ -263,12 +256,16 @@ "qqj-irJP2zNacGj8PMN6E", "BAzGsBrmLOwZGYLchLmyP", "imjqFzOrKxNF9-aH171pe", + "PPYMa0hTpupMnPEWZEVp6", + "SlbGqJXf-rNePjMEvRIsr", + "34psXzS7RLX0sWXZyDGGf", + "1R3FQnBR2tpSdfkj3jipU", + "3fZMQ9qB1DO8y44eJRKdt", + "9F6QpQqxeEggZ0FHM81O1", "EKrwHre6e66jqAMnAW_KR", "Z2CriPHsk4OV0AD1jAhM4", - "34psXzS7RLX0sWXZyDGGf", "-AKzQ_bVWf3IcwlXB5pxu", "RHpWknapRWyOzjFyHP8dB", - "9F6QpQqxeEggZ0FHM81O1", "T1h0jM57gCedXd5wWL30b", "6e3HgOnQwPQRS7r37pAK6", "Wks-dXdsHSF-EATUWnxzY", @@ -277,11 +274,14 @@ "tUEipJ29hmJw6PGIvTRe4", "70VrVnWpv5vcn3MTsTHC4", "pk0lHPEZYM6rlwgzTailz", - "54iuIW4knok06vP4JH-oN", + "HQ-iU3MdyC2D_YL9zwlge", + "_tEXcK3IBB9LKURnEmMsL", "tsDqk1dzwzUtvBzpjmarJ", + "54iuIW4knok06vP4JH-oN", "o0KMVEBZAnWRSsxx10HmA", "Djbw3B6xZWKAvwJDto9xl", "5LbBaqufhFMN2X15ksCbZ", + "gf3QFUo-9exbygXX3-0H0", "bh-W1plz0vCW2rURDnfDR", "hmZlcR-Pw2C_ife1zzo5o", "tNaVOzr3vywCXiQdfUJWq", @@ -289,31 +289,32 @@ "yjaoHnd4nFaa-3REXvRfN", "AlvBDBVGfLoVcNjd__kFZ", "X-NZLAAPpv21iBJTwymIG", + "DBfXQ1o8_Uwy01-FyjWz0", "jS1NhvKaeU387UBp3bimh", "qXFG69sPGJzxsDIvsjbzq", "2BpJlB3v7ot1sPaYqGJXb", "aY2pn1J3VHF_qV5XFM_zf" ], "ui": { - "x": 1489.4231, - "y": 1918.0162, + "x": 71.5172, + "y": 1835.6074, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755233688801, + "updateAt": 1755481695626, "createAt": 1745819764137 } }, "ZMGIWLFEswObjH2Sx0NlW": { "id": "ZMGIWLFEswObjH2Sx0NlW", "name": "partinfo", - "comment": "부품 정보", + "comment": "PART정보", "columnIds": [ "2HB01q46-mugMjuOz85YG", - "vYX0n1Zr9y259z_DMJm7s", + "TsfQy78jcI0ref_kE7OV9", "1q8jG5dQKdD35_XYimkSk", "HYB03rpc8hol5HFnZGtAi", "VycsOgeM1SXkcq_5XYUMS", @@ -326,6 +327,7 @@ "4acJag7ORjUzX7FP-gnhZ", "vYX0n1Zr9y259z_DMJm7s", "62_dxuBdQszhGOVZkzL9f", + "TsfQy78jcI0ref_kE7OV9", "1q8jG5dQKdD35_XYimkSk", "D7Q_X02LvMZbBtg71_hCK", "lwe5PLEmpyTipKEVSCHRJ", @@ -340,15 +342,15 @@ "xvHi50lODgZs-Ke-lH95g" ], "ui": { - "x": 132.1659, - "y": 2093.601, + "x": 2167.0921, + "y": 2186.3344, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755235169941, + "updateAt": 1755488508009, "createAt": 1745819764138 } }, @@ -389,15 +391,15 @@ "7fxNxBlgc3vf2pjCjoOHE" ], "ui": { - "x": 144.4147, - "y": 1521.6983, + "x": 2163.1753, + "y": 1554.2063, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755219311277, + "updateAt": 1755486890683, "createAt": 1745819764138 } }, @@ -408,9 +410,7 @@ "columnIds": [ "Id0h8QbOdlhPj9P1zTm5o", "f7_MGvRjkwL1xkCWrAgDR", - "nIeV_YUzCUo3ZwJEtefBV", - "ZPFSJbnNsml6U3UKwtSVX", - "7j-v8422Rzf3ZoLGCDJGo", + "6i-Ag5fvYugIDFg9tH3HA", "6qd6rcTkraI_AbHcVbp6T", "dIY_dF7qvUpTGyBwlnHjG", "no6h0YVHA0VJbeQ_StpfM", @@ -431,6 +431,10 @@ "SaTapKkBzVUluKTG_fsBy", "lhQ3PpSdLxVcH5LvI4DNx", "OGLPunD1CL5Yx1Onabetn", + "k89CgIzT1rfGpbRQYrMMV", + "RUTBvn2-51hfNG7Adcbh-", + "sWwdum3AkxFncLEFPN1CM", + "6i-Ag5fvYugIDFg9tH3HA", "6qd6rcTkraI_AbHcVbp6T", "0ONL4QLQRyZ32MBJ7TN7u", "e6eWKMFnpXI-rPJZ_9tBt", @@ -443,15 +447,15 @@ "CX9ODlVw-gFnxgfMJ1JyV" ], "ui": { - "x": 827.863, - "y": 1768.4333, + "x": 1039.1227, + "y": 1691.0937, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755233311438, + "updateAt": 1755486895129, "createAt": 1745819764138 } }, @@ -461,8 +465,8 @@ "comment": "쿠폰정보", "columnIds": [ "9gNKhuq9UnDKyb9KuZ7cY", - "35XbdvgOzpNdasPnMcbkx", "J1dtvqmAyJxT6QtuZq7IA", + "YdLa5geill88c3UM5a_YR", "ALRvTZjYrv4K1ltFn30Mn", "TFkQ1ID6ShcMqf9wLGEP1", "DSAUgD7rG7Lzm2-jVWKA3", @@ -476,6 +480,7 @@ "G3KLXJzl6S28Y8pN8hfy2", "35XbdvgOzpNdasPnMcbkx", "J1dtvqmAyJxT6QtuZq7IA", + "YdLa5geill88c3UM5a_YR", "ALRvTZjYrv4K1ltFn30Mn", "3EFy0j6PlKaha31ajJSsZ", "3jtklRjnxzZANo69T6vWW", @@ -493,15 +498,15 @@ "j6eibwPFvw27a38mAO3K_" ], "ui": { - "x": 145.1292, - "y": 864.2412, + "x": 78.7146, + "y": 831.2656, "zIndex": 2, "widthName": 63, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1755231501778, + "updateAt": 1755483523017, "createAt": 1745819764140 } }, @@ -536,15 +541,15 @@ "p5PD3ipzu_rCvv50t4nub" ], "ui": { - "x": 144.3505, - "y": 219.9762, + "x": 82.3749, + "y": 189.025, "zIndex": 2, "widthName": 65, "widthComment": 81, "color": "" }, "meta": { - "updateAt": 1755218022661, + "updateAt": 1755478242945, "createAt": 1745819764142 } }, @@ -647,15 +652,14 @@ }, "RTq5rHQupiXXJPXqpN8K5": { "id": "RTq5rHQupiXXJPXqpN8K5", - "name": "csinfo", - "comment": "CS정보(한서버 여러개 앞단 등록)", + "name": "kcsinfo", + "comment": "KCS정보(한서버 여러개 앞단 등록가능)", "columnIds": [ "zBz4vBOZSIA8vKmfqXckO", - "W0dMiAswDCER2eGLQpP7d", - "jGUbjneRTg2hPnWwlTUAn", + "9CjuC803WcessEwff6HMj", "YqInlreLnga0pOXtaP8GF", - "ixoWg1kPLrUYL069d75Kq", "BvHyGw9Xf_gz7bEkZhLbk", + "ixoWg1kPLrUYL069d75Kq", "0STHSEXiceoCa6a7jGXV5", "4AO9IuaGsrm-wSePrQAYY", "zIIJ6e2MIX8C_LSGLb2EH", @@ -671,12 +675,13 @@ "4SpGL1ZpvgIwey1PY4_3e", "W0dMiAswDCER2eGLQpP7d", "jGUbjneRTg2hPnWwlTUAn", + "9CjuC803WcessEwff6HMj", "YqInlreLnga0pOXtaP8GF", + "BvHyGw9Xf_gz7bEkZhLbk", "VYbvSvXIEQPQtx6GL-tdv", "ixoWg1kPLrUYL069d75Kq", "3JKv9gwi5ig1yLoBJsLC9", "tTTzHZFvoMJ0RzAexXY2L", - "BvHyGw9Xf_gz7bEkZhLbk", "0STHSEXiceoCa6a7jGXV5", "4AO9IuaGsrm-wSePrQAYY", "j2hkudsfMKexNL6P7SM8R", @@ -688,15 +693,15 @@ "HnuAnnvexWFN1rg6JM5GF" ], "ui": { - "x": 2421.5258, - "y": 1993.372, + "x": 91.7905, + "y": 2275.8575, "zIndex": 796, "widthName": 60, - "widthComment": 177, + "widthComment": 207, "color": "" }, "meta": { - "updateAt": 1755233530351, + "updateAt": 1755475299941, "createAt": 1747374666215 } }, @@ -832,8 +837,8 @@ "columnIds": [ "GMPyqxaroK2OjQZnoCRwn", "s1Az-lXWK0NlVQqFEEK8o", - "ho6JZ9VdUHm5R5xx2hf8Z", - "ZWV8iXrgQovfYTm32QGbZ", + "QwfRq6xU7Vy-QoenynjXR", + "LRN5qjIRZ18UOhqFbBLuo", "FhnUrn_dOrdhaBe_P3ty-", "T8UART66GUy4LWDk0yUxl", "HBa89vDezYXUOSEXJ5nl7", @@ -855,6 +860,8 @@ "4O3Qit9vqva-izvWHJLTD", "wMsY1BXM9mKftyYax3Psx", "N-ESuxOk84rEdS2SzpVcx", + "QwfRq6xU7Vy-QoenynjXR", + "LRN5qjIRZ18UOhqFbBLuo", "FhnUrn_dOrdhaBe_P3ty-", "T8UART66GUy4LWDk0yUxl", "HBa89vDezYXUOSEXJ5nl7", @@ -865,15 +872,15 @@ "n9ZWAQ9754sZ3MM4IxCAA" ], "ui": { - "x": 2259.4614, - "y": 690.2114, + "x": 2122.464, + "y": 225.9575, "zIndex": 2278, "widthName": 88, "widthComment": 74, "color": "" }, "meta": { - "updateAt": 1755231681289, + "updateAt": 1755483363450, "createAt": 1748484896313 } }, @@ -882,14 +889,15 @@ "name": "serviceinfo", "comment": "서비스정보", "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb", - "Vf3bNvvEPfu1zCs4rcHTU", - "NzxkmndrTbH7xb6fbnGV7", - "6ffdAfFg_xnuxULuBa6fP", "1ZM86qoxmCcoKnqOpE2oj", + "Vf3bNvvEPfu1zCs4rcHTU", + "0LanT5cVJX_uBb0Foh2NM", + "50a08OnwVq9SXAXX5pq6s", + "ptLUIGfIqm89XGRz_V2ww", "hQ5EOPiUpDbVpWQwawtw4", "9o7wfPp7WK2nZoxkDZ9Y1", "ualEjhI_OuUVdgH7dSzma", + "hK2hK1Xs1GrDW5nUTroIR", "dl-BGTI0AsAceG9ke4f5I", "zI5HOW0pqDcmw_02bP4xI", "INFtEt_QkptcKDjuJ3lHd", @@ -899,6 +907,7 @@ "seqColumnIds": [ "N_yJVoCN4oUEDhYqdzApb", "gJFdxac0XhNJmCQaua2XT", + "1ZM86qoxmCcoKnqOpE2oj", "Vf3bNvvEPfu1zCs4rcHTU", "NzxkmndrTbH7xb6fbnGV7", "x3mRYyi3hsNg-7bPbddVH", @@ -914,8 +923,19 @@ "O7aGU_LJxCO1NeNVWbB-J", "PLQrLZGFiiPQDZSYpU-Rc", "9DIj0WNLrGT8VCHZuRkCz", + "tjd351KGFBrDiA6-HqtdD", + "SwRy3H1j9iLeKZBaLNyuR", + "lN38gtO243yA3RiRYyPh3", + "GLfaIN6fDx3gqmEichxBM", + "uwo4oDDnBN4kfBPECG8KI", + "oUDsRmvN4I4k7BNNJR0y4", + "xlQ24QCitYSSl-z8f2vqG", + "uTP3S6LnZ80gfxyTqBFS4", "6ffdAfFg_xnuxULuBa6fP", - "1ZM86qoxmCcoKnqOpE2oj", + "hGJn_WXZRUZizXnV1q1mp", + "0LanT5cVJX_uBb0Foh2NM", + "50a08OnwVq9SXAXX5pq6s", + "ptLUIGfIqm89XGRz_V2ww", "SGWWOOHjCF81V4O5tUiJu", "uuDbJDSDQLey7Km1W9hlJ", "Gb6fmS40Q3wvnvD1HMTqR", @@ -925,6 +945,7 @@ "hQ5EOPiUpDbVpWQwawtw4", "9o7wfPp7WK2nZoxkDZ9Y1", "ualEjhI_OuUVdgH7dSzma", + "hK2hK1Xs1GrDW5nUTroIR", "dl-BGTI0AsAceG9ke4f5I", "zI5HOW0pqDcmw_02bP4xI", "INFtEt_QkptcKDjuJ3lHd", @@ -934,64 +955,18 @@ "2fzVlWt1Skh-391N_z9Ci" ], "ui": { - "x": 1560.9612, - "y": 1419.2679, + "x": 883.3029, + "y": 1018.5867, "zIndex": 2395, "widthName": 60, "widthComment": 62, "color": "" }, "meta": { - "updateAt": 1755233579060, + "updateAt": 1755488809590, "createAt": 1748485662214 } }, - "0WXrjcyXXGeoAVM2VB8s2": { - "id": "0WXrjcyXXGeoAVM2VB8s2", - "name": "serviceinfo_ipinfo", - "comment": "서비스-IP정보", - "columnIds": [ - "goZoW_pUw3n5ZLMQzWgFd", - "TerqekzImISduE6ewW1b5", - "5OcpSdnrgDxZ9eZ7_pQr9", - "lxUgXPeRzv3HQPUFzEcVJ", - "Ol6qG-agay9yBKxGBtmsr", - "jBf8G_J3BpioZN7TJnRMa", - "pxuIGPFD7CNh-bnlYRsy6", - "s1P-DaXO-MWos67f0R__G", - "XydKmlBJZHPj4xqkxUH24", - "ZNqrByaObXV1K12bzagzY" - ], - "seqColumnIds": [ - "goZoW_pUw3n5ZLMQzWgFd", - "TerqekzImISduE6ewW1b5", - "RdC0qfV8xczStXW9cLOe8", - "NfZNTuHX_ZzyIuhI7DTJE", - "Yoi_Exlpp4kDz8xumGHgZ", - "5OcpSdnrgDxZ9eZ7_pQr9", - "lxUgXPeRzv3HQPUFzEcVJ", - "Ol6qG-agay9yBKxGBtmsr", - "jBf8G_J3BpioZN7TJnRMa", - "2-eG3lx3U3LRKw_qRA9qI", - "pxuIGPFD7CNh-bnlYRsy6", - "s1P-DaXO-MWos67f0R__G", - "XydKmlBJZHPj4xqkxUH24", - "mzjynvHZERYSmrLQ3_gX7", - "ZNqrByaObXV1K12bzagzY" - ], - "ui": { - "x": 672.3957, - "y": 450.7126, - "zIndex": 2502, - "widthName": 94, - "widthComment": 77, - "color": "" - }, - "meta": { - "updateAt": 1755066031347, - "createAt": 1748507247933 - } - }, "eLGlqJ4z_woGP6CLZEuUr": { "id": "eLGlqJ4z_woGP6CLZEuUr", "name": "serviceinfo_history", @@ -1030,49 +1005,13 @@ "createAt": 1749520593335 } }, - "JoMB-mb6p6NoHpiAvjD2y": { - "id": "JoMB-mb6p6NoHpiAvjD2y", - "name": "codeinfo", - "comment": "코드표", - "columnIds": [ - "tARrLvK20dCKOxfLKu-T_", - "FMB1Pw8d7ED0xlrEAdVok", - "G1UKbUmdA5cmhcVHaqrTj", - "UIl3k8fn-kPZvaWKIMtKY", - "4TGBpdAErYnDel4snI9A5", - "Zdn5DgG2lzu4VQtI-iaxa" - ], - "seqColumnIds": [ - "WsOgvUtYTLLdAhcZUJZFQ", - "tARrLvK20dCKOxfLKu-T_", - "FMB1Pw8d7ED0xlrEAdVok", - "G1UKbUmdA5cmhcVHaqrTj", - "UIl3k8fn-kPZvaWKIMtKY", - "4TGBpdAErYnDel4snI9A5", - "Zdn5DgG2lzu4VQtI-iaxa" - ], - "ui": { - "x": 1642.5576, - "y": 1260.4865, - "zIndex": 2508, - "widthName": 60, - "widthComment": 60, - "color": "" - }, - "meta": { - "updateAt": 1754981779190, - "createAt": 1749526993705 - } - }, "IsMoJXzvtuoOFFt93qS0w": { "id": "IsMoJXzvtuoOFFt93qS0w", "name": "switchinfo", - "comment": "스위치코드표", + "comment": "스위치정보", "columnIds": [ - "dsz0no4QmTBs-HMbe_HtT", - "Tf4tatgNo1vCFMiLXWWzk", - "UqCsY6KiCJOOFtjCHoMVL", "sVypeCGZk-JXvsbwc93Rw", + "Li6TetD-ZbH9MNKGAK0im", "QEXGVSZ3sjvmtUCdgXl6_", "4Koam7FHw2_rCXSUBEQJB", "d7HNONWncNoqDRCl4-Y0N", @@ -1085,21 +1024,23 @@ "Tf4tatgNo1vCFMiLXWWzk", "UqCsY6KiCJOOFtjCHoMVL", "sVypeCGZk-JXvsbwc93Rw", + "Li6TetD-ZbH9MNKGAK0im", + "_KISusuMe8-oGta7xOaz0", "QEXGVSZ3sjvmtUCdgXl6_", "4Koam7FHw2_rCXSUBEQJB", "d7HNONWncNoqDRCl4-Y0N", "qOLH2re1rmaG-63c08R8x" ], "ui": { - "x": 2419.0055, - "y": 1652.9773, + "x": 1038.208, + "y": 1464.4414, "zIndex": 2509, "widthName": 60, - "widthComment": 74, + "widthComment": 62, "color": "" }, "meta": { - "updateAt": 1755233494699, + "updateAt": 1755488563416, "createAt": 1750898626895 } }, @@ -1259,72 +1200,18 @@ "TWXZSnHkEFHzf2bBfpTBw" ], "ui": { - "x": 792.9496, - "y": 2266.194, + "x": 1213.7455, + "y": 2134.9039, "zIndex": 3162, "widthName": 101, "widthComment": 103, "color": "" }, "meta": { - "updateAt": 1755235214937, + "updateAt": 1755246491241, "createAt": 1755070422732 } }, - "ld67cErj1fQafxxvx9u-d": { - "id": "ld67cErj1fQafxxvx9u-d", - "name": "serviceinfo_defenceinfo", - "comment": "서비스정보-방어정보", - "columnIds": [ - "S7mnF8XOxNseoDOfJPmnV", - "ZLRkW2IglxHYxi64pzqI6", - "_1psmOpMPnQkuDErcYGoN" - ], - "seqColumnIds": [ - "S7mnF8XOxNseoDOfJPmnV", - "ZLRkW2IglxHYxi64pzqI6", - "_1psmOpMPnQkuDErcYGoN" - ], - "ui": { - "x": 673.8107, - "y": 1853.5262, - "zIndex": 3211, - "widthName": 126, - "widthComment": 115, - "color": "" - }, - "meta": { - "updateAt": 1755072077481, - "createAt": 1755070669901 - } - }, - "MKzOIGduxigGV9tdWRJS9": { - "id": "MKzOIGduxigGV9tdWRJS9", - "name": "serviceinfo_domaininfo", - "comment": "서비스정보-도메인정보", - "columnIds": [ - "Jv7vMU4WjkAYYMUBkLyBy", - "BZ6k54lNYbwArAe3Lej8Z", - "YwXJqImj25hxIQbi8-ZPr" - ], - "seqColumnIds": [ - "Jv7vMU4WjkAYYMUBkLyBy", - "BZ6k54lNYbwArAe3Lej8Z", - "YwXJqImj25hxIQbi8-ZPr" - ], - "ui": { - "x": 678.6888, - "y": 2167.0469, - "zIndex": 3233, - "widthName": 124, - "widthComment": 127, - "color": "" - }, - "meta": { - "updateAt": 1755072074600, - "createAt": 1755070787935 - } - }, "O6cOy4b2iTMwpTjZJ3HXh": { "id": "O6cOy4b2iTMwpTjZJ3HXh", "name": "", @@ -1389,8 +1276,8 @@ "columnIds": [ "parhf1EFFezaBMX1G1byP", "ShxQXt7QhnuRrZToBBUCA", - "QLwujC3DidC4GxXjEZ97x", - "97RhPf67fDR-y6rT7cxfj", + "VBy1PXlflYSQGeLRXkD3l", + "VUPZdWS7fM1J2QstRq4KR", "Usl5cwf8eWLZ5xvOPGIYK", "ztk8SgBeyUa4ePIkwBb0K", "43NZ-Lcb3JPPlzkptYido", @@ -1407,6 +1294,8 @@ "ShxQXt7QhnuRrZToBBUCA", "QLwujC3DidC4GxXjEZ97x", "97RhPf67fDR-y6rT7cxfj", + "VBy1PXlflYSQGeLRXkD3l", + "VUPZdWS7fM1J2QstRq4KR", "Usl5cwf8eWLZ5xvOPGIYK", "ztk8SgBeyUa4ePIkwBb0K", "lKkqk05cigho4HNtFoVkA", @@ -1418,17 +1307,419 @@ "4WVshk8-9asWSnI26Uvp7" ], "ui": { - "x": 2268.0278, - "y": 1169, + "x": 2134.0658, + "y": 642.3421, "zIndex": 3908, "widthName": 97, "widthComment": 86, "color": "" }, "meta": { - "updateAt": 1755231676891, + "updateAt": 1755483389664, "createAt": 1755230026191 } + }, + "SEgsi7mbM-56Rsx5-qj8K": { + "id": "SEgsi7mbM-56Rsx5-qj8K", + "name": "csinfo", + "comment": "CS정보(한서버 여러개 앞단 등록가능)", + "columnIds": [ + "PuLZie9O9warTXzmBPj3F", + "pcpeNmSmqH_DtbRLyaYv9", + "JtbW3CtPKBxnw4Fohhpci", + "2KpyBHvmw6fmuTZhPAWYf", + "qd1nPOkfMmY9uJDQBaaWq", + "40EIkWvxwjrABx7ipC0Hp", + "j21ZiY0qBmRcuzMA7ZvJ0", + "7o3L_-cg6l5TxZjdPwP7j", + "yJ7WRUZyPtVG_Sh9ytED6", + "J6Q1DK6nYtjbR0gheWzY6", + "cvcacwm-6mn2YlVM7rpSx", + "bhWMMkiKCtXDKt4cP-_sB" + ], + "seqColumnIds": [ + "PuLZie9O9warTXzmBPj3F", + "SlovGoAbswPj9pLEDGAO_", + "pcpeNmSmqH_DtbRLyaYv9", + "JtbW3CtPKBxnw4Fohhpci", + "2KpyBHvmw6fmuTZhPAWYf", + "qd1nPOkfMmY9uJDQBaaWq", + "40EIkWvxwjrABx7ipC0Hp", + "j21ZiY0qBmRcuzMA7ZvJ0", + "7o3L_-cg6l5TxZjdPwP7j", + "yJ7WRUZyPtVG_Sh9ytED6", + "J6Q1DK6nYtjbR0gheWzY6", + "cvcacwm-6mn2YlVM7rpSx", + "bhWMMkiKCtXDKt4cP-_sB", + "QntZma68vv35q1xARB2R4" + ], + "ui": { + "x": 1038.6154, + "y": 1991.4485, + "zIndex": 4045, + "widthName": 60, + "widthComment": 201, + "color": "" + }, + "meta": { + "updateAt": 1755488482892, + "createAt": 1755244574868 + } + }, + "vE9CQplxcHu3VwgfvH6Ip": { + "id": "vE9CQplxcHu3VwgfvH6Ip", + "name": "serviceinfo_ipinfo", + "comment": "서비스정보_IP정보", + "columnIds": [ + "99TKDwoGooNPfZP_xPUa3", + "ETT9KRDf_r30ZaIHw_W4Z" + ], + "seqColumnIds": [ + "WNIyu-KSNDXI_nan8SkVW", + "99TKDwoGooNPfZP_xPUa3", + "ETT9KRDf_r30ZaIHw_W4Z" + ], + "ui": { + "x": 730.7528, + "y": 1622.3665, + "zIndex": 4107, + "widthName": 94, + "widthComment": 101, + "color": "" + }, + "meta": { + "updateAt": 1755245232308, + "createAt": 1755244994254 + } + }, + "W_lPWGav23vY_3307ANtm": { + "id": "W_lPWGav23vY_3307ANtm", + "name": "raminfo", + "comment": "ram 정보", + "columnIds": [ + "0foA-8vQXe0ELhwLwMbSV", + "WZJvwg-pBjAUM8sorIi-Y", + "IBqYEEMfK4IbNQxZ4N418", + "IJawIZAZmMkSTVuhBrkR3", + "WDQfoy2S3X9-xs64-XenV", + "vJQz5jv-3kfULzv1HXzOK", + "LzAZLQ61z6BJHTRtDgxnI" + ], + "seqColumnIds": [ + "0foA-8vQXe0ELhwLwMbSV", + "WZJvwg-pBjAUM8sorIi-Y", + "IBqYEEMfK4IbNQxZ4N418", + "IJawIZAZmMkSTVuhBrkR3", + "WDQfoy2S3X9-xs64-XenV", + "vJQz5jv-3kfULzv1HXzOK", + "LzAZLQ61z6BJHTRtDgxnI" + ], + "ui": { + "x": 2233.0456, + "y": 2041.3067, + "zIndex": 4286, + "widthName": 60, + "widthComment": 60, + "color": "" + }, + "meta": { + "updateAt": 1755486235014, + "createAt": 1755246770303 + } + }, + "Dc6xDx_iwsVF1Z9ks1gPh": { + "id": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "diskinfo", + "comment": "disk 정보", + "columnIds": [ + "CxChVMNZ0-lR_Qis-x2vD", + "GlQZ0wuM69sz8cilRgsuj", + "7skl2jaDZAiBe7SGxMUVD", + "ikUqvOVsRoMc9udsOgfIN", + "x0zlz9RN7BVxFqK3Mlcx_", + "Al_CUnB2n6yl_1SHZr2Rs", + "huTW9wvZBmVx3fLL-gjIH" + ], + "seqColumnIds": [ + "CxChVMNZ0-lR_Qis-x2vD", + "WIa81CxRFY76H8y3AD0z-", + "GlQZ0wuM69sz8cilRgsuj", + "7skl2jaDZAiBe7SGxMUVD", + "ikUqvOVsRoMc9udsOgfIN", + "x0zlz9RN7BVxFqK3Mlcx_", + "Al_CUnB2n6yl_1SHZr2Rs", + "huTW9wvZBmVx3fLL-gjIH" + ], + "ui": { + "x": 2195.6054, + "y": 2266.7945, + "zIndex": 4310, + "widthName": 60, + "widthComment": 60, + "color": "" + }, + "meta": { + "updateAt": 1755486232016, + "createAt": 1755246899739 + } + }, + "y6LxJSy1rKRbGC1ANZKOG": { + "id": "y6LxJSy1rKRbGC1ANZKOG", + "name": "serverinfo_diskinfo", + "comment": "서버정보_disk정보(CASECADE)", + "columnIds": [ + "IGt5YZ4mwg87rD0wY0B0d", + "YqJDZb-w4dCpGDbMaNC0j", + "zd1xXBB6j-idV0F9EHSJ5", + "ku0-QG-D0LO42mwHraaN9", + "iQmUVpuyYRNdhSNgw_ga7", + "1QueOAWrAo33UT1SO9OVX", + "D1A4zT-QFQwN2nAJgTQZc", + "Zix606z6-IS6vYzB1EMD-" + ], + "seqColumnIds": [ + "IGt5YZ4mwg87rD0wY0B0d", + "obuByh1ZWHr1IIkvgrbWr", + "WfUhhigWFoqSS1vz3dWPx", + "YqJDZb-w4dCpGDbMaNC0j", + "zd1xXBB6j-idV0F9EHSJ5", + "ku0-QG-D0LO42mwHraaN9", + "iQmUVpuyYRNdhSNgw_ga7", + "1QueOAWrAo33UT1SO9OVX", + "D1A4zT-QFQwN2nAJgTQZc", + "Zix606z6-IS6vYzB1EMD-" + ], + "ui": { + "x": 1031.8693, + "y": 2367.2512, + "zIndex": 4339, + "widthName": 101, + "widthComment": 165, + "color": "" + }, + "meta": { + "updateAt": 1755486208257, + "createAt": 1755247070416 + } + }, + "oNuTAELQcUrUMGz3PRJIW": { + "id": "oNuTAELQcUrUMGz3PRJIW", + "name": "softwareinfo", + "comment": "소프트웨어정보", + "columnIds": [ + "bBO5EQFcFAnvhtm8mQaiG", + "IBdcZq2460JlTXRhiwYGq", + "TnZrb5ac1avyD50Sq6aGg", + "sDAhB498BjHfUoXGNQ-KR", + "suGf8mc6frTSSfc37Qybp", + "quTWRq3qTgyrorl8isUZ7", + "jR8nyg0gzSoUtAnBzogY2" + ], + "seqColumnIds": [ + "bBO5EQFcFAnvhtm8mQaiG", + "GyUE9E-9dNJyvlHKOedDq", + "IBdcZq2460JlTXRhiwYGq", + "TnZrb5ac1avyD50Sq6aGg", + "FEUPPJse8IyTjwampIJ1E", + "sDAhB498BjHfUoXGNQ-KR", + "suGf8mc6frTSSfc37Qybp", + "quTWRq3qTgyrorl8isUZ7", + "jR8nyg0gzSoUtAnBzogY2" + ], + "ui": { + "x": 2140.1897, + "y": 2564.5029, + "zIndex": 4403, + "widthName": 68, + "widthComment": 86, + "color": "" + }, + "meta": { + "updateAt": 1755486229200, + "createAt": 1755249603717 + } + }, + "8GYAVBvZGaMFeq3QuXk_B": { + "id": "8GYAVBvZGaMFeq3QuXk_B", + "name": "serverinfo_partinfo", + "comment": "서버정보_part정보(CASECADE)", + "columnIds": [ + "XXQzeCrEymboccXMZCzMo", + "mOdd3p43Qb4VStgr1nWHB", + "l2g7xess8DY86_ZOm7Ca1", + "SioEINPlR0iyL87vqa4N-", + "fqqyFASOLVXWIKq61Jce7", + "NdvFKvSSsZJ3s1sEMgXzt", + "JP9PTSr956CAPbXosCtEq", + "kDyVwSigBBYnp_F9MyRAw" + ], + "seqColumnIds": [ + "XXQzeCrEymboccXMZCzMo", + "mOdd3p43Qb4VStgr1nWHB", + "CvilrbKyyz1NnLPndNkb8", + "x23F_sFvFpqLOXzldHBFn", + "HZIdc4faH9k91g-JN-NhW", + "l2g7xess8DY86_ZOm7Ca1", + "SioEINPlR0iyL87vqa4N-", + "fqqyFASOLVXWIKq61Jce7", + "NdvFKvSSsZJ3s1sEMgXzt", + "e65_vbZsM9k8Cn5lwGjt5", + "JP9PTSr956CAPbXosCtEq", + "kDyVwSigBBYnp_F9MyRAw" + ], + "ui": { + "x": 1041.4963, + "y": 2358.8691, + "zIndex": 4514, + "widthName": 101, + "widthComment": 165, + "color": "" + }, + "meta": { + "updateAt": 1755488502651, + "createAt": 1755476453282 + } + }, + "XWDManpabF2tsIxhMejP6": { + "id": "XWDManpabF2tsIxhMejP6", + "name": "serverinfo_raminfo", + "comment": "서버정보_ram정보(CASECADE)", + "columnIds": [ + "axr_LZ3QKQBrj03ZO3tiU", + "cp6LM5PcjxQXXXksE7tCl", + "M4sylK12L-sbwc460lHp7", + "FPreHGLwBwewNsjMgrDwX", + "qjJVv2K53hwjdd2I4Q_Rn", + "4V3D7Dj65Us30_gYyP27z", + "YL4Bsc3X1OCr1HESCOy2n" + ], + "seqColumnIds": [ + "axr_LZ3QKQBrj03ZO3tiU", + "lkmohF33yJzxDKZgvYZi7", + "cp6LM5PcjxQXXXksE7tCl", + "M4sylK12L-sbwc460lHp7", + "FPreHGLwBwewNsjMgrDwX", + "qjJVv2K53hwjdd2I4Q_Rn", + "4V3D7Dj65Us30_gYyP27z", + "YL4Bsc3X1OCr1HESCOy2n" + ], + "ui": { + "x": 1024.2728, + "y": 2198.3182, + "zIndex": 4557, + "widthName": 100, + "widthComment": 164, + "color": "" + }, + "meta": { + "updateAt": 1755486446728, + "createAt": 1755476629271 + } + }, + "N9Zu0JeQXBcwLiuCqLotP": { + "id": "N9Zu0JeQXBcwLiuCqLotP", + "name": "serverinfo_softwareinfo", + "comment": "서버정보_소프트웨어정보(CASECADE)", + "columnIds": [ + "Eo358NWcEUQY3DN9QGnGQ", + "qDieUIrgCa3bzZX6OWKcC", + "nUQNtDBUrs6SFI5OPk5gp", + "9jyfXIZZ25iWYB6VB41F9", + "lw5LN_hwXHVgctjrJJC2M", + "CquZe6cpOPCDJmQC5vWe9" + ], + "seqColumnIds": [ + "Eo358NWcEUQY3DN9QGnGQ", + "qDieUIrgCa3bzZX6OWKcC", + "nUQNtDBUrs6SFI5OPk5gp", + "9jyfXIZZ25iWYB6VB41F9", + "lw5LN_hwXHVgctjrJJC2M", + "CquZe6cpOPCDJmQC5vWe9" + ], + "ui": { + "x": 1036.2266, + "y": 2605.3851, + "zIndex": 4953, + "widthName": 125, + "widthComment": 203, + "color": "" + }, + "meta": { + "updateAt": 1755486205148, + "createAt": 1755481416699 + } + }, + "Pa1u61sIGvzDtItserV5k": { + "id": "Pa1u61sIGvzDtItserV5k", + "name": "serverinfo_csinfo", + "comment": "서버정보_CS정보(CASECADE)", + "columnIds": [ + "5brFiZlY8m5rOEr0hCYfY", + "_bHdGsO8d_89L_gSiQRmG", + "wI0MMNv14UOrTsaYp1Iwo", + "3Qdm5giGdFOueOxIGpNFl", + "WiLPZ9QHd0-j2QxdylQVW", + "jkHlXxe8haR1gpCpCUKw8" + ], + "seqColumnIds": [ + "5brFiZlY8m5rOEr0hCYfY", + "_bHdGsO8d_89L_gSiQRmG", + "wI0MMNv14UOrTsaYp1Iwo", + "3Qdm5giGdFOueOxIGpNFl", + "WiLPZ9QHd0-j2QxdylQVW", + "jkHlXxe8haR1gpCpCUKw8" + ], + "ui": { + "x": 1014.3771, + "y": 1783.1031, + "zIndex": 4984, + "widthName": 90, + "widthComment": 157, + "color": "" + }, + "meta": { + "updateAt": 1755486497195, + "createAt": 1755481576880 + } + }, + "PdXX5ghGi8ZK89G9OjtnQ": { + "id": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "pointinfo", + "comment": "포인트정보", + "columnIds": [ + "JnsH90ebD8YNwM8q_Ajat", + "z86v6qGtWsrVhzZfUo_7d", + "QD0EVLU6BeTsEsNO3MAgd", + "gbR9hOeDvjnrJAxI4vLf9", + "PV9lD8qRmTrg8bMT4t3WG", + "VP7GvkqWejNbQZc-tmlr_", + "UzQFCo9RFEeqMUnp4xCp_", + "rXvRKMW6wEsJR5E6IwWZI", + "dNTE1M813GnbddEqp4esS" + ], + "seqColumnIds": [ + "JnsH90ebD8YNwM8q_Ajat", + "z86v6qGtWsrVhzZfUo_7d", + "QD0EVLU6BeTsEsNO3MAgd", + "gbR9hOeDvjnrJAxI4vLf9", + "PV9lD8qRmTrg8bMT4t3WG", + "VP7GvkqWejNbQZc-tmlr_", + "UzQFCo9RFEeqMUnp4xCp_", + "rXvRKMW6wEsJR5E6IwWZI", + "dNTE1M813GnbddEqp4esS" + ], + "ui": { + "x": 83.4191, + "y": 1125.6232, + "zIndex": 5357, + "widthName": 60, + "widthComment": 62, + "color": "" + }, + "meta": { + "updateAt": 1755488702331, + "createAt": 1755488593741 + } } }, "tableColumnEntities": { @@ -1439,7 +1730,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 7, + "options": 3, "ui": { "keys": 1, "widthName": 60, @@ -1448,7 +1739,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217078286, + "updateAt": 1755483197547, "createAt": 1745819764136 } }, @@ -1477,7 +1768,7 @@ "tableId": "Jq5Qkun2FzQhCGKANIVOZ", "name": "passwd", "comment": "", - "dataType": "VARCHAR(255)", + "dataType": "VARCHAR(100)", "default": "", "options": 8, "ui": { @@ -1488,7 +1779,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1745819764136, + "updateAt": 1755483562099, "createAt": 1745819764136 } }, @@ -1519,7 +1810,7 @@ "comment": "", "dataType": "VARCHAR(50)", "default": "", - "options": 12, + "options": 8, "ui": { "keys": 0, "widthName": 60, @@ -1528,7 +1819,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1745819764137, + "updateAt": 1755483204227, "createAt": 1745819764137 } }, @@ -1668,7 +1959,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1751945770191, + "updateAt": 1755483585742, "createAt": 1745819764137 } }, @@ -1839,7 +2130,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -1848,7 +2139,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217081679, + "updateAt": 1755483216963, "createAt": 1745819764137 } }, @@ -1861,7 +2152,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -2219,7 +2510,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -2228,7 +2519,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217099328, + "updateAt": 1755483185843, "createAt": 1745819764138 } }, @@ -2259,7 +2550,7 @@ "comment": "", "dataType": "VARCHAR(50)", "default": "", - "options": 4, + "options": 12, "ui": { "keys": 0, "widthName": 60, @@ -2268,7 +2559,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755233017887, + "updateAt": 1755488429279, "createAt": 1745819764138 } }, @@ -2379,7 +2670,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -2388,7 +2679,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217101552, + "updateAt": 1755483187930, "createAt": 1745819764138 } }, @@ -2539,7 +2830,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -2548,7 +2839,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217085182, + "updateAt": 1755483218203, "createAt": 1745819764140 } }, @@ -2597,7 +2888,7 @@ "tableId": "jO40Ej5EXImXnadoJo9bn", "name": "title", "comment": "", - "dataType": "VARCHAR(100)", + "dataType": "VARCHAR(255)", "default": "", "options": 8, "ui": { @@ -2608,7 +2899,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1745819764142, + "updateAt": 1755483541914, "createAt": 1745819764142 } }, @@ -2719,7 +3010,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 7, + "options": 3, "ui": { "keys": 1, "widthName": 60, @@ -2728,7 +3019,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217075719, + "updateAt": 1755483207923, "createAt": 1745819764142 } }, @@ -2899,7 +3190,7 @@ "comment": "", "dataType": "TIMESTAMP", "default": "CURRENT_TIMESTAMP", - "options": 13, + "options": 8, "ui": { "keys": 0, "widthName": 60, @@ -2908,7 +3199,7 @@ "widthDefault": 122 }, "meta": { - "updateAt": 1750828588219, + "updateAt": 1755483211315, "createAt": 1745819764142 } }, @@ -2939,7 +3230,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -2948,7 +3239,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217094880, + "updateAt": 1755483249621, "createAt": 1745820637059 } }, @@ -3121,7 +3412,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -4135,7 +4426,7 @@ "TFkQ1ID6ShcMqf9wLGEP1": { "id": "TFkQ1ID6ShcMqf9wLGEP1", "tableId": "jO40Ej5EXImXnadoJo9bn", - "name": "amount", + "name": "cnt", "comment": "갯수", "dataType": "INT", "default": "0", @@ -4148,7 +4439,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1747124875293, + "updateAt": 1755488638962, "createAt": 1747124839902 } }, @@ -4356,7 +4647,7 @@ "id": "YqInlreLnga0pOXtaP8GF", "tableId": "RTq5rHQupiXXJPXqpN8K5", "name": "type", - "comment": "", + "comment": "구분", "dataType": "VARCHAR(20)", "default": "", "options": 8, @@ -4368,7 +4659,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1748831188337, + "updateAt": 1755244220400, "createAt": 1747374853724 } }, @@ -4379,7 +4670,7 @@ "comment": "", "dataType": "VARCHAR(50)", "default": "", - "options": 0, + "options": 8, "ui": { "keys": 0, "widthName": 60, @@ -4388,7 +4679,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1747817155134, + "updateAt": 1755244564107, "createAt": 1747374853724 } }, @@ -4859,7 +5150,7 @@ "comment": "", "dataType": "VARCHAR(50)", "default": "", - "options": 0, + "options": 8, "ui": { "keys": 0, "widthName": 60, @@ -4868,7 +5159,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1747817197659, + "updateAt": 1755244560051, "createAt": 1747817172798 } }, @@ -5659,7 +5950,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -5668,7 +5959,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755217104624, + "updateAt": 1755483192322, "createAt": 1748485346073 } }, @@ -6141,7 +6432,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -6152,246 +6443,6 @@ "createAt": 1748506571484 } }, - "goZoW_pUw3n5ZLMQzWgFd": { - "id": "goZoW_pUw3n5ZLMQzWgFd", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507310278, - "createAt": 1748507306328 - } - }, - "NfZNTuHX_ZzyIuhI7DTJE": { - "id": "NfZNTuHX_ZzyIuhI7DTJE", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "item_type", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748831170284, - "createAt": 1748507306328 - } - }, - "Yoi_Exlpp4kDz8xumGHgZ": { - "id": "Yoi_Exlpp4kDz8xumGHgZ", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "item_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507306328, - "createAt": 1748507306328 - } - }, - "5OcpSdnrgDxZ9eZ7_pQr9": { - "id": "5OcpSdnrgDxZ9eZ7_pQr9", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "billing_cycle", - "comment": "청구방식", - "dataType": "VARCHAR(20)", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 66, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1749614882559, - "createAt": 1748507306328 - } - }, - "Ol6qG-agay9yBKxGBtmsr": { - "id": "Ol6qG-agay9yBKxGBtmsr", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "amount", - "comment": "청구금액", - "dataType": "INT", - "default": "0", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507306328, - "createAt": 1748507306328 - } - }, - "s1P-DaXO-MWos67f0R__G": { - "id": "s1P-DaXO-MWos67f0R__G", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "updated_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 62, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507306328, - "createAt": 1748507306328 - } - }, - "XydKmlBJZHPj4xqkxUH24": { - "id": "XydKmlBJZHPj4xqkxUH24", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1748507306328, - "createAt": 1748507306328 - } - }, - "TerqekzImISduE6ewW1b5": { - "id": "TerqekzImISduE6ewW1b5", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "serviceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 80, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507350686, - "createAt": 1748507336370 - } - }, - "lxUgXPeRzv3HQPUFzEcVJ": { - "id": "lxUgXPeRzv3HQPUFzEcVJ", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "price", - "comment": "소비자금액", - "dataType": "INT", - "default": "0", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 62, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507433115, - "createAt": 1748507433115 - } - }, - "jBf8G_J3BpioZN7TJnRMa": { - "id": "jBf8G_J3BpioZN7TJnRMa", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "start_at", - "comment": "시작일", - "dataType": "DATE", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748825194861, - "createAt": 1748507444792 - } - }, - "2-eG3lx3U3LRKw_qRA9qI": { - "id": "2-eG3lx3U3LRKw_qRA9qI", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "end_at", - "comment": "종료일", - "dataType": "DATE", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507444792, - "createAt": 1748507444792 - } - }, - "pxuIGPFD7CNh-bnlYRsy6": { - "id": "pxuIGPFD7CNh-bnlYRsy6", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "status", - "comment": "상태", - "dataType": "VARCHAR(20)", - "default": "'default'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1748507453540, - "createAt": 1748507453540 - } - }, "SS4ajcFiKSKICjz18GbiR": { "id": "SS4ajcFiKSKICjz18GbiR", "tableId": "RMhrLs7bOaopKmKt9YKHQ", @@ -6612,46 +6663,6 @@ "createAt": 1749008230147 } }, - "mzjynvHZERYSmrLQ3_gX7": { - "id": "mzjynvHZERYSmrLQ3_gX7", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "", - "comment": "", - "dataType": "", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1749083363362, - "createAt": 1749083357575 - } - }, - "RdC0qfV8xczStXW9cLOe8": { - "id": "RdC0qfV8xczStXW9cLOe8", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "code", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1749083398020, - "createAt": 1749083385992 - } - }, "SGWWOOHjCF81V4O5tUiJu": { "id": "SGWWOOHjCF81V4O5tUiJu", "tableId": "B8haiEbPc1lRBWTv1g25G", @@ -6872,106 +6883,6 @@ "createAt": 1749520727362 } }, - "WsOgvUtYTLLdAhcZUJZFQ": { - "id": "WsOgvUtYTLLdAhcZUJZFQ", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 15, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1749527175180, - "createAt": 1749527110532 - } - }, - "G1UKbUmdA5cmhcVHaqrTj": { - "id": "G1UKbUmdA5cmhcVHaqrTj", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "status", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'default'", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1750900710654, - "createAt": 1749527110533 - } - }, - "UIl3k8fn-kPZvaWKIMtKY": { - "id": "UIl3k8fn-kPZvaWKIMtKY", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "updated_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 62, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1749527110533, - "createAt": 1749527110533 - } - }, - "4TGBpdAErYnDel4snI9A5": { - "id": "4TGBpdAErYnDel4snI9A5", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1749527110533, - "createAt": 1749527110533 - } - }, - "FMB1Pw8d7ED0xlrEAdVok": { - "id": "FMB1Pw8d7ED0xlrEAdVok", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "code", - "comment": "서버코드", - "dataType": "VARCHAR(20)", - "default": "", - "options": 12, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1750900705990, - "createAt": 1749527129380 - } - }, "O7aGU_LJxCO1NeNVWbB-J": { "id": "O7aGU_LJxCO1NeNVWbB-J", "tableId": "B8haiEbPc1lRBWTv1g25G", @@ -7061,7 +6972,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -7412,26 +7323,6 @@ "createAt": 1750828881336 } }, - "ZNqrByaObXV1K12bzagzY": { - "id": "ZNqrByaObXV1K12bzagzY", - "tableId": "0WXrjcyXXGeoAVM2VB8s2", - "name": "deleted_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1750828899771, - "createAt": 1750828899771 - } - }, "7fxNxBlgc3vf2pjCjoOHE": { "id": "7fxNxBlgc3vf2pjCjoOHE", "tableId": "doERb3lIVeBW_D0NtNYX8", @@ -7452,26 +7343,6 @@ "createAt": 1750828925977 } }, - "Zdn5DgG2lzu4VQtI-iaxa": { - "id": "Zdn5DgG2lzu4VQtI-iaxa", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "deleted_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1750828939206, - "createAt": 1750828939206 - } - }, "Z8XCLTbsA5h402twy9vwb": { "id": "Z8XCLTbsA5h402twy9vwb", "tableId": "eLGlqJ4z_woGP6CLZEuUr", @@ -7659,16 +7530,16 @@ "comment": "switch코드", "dataType": "VARCHAR(20)", "default": "", - "options": 12, + "options": 10, "ui": { - "keys": 0, + "keys": 1, "widthName": 60, "widthComment": 60, "widthDataType": 75, "widthDefault": 60 }, "meta": { - "updateAt": 1755226241661, + "updateAt": 1755483621597, "createAt": 1750898653166 } }, @@ -7792,26 +7663,6 @@ "createAt": 1750900670007 } }, - "tARrLvK20dCKOxfLKu-T_": { - "id": "tARrLvK20dCKOxfLKu-T_", - "tableId": "JoMB-mb6p6NoHpiAvjD2y", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1750900703062, - "createAt": 1750900698112 - } - }, "PLQrLZGFiiPQDZSYpU-Rc": { "id": "PLQrLZGFiiPQDZSYpU-Rc", "tableId": "B8haiEbPc1lRBWTv1g25G", @@ -8059,16 +7910,16 @@ "comment": "고객코드", "dataType": "VARCHAR(20)", "default": "", - "options": 4, + "options": 10, "ui": { - "keys": 0, + "keys": 1, "widthName": 60, "widthComment": 60, "widthDataType": 75, "widthDefault": 60 }, "meta": { - "updateAt": 1755226315443, + "updateAt": 1755483666038, "createAt": 1751880475984 } }, @@ -8079,16 +7930,16 @@ "comment": "서비스코드", "dataType": "VARCHAR(20)", "default": "", - "options": 12, + "options": 10, "ui": { - "keys": 0, + "keys": 1, "widthName": 60, "widthComment": 62, "widthDataType": 75, "widthDefault": 60 }, "meta": { - "updateAt": 1751959588755, + "updateAt": 1755483656473, "createAt": 1751959574914 } }, @@ -8099,16 +7950,16 @@ "comment": "서버코드", "dataType": "VARCHAR(20)", "default": "", - "options": 12, + "options": 10, "ui": { - "keys": 0, + "keys": 1, "widthName": 60, "widthComment": 60, "widthDataType": 75, "widthDefault": 60 }, "meta": { - "updateAt": 1755218581391, + "updateAt": 1755486588316, "createAt": 1755062321357 } }, @@ -8161,7 +8012,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -8501,7 +8352,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 68, "widthComment": 60, "widthDataType": 60, @@ -8532,126 +8383,6 @@ "createAt": 1755070650899 } }, - "ZLRkW2IglxHYxi64pzqI6": { - "id": "ZLRkW2IglxHYxi64pzqI6", - "tableId": "ld67cErj1fQafxxvx9u-d", - "name": "serviceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 12, - "ui": { - "keys": 0, - "widthName": 80, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755071337829, - "createAt": 1755070727257 - } - }, - "_1psmOpMPnQkuDErcYGoN": { - "id": "_1psmOpMPnQkuDErcYGoN", - "tableId": "ld67cErj1fQafxxvx9u-d", - "name": "defenceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 86, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755070760641, - "createAt": 1755070740084 - } - }, - "S7mnF8XOxNseoDOfJPmnV": { - "id": "S7mnF8XOxNseoDOfJPmnV", - "tableId": "ld67cErj1fQafxxvx9u-d", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755070782958, - "createAt": 1755070779054 - } - }, - "BZ6k54lNYbwArAe3Lej8Z": { - "id": "BZ6k54lNYbwArAe3Lej8Z", - "tableId": "MKzOIGduxigGV9tdWRJS9", - "name": "serviceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 80, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755070891628, - "createAt": 1755070878615 - } - }, - "YwXJqImj25hxIQbi8-ZPr": { - "id": "YwXJqImj25hxIQbi8-ZPr", - "tableId": "MKzOIGduxigGV9tdWRJS9", - "name": "domaininfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 84, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755070915147, - "createAt": 1755070900546 - } - }, - "Jv7vMU4WjkAYYMUBkLyBy": { - "id": "Jv7vMU4WjkAYYMUBkLyBy", - "tableId": "MKzOIGduxigGV9tdWRJS9", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1755070924595, - "createAt": 1755070921173 - } - }, "r-ChBCfMfELfZfwYOmkzx": { "id": "r-ChBCfMfELfZfwYOmkzx", "tableId": "GRBrbb1hqwKSRMfod3I7U", @@ -8721,7 +8452,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 76, "widthComment": 60, "widthDataType": 60, @@ -8781,7 +8512,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 76, "widthComment": 60, "widthDataType": 60, @@ -8801,7 +8532,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 76, "widthComment": 60, "widthDataType": 60, @@ -9028,7 +8759,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755229775449, + "updateAt": 1755242912676, "createAt": 1755160066647 } }, @@ -9095,20 +8826,20 @@ "6ffdAfFg_xnuxULuBa6fP": { "id": "6ffdAfFg_xnuxULuBa6fP", "tableId": "B8haiEbPc1lRBWTv1g25G", - "name": "clientinfo_name", + "name": "search_client", "comment": "사용자명(검색용)", - "dataType": "VARCHAR(255)", + "dataType": "VARCHAR(50)", "default": "", "options": 8, "ui": { "keys": 0, - "widthName": 85, + "widthName": 69, "widthComment": 93, - "widthDataType": 81, + "widthDataType": 75, "widthDefault": 60 }, "meta": { - "updateAt": 1755160645390, + "updateAt": 1755478741643, "createAt": 1755160565969 } }, @@ -9181,7 +8912,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -9261,7 +8992,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -9281,7 +9012,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -9301,7 +9032,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -9335,20 +9066,20 @@ "jOM-6WvS4B5lGVJuNRQ9L": { "id": "jOM-6WvS4B5lGVJuNRQ9L", "tableId": "GDEF0_WuOpaYtsZxjn2zM", - "name": "bankinfo_uid", - "comment": "은행정보", + "name": "bank", + "comment": "은행", "dataType": "INT", "default": "", "options": 8, "ui": { "keys": 0, - "widthName": 70, + "widthName": 60, "widthComment": 60, "widthDataType": 60, "widthDefault": 60 }, "meta": { - "updateAt": 1755220379126, + "updateAt": 1755483493484, "createAt": 1755220311656 } }, @@ -9361,7 +9092,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 76, "widthComment": 60, "widthDataType": 60, @@ -9659,7 +9390,7 @@ "comment": "", "dataType": "INT", "default": "", - "options": 15, + "options": 11, "ui": { "keys": 1, "widthName": 60, @@ -9668,7 +9399,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755230072824, + "updateAt": 1755483189843, "createAt": 1755230069501 } }, @@ -9881,7 +9612,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -9901,7 +9632,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -10068,7 +9799,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1755231995045, + "updateAt": 1755480936400, "createAt": 1755231995045 } }, @@ -10141,7 +9872,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -10161,7 +9892,7 @@ "default": "", "options": 0, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 62, "widthDataType": 60, @@ -10191,93 +9922,2549 @@ "updateAt": 1755234983842, "createAt": 1755234944667 } + }, + "ptLUIGfIqm89XGRz_V2ww": { + "id": "ptLUIGfIqm89XGRz_V2ww", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "location", + "comment": "지역코드(chiba,tokyo,3center)", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 160, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755478773346, + "createAt": 1755237587825 + } + }, + "50a08OnwVq9SXAXX5pq6s": { + "id": "50a08OnwVq9SXAXX5pq6s", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "type", + "comment": "서비스형식((일발, 방어,전용,VPN,대체,,테스트,자사,코로케이션)", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 336, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755240220489, + "createAt": 1755240220488 + } + }, + "SwRy3H1j9iLeKZBaLNyuR": { + "id": "SwRy3H1j9iLeKZBaLNyuR", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "serverinfo_uid", + "comment": "서버정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755243399643, + "createAt": 1755243363119 + } + }, + "lN38gtO243yA3RiRYyPh3": { + "id": "lN38gtO243yA3RiRYyPh3", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "ipinfo_uid", + "comment": "IP정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244681597, + "createAt": 1755243720223 + } + }, + "tjd351KGFBrDiA6-HqtdD": { + "id": "tjd351KGFBrDiA6-HqtdD", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "switch_uid", + "comment": "스위치정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755243895112, + "createAt": 1755243872669 + } + }, + "PuLZie9O9warTXzmBPj3F": { + "id": "PuLZie9O9warTXzmBPj3F", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483153097, + "createAt": 1755244624880 + } + }, + "JtbW3CtPKBxnw4Fohhpci": { + "id": "JtbW3CtPKBxnw4Fohhpci", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "type", + "comment": "구분(KCS,VCS)", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 77, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477070922, + "createAt": 1755244624880 + } + }, + "qd1nPOkfMmY9uJDQBaaWq": { + "id": "qd1nPOkfMmY9uJDQBaaWq", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "accountid", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477085978, + "createAt": 1755244624880 + } + }, + "2KpyBHvmw6fmuTZhPAWYf": { + "id": "2KpyBHvmw6fmuTZhPAWYf", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "ip", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 12, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483160217, + "createAt": 1755244624880 + } + }, + "40EIkWvxwjrABx7ipC0Hp": { + "id": "40EIkWvxwjrABx7ipC0Hp", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "domain", + "comment": "", + "dataType": "VARCHAR(100)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 81, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624880, + "createAt": 1755244624880 + } + }, + "j21ZiY0qBmRcuzMA7ZvJ0": { + "id": "j21ZiY0qBmRcuzMA7ZvJ0", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "price", + "comment": "기본금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624880, + "createAt": 1755244624880 + } + }, + "7o3L_-cg6l5TxZjdPwP7j": { + "id": "7o3L_-cg6l5TxZjdPwP7j", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624881, + "createAt": 1755244624880 + } + }, + "yJ7WRUZyPtVG_Sh9ytED6": { + "id": "yJ7WRUZyPtVG_Sh9ytED6", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "status", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'default'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624881, + "createAt": 1755244624881 + } + }, + "J6Q1DK6nYtjbR0gheWzY6": { + "id": "J6Q1DK6nYtjbR0gheWzY6", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624881, + "createAt": 1755244624881 + } + }, + "cvcacwm-6mn2YlVM7rpSx": { + "id": "cvcacwm-6mn2YlVM7rpSx", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755244624881, + "createAt": 1755244624881 + } + }, + "bhWMMkiKCtXDKt4cP-_sB": { + "id": "bhWMMkiKCtXDKt4cP-_sB", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "deleted_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244624881, + "createAt": 1755244624881 + } + }, + "GLfaIN6fDx3gqmEichxBM": { + "id": "GLfaIN6fDx3gqmEichxBM", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "kcsinfo_uid", + "comment": "KCS정보", + "dataType": "INT", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 61, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244675981, + "createAt": 1755244650005 + } + }, + "uwo4oDDnBN4kfBPECG8KI": { + "id": "uwo4oDDnBN4kfBPECG8KI", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "vcssinfo_uid", + "comment": "VCS정보", + "dataType": "INT", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 66, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755244729479, + "createAt": 1755244696995 + } + }, + "WNIyu-KSNDXI_nan8SkVW": { + "id": "WNIyu-KSNDXI_nan8SkVW", + "tableId": "vE9CQplxcHu3VwgfvH6Ip", + "name": "", + "comment": "", + "dataType": "", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245034752, + "createAt": 1755245034752 + } + }, + "99TKDwoGooNPfZP_xPUa3": { + "id": "99TKDwoGooNPfZP_xPUa3", + "tableId": "vE9CQplxcHu3VwgfvH6Ip", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 15, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245041272, + "createAt": 1755245038663 + } + }, + "ETT9KRDf_r30ZaIHw_W4Z": { + "id": "ETT9KRDf_r30ZaIHw_W4Z", + "tableId": "vE9CQplxcHu3VwgfvH6Ip", + "name": "serviceinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245238779, + "createAt": 1755245232308 + } + }, + "hK2hK1Xs1GrDW5nUTroIR": { + "id": "hK2hK1Xs1GrDW5nUTroIR", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "amount", + "comment": "서비스금액(IP+월별ITEM+CS의 서비스금액의 총합금액)", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 298, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245428350, + "createAt": 1755245428349 + } + }, + "xlQ24QCitYSSl-z8f2vqG": { + "id": "xlQ24QCitYSSl-z8f2vqG", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "switchinfo_uid", + "comment": "스위치정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 77, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245621549, + "createAt": 1755245596233 + } + }, + "uTP3S6LnZ80gfxyTqBFS4": { + "id": "uTP3S6LnZ80gfxyTqBFS4", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "serverinfo_uid", + "comment": "서버정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245665137, + "createAt": 1755245649050 + } + }, + "_KISusuMe8-oGta7xOaz0": { + "id": "_KISusuMe8-oGta7xOaz0", + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "name": "price", + "comment": "기본금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755245710278, + "createAt": 1755245710278 + } + }, + "k89CgIzT1rfGpbRQYrMMV": { + "id": "k89CgIzT1rfGpbRQYrMMV", + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "name": "serviceinfo_uid", + "comment": "서비스정보", + "dataType": "INT", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477019129, + "createAt": 1755245813502 + } + }, + "SlovGoAbswPj9pLEDGAO_": { + "id": "SlovGoAbswPj9pLEDGAO_", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "serviceinfo_uid", + "comment": "서비스정보", + "dataType": "INT", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476998401, + "createAt": 1755246043287 + } + }, + "9CjuC803WcessEwff6HMj": { + "id": "9CjuC803WcessEwff6HMj", + "tableId": "RTq5rHQupiXXJPXqpN8K5", + "name": "serviceinfo_uid", + "comment": "서비스정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246103758, + "createAt": 1755246082072 + } + }, + "PPYMa0hTpupMnPEWZEVp6": { + "id": "PPYMa0hTpupMnPEWZEVp6", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "cpuinfo_uid", + "comment": "cpu 정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 64, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246672873, + "createAt": 1755246555369 + } + }, + "HQ-iU3MdyC2D_YL9zwlge": { + "id": "HQ-iU3MdyC2D_YL9zwlge", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "cpu_cnt", + "comment": "cpu 갯수", + "dataType": "TINYINT", + "default": "2", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247032327, + "createAt": 1755246712726 + } + }, + "0foA-8vQXe0ELhwLwMbSV": { + "id": "0foA-8vQXe0ELhwLwMbSV", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483183482, + "createAt": 1755246822455 + } + }, + "WZJvwg-pBjAUM8sorIi-Y": { + "id": "WZJvwg-pBjAUM8sorIi-Y", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "title", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 4, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246822455, + "createAt": 1755246822455 + } + }, + "IBqYEEMfK4IbNQxZ4N418": { + "id": "IBqYEEMfK4IbNQxZ4N418", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "price", + "comment": "기본금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246822455, + "createAt": 1755246822455 + } + }, + "IJawIZAZmMkSTVuhBrkR3": { + "id": "IJawIZAZmMkSTVuhBrkR3", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "status", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'default'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246822456, + "createAt": 1755246822455 + } + }, + "WDQfoy2S3X9-xs64-XenV": { + "id": "WDQfoy2S3X9-xs64-XenV", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246822456, + "createAt": 1755246822456 + } + }, + "vJQz5jv-3kfULzv1HXzOK": { + "id": "vJQz5jv-3kfULzv1HXzOK", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755246822456, + "createAt": 1755246822456 + } + }, + "LzAZLQ61z6BJHTRtDgxnI": { + "id": "LzAZLQ61z6BJHTRtDgxnI", + "tableId": "W_lPWGav23vY_3307ANtm", + "name": "deleted_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246822456, + "createAt": 1755246822456 + } + }, + "SlbGqJXf-rNePjMEvRIsr": { + "id": "SlbGqJXf-rNePjMEvRIsr", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "raminfo_uid", + "comment": "ram 정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 65, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246892459, + "createAt": 1755246873484 + } + }, + "CxChVMNZ0-lR_Qis-x2vD": { + "id": "CxChVMNZ0-lR_Qis-x2vD", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483176747, + "createAt": 1755246920743 + } + }, + "GlQZ0wuM69sz8cilRgsuj": { + "id": "GlQZ0wuM69sz8cilRgsuj", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "title", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 4, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246920744, + "createAt": 1755246920744 + } + }, + "7skl2jaDZAiBe7SGxMUVD": { + "id": "7skl2jaDZAiBe7SGxMUVD", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "price", + "comment": "기본금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246920744, + "createAt": 1755246920744 + } + }, + "ikUqvOVsRoMc9udsOgfIN": { + "id": "ikUqvOVsRoMc9udsOgfIN", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "status", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'default'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246920744, + "createAt": 1755246920744 + } + }, + "x0zlz9RN7BVxFqK3Mlcx_": { + "id": "x0zlz9RN7BVxFqK3Mlcx_", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246920744, + "createAt": 1755246920744 + } + }, + "Al_CUnB2n6yl_1SHZr2Rs": { + "id": "Al_CUnB2n6yl_1SHZr2Rs", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755246920745, + "createAt": 1755246920744 + } + }, + "huTW9wvZBmVx3fLL-gjIH": { + "id": "huTW9wvZBmVx3fLL-gjIH", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "deleted_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755246920745, + "createAt": 1755246920745 + } + }, + "_tEXcK3IBB9LKURnEmMsL": { + "id": "_tEXcK3IBB9LKURnEmMsL", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "ram_cnt", + "comment": "ram 갯수", + "dataType": "TINYINT", + "default": "1", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247039239, + "createAt": 1755246986846 + } + }, + "obuByh1ZWHr1IIkvgrbWr": { + "id": "obuByh1ZWHr1IIkvgrbWr", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "serverinfo_uid", + "comment": "서버 정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247815351, + "createAt": 1755247159760 + } + }, + "WfUhhigWFoqSS1vz3dWPx": { + "id": "WfUhhigWFoqSS1vz3dWPx", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "", + "comment": "", + "dataType": "", + "default": "", + "options": 10, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247403623, + "createAt": 1755247403623 + } + }, + "WIa81CxRFY76H8y3AD0z-": { + "id": "WIa81CxRFY76H8y3AD0z-", + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "name": "", + "comment": "", + "dataType": "", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247405336, + "createAt": 1755247405336 + } + }, + "IGt5YZ4mwg87rD0wY0B0d": { + "id": "IGt5YZ4mwg87rD0wY0B0d", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483116049, + "createAt": 1755247496654 + } + }, + "zd1xXBB6j-idV0F9EHSJ5": { + "id": "zd1xXBB6j-idV0F9EHSJ5", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "diskinfo_uid", + "comment": "disk 정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 65, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755247810711, + "createAt": 1755247786766 + } + }, + "1QueOAWrAo33UT1SO9OVX": { + "id": "1QueOAWrAo33UT1SO9OVX", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "raid", + "comment": "raid종류", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755475051515, + "createAt": 1755248032899 + } + }, + "bBO5EQFcFAnvhtm8mQaiG": { + "id": "bBO5EQFcFAnvhtm8mQaiG", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483155169, + "createAt": 1755249635374 + } + }, + "IBdcZq2460JlTXRhiwYGq": { + "id": "IBdcZq2460JlTXRhiwYGq", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "title", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 4, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755249635374, + "createAt": 1755249635374 + } + }, + "TnZrb5ac1avyD50Sq6aGg": { + "id": "TnZrb5ac1avyD50Sq6aGg", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "price", + "comment": "기본금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755249635375, + "createAt": 1755249635374 + } + }, + "sDAhB498BjHfUoXGNQ-KR": { + "id": "sDAhB498BjHfUoXGNQ-KR", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "status", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'default'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755249635375, + "createAt": 1755249635375 + } + }, + "suGf8mc6frTSSfc37Qybp": { + "id": "suGf8mc6frTSSfc37Qybp", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755249635375, + "createAt": 1755249635375 + } + }, + "quTWRq3qTgyrorl8isUZ7": { + "id": "quTWRq3qTgyrorl8isUZ7", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755249635375, + "createAt": 1755249635375 + } + }, + "jR8nyg0gzSoUtAnBzogY2": { + "id": "jR8nyg0gzSoUtAnBzogY2", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "deleted_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755249635375, + "createAt": 1755249635375 + } + }, + "GyUE9E-9dNJyvlHKOedDq": { + "id": "GyUE9E-9dNJyvlHKOedDq", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "serverinfo_uid", + "comment": "서버정보", + "dataType": "INT", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755355218870, + "createAt": 1755249801944 + } + }, + "DBfXQ1o8_Uwy01-FyjWz0": { + "id": "DBfXQ1o8_Uwy01-FyjWz0", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755355159387, + "createAt": 1755355032131 + } + }, + "ku0-QG-D0LO42mwHraaN9": { + "id": "ku0-QG-D0LO42mwHraaN9", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "cnt", + "comment": "disk 갯수", + "dataType": "TINYINT", + "default": "1", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755485702636, + "createAt": 1755475061859 + } + }, + "gf3QFUo-9exbygXX3-0H0": { + "id": "gf3QFUo-9exbygXX3-0H0", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755475315453, + "createAt": 1755475315452 + } + }, + "iQmUVpuyYRNdhSNgw_ga7": { + "id": "iQmUVpuyYRNdhSNgw_ga7", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755475402381, + "createAt": 1755475402381 + } + }, + "FEUPPJse8IyTjwampIJ1E": { + "id": "FEUPPJse8IyTjwampIJ1E", + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755475438548, + "createAt": 1755475438548 + } + }, + "XXQzeCrEymboccXMZCzMo": { + "id": "XXQzeCrEymboccXMZCzMo", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483149833, + "createAt": 1755476517788 + } + }, + "SioEINPlR0iyL87vqa4N-": { + "id": "SioEINPlR0iyL87vqa4N-", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "cnt", + "comment": "cpu 갯수", + "dataType": "TINYINT", + "default": "1", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476594230, + "createAt": 1755476517788 + } + }, + "fqqyFASOLVXWIKq61Jce7": { + "id": "fqqyFASOLVXWIKq61Jce7", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476517788, + "createAt": 1755476517788 + } + }, + "e65_vbZsM9k8Cn5lwGjt5": { + "id": "e65_vbZsM9k8Cn5lwGjt5", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "raid", + "comment": "raid종류", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476517788, + "createAt": 1755476517788 + } + }, + "CvilrbKyyz1NnLPndNkb8": { + "id": "CvilrbKyyz1NnLPndNkb8", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "serverrinfo_uid", + "comment": "서버정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476559647, + "createAt": 1755476547241 + } + }, + "x23F_sFvFpqLOXzldHBFn": { + "id": "x23F_sFvFpqLOXzldHBFn", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "cpuinfo_uid", + "comment": "cpu정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 64, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476588267, + "createAt": 1755476572319 + } + }, + "axr_LZ3QKQBrj03ZO3tiU": { + "id": "axr_LZ3QKQBrj03ZO3tiU", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483130433, + "createAt": 1755476658035 + } + }, + "FPreHGLwBwewNsjMgrDwX": { + "id": "FPreHGLwBwewNsjMgrDwX", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "cnt", + "comment": "ram 갯수", + "dataType": "TINYINT", + "default": "1", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476721187, + "createAt": 1755476658035 + } + }, + "qjJVv2K53hwjdd2I4Q_Rn": { + "id": "qjJVv2K53hwjdd2I4Q_Rn", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476658035, + "createAt": 1755476658035 + } + }, + "lkmohF33yJzxDKZgvYZi7": { + "id": "lkmohF33yJzxDKZgvYZi7", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "serverinfo_uid", + "comment": "서버정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476683272, + "createAt": 1755476673143 + } + }, + "M4sylK12L-sbwc460lHp7": { + "id": "M4sylK12L-sbwc460lHp7", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "raminfo_uid", + "comment": "ram정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 65, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476711848, + "createAt": 1755476695269 + } + }, + "QntZma68vv35q1xARB2R4": { + "id": "QntZma68vv35q1xARB2R4", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755476992395, + "createAt": 1755476992394 + } + }, + "JP9PTSr956CAPbXosCtEq": { + "id": "JP9PTSr956CAPbXosCtEq", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477610393, + "createAt": 1755477610393 + } + }, + "kDyVwSigBBYnp_F9MyRAw": { + "id": "kDyVwSigBBYnp_F9MyRAw", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755477610393, + "createAt": 1755477610393 + } + }, + "4V3D7Dj65Us30_gYyP27z": { + "id": "4V3D7Dj65Us30_gYyP27z", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477615783, + "createAt": 1755477615783 + } + }, + "YL4Bsc3X1OCr1HESCOy2n": { + "id": "YL4Bsc3X1OCr1HESCOy2n", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755477615783, + "createAt": 1755477615783 + } + }, + "D1A4zT-QFQwN2nAJgTQZc": { + "id": "D1A4zT-QFQwN2nAJgTQZc", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755477621825, + "createAt": 1755477621824 + } + }, + "Zix606z6-IS6vYzB1EMD-": { + "id": "Zix606z6-IS6vYzB1EMD-", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755477621825, + "createAt": 1755477621825 + } + }, + "hGJn_WXZRUZizXnV1q1mp": { + "id": "hGJn_WXZRUZizXnV1q1mp", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "search_ips", + "comment": "사용 ip주소(검색용,구분자:comma)", + "dataType": "VARCHAR(50)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 187, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755478750781, + "createAt": 1755478567451 + } + }, + "oUDsRmvN4I4k7BNNJR0y4": { + "id": "oUDsRmvN4I4k7BNNJR0y4", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "serverinfo_uid", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755479722625, + "createAt": 1755479448345 + } + }, + "RUTBvn2-51hfNG7Adcbh-": { + "id": "RUTBvn2-51hfNG7Adcbh-", + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "name": "serviceinfo_uid", + "comment": "서비스코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 62, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755479705755, + "createAt": 1755479688215 + } + }, + "VUPZdWS7fM1J2QstRq4KR": { + "id": "VUPZdWS7fM1J2QstRq4KR", + "tableId": "MgyqOOvja_MGR3f4xNT8T", + "name": "serviceinfo_code", + "comment": "서비스코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 89, + "widthComment": 62, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483735183, + "createAt": 1755479812192 + } + }, + "LRN5qjIRZ18UOhqFbBLuo": { + "id": "LRN5qjIRZ18UOhqFbBLuo", + "tableId": "QCNA57Pi6A9dJDgybxS5v", + "name": "serviceinfo_coide", + "comment": "서비스코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 92, + "widthComment": 62, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483740787, + "createAt": 1755479838515 + } + }, + "mOdd3p43Qb4VStgr1nWHB": { + "id": "mOdd3p43Qb4VStgr1nWHB", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483698151, + "createAt": 1755479899081 + } + }, + "cp6LM5PcjxQXXXksE7tCl": { + "id": "cp6LM5PcjxQXXXksE7tCl", + "tableId": "XWDManpabF2tsIxhMejP6", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483702093, + "createAt": 1755479916812 + } + }, + "YqJDZb-w4dCpGDbMaNC0j": { + "id": "YqJDZb-w4dCpGDbMaNC0j", + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483705748, + "createAt": 1755479930090 + } + }, + "Li6TetD-ZbH9MNKGAK0im": { + "id": "Li6TetD-ZbH9MNKGAK0im", + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 2, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483646024, + "createAt": 1755480385013 + } + }, + "sWwdum3AkxFncLEFPN1CM": { + "id": "sWwdum3AkxFncLEFPN1CM", + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "name": "serverinfo_uid", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755480844082, + "createAt": 1755480470466 + } + }, + "1R3FQnBR2tpSdfkj3jipU": { + "id": "1R3FQnBR2tpSdfkj3jipU", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "serviceinfo_uid", + "comment": "서비스코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 80, + "widthComment": 62, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755480814776, + "createAt": 1755480802836 + } + }, + "3fZMQ9qB1DO8y44eJRKdt": { + "id": "3fZMQ9qB1DO8y44eJRKdt", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "serviceinfo_code", + "comment": "서비스코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 2, + "widthName": 89, + "widthComment": 62, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483629903, + "createAt": 1755481142306 + } + }, + "Eo358NWcEUQY3DN9QGnGQ": { + "id": "Eo358NWcEUQY3DN9QGnGQ", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483119673, + "createAt": 1755481454038 + } + }, + "9jyfXIZZ25iWYB6VB41F9": { + "id": "9jyfXIZZ25iWYB6VB41F9", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481454038, + "createAt": 1755481454038 + } + }, + "lw5LN_hwXHVgctjrJJC2M": { + "id": "lw5LN_hwXHVgctjrJJC2M", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481454038, + "createAt": 1755481454038 + } + }, + "CquZe6cpOPCDJmQC5vWe9": { + "id": "CquZe6cpOPCDJmQC5vWe9", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755481454038, + "createAt": 1755481454038 + } + }, + "qDieUIrgCa3bzZX6OWKcC": { + "id": "qDieUIrgCa3bzZX6OWKcC", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483712787, + "createAt": 1755481487973 + } + }, + "nUQNtDBUrs6SFI5OPk5gp": { + "id": "nUQNtDBUrs6SFI5OPk5gp", + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "name": "softwareinfo_uid", + "comment": "소프트웨어정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 89, + "widthComment": 86, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481549476, + "createAt": 1755481519997 + } + }, + "5brFiZlY8m5rOEr0hCYfY": { + "id": "5brFiZlY8m5rOEr0hCYfY", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483122193, + "createAt": 1755481609870 + } + }, + "3Qdm5giGdFOueOxIGpNFl": { + "id": "3Qdm5giGdFOueOxIGpNFl", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "amount", + "comment": "서비스금액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481609870, + "createAt": 1755481609870 + } + }, + "WiLPZ9QHd0-j2QxdylQVW": { + "id": "WiLPZ9QHd0-j2QxdylQVW", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481609870, + "createAt": 1755481609870 + } + }, + "jkHlXxe8haR1gpCpCUKw8": { + "id": "jkHlXxe8haR1gpCpCUKw8", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755481609870, + "createAt": 1755481609870 + } + }, + "_bHdGsO8d_89L_gSiQRmG": { + "id": "_bHdGsO8d_89L_gSiQRmG", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483717668, + "createAt": 1755481631893 + } + }, + "wI0MMNv14UOrTsaYp1Iwo": { + "id": "wI0MMNv14UOrTsaYp1Iwo", + "tableId": "Pa1u61sIGvzDtItserV5k", + "name": "csinfo_uid", + "comment": "cs정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755481670032, + "createAt": 1755481643217 + } + }, + "6i-Ag5fvYugIDFg9tH3HA": { + "id": "6i-Ag5fvYugIDFg9tH3HA", + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 2, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483693229, + "createAt": 1755481788806 + } + }, + "0LanT5cVJX_uBb0Foh2NM": { + "id": "0LanT5cVJX_uBb0Foh2NM", + "tableId": "B8haiEbPc1lRBWTv1g25G", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483677499, + "createAt": 1755483330609 + } + }, + "QwfRq6xU7Vy-QoenynjXR": { + "id": "QwfRq6xU7Vy-QoenynjXR", + "tableId": "QCNA57Pi6A9dJDgybxS5v", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483744577, + "createAt": 1755483359049 + } + }, + "VBy1PXlflYSQGeLRXkD3l": { + "id": "VBy1PXlflYSQGeLRXkD3l", + "tableId": "MgyqOOvja_MGR3f4xNT8T", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483731335, + "createAt": 1755483387662 + } + }, + "7e7kPIVKM4VrUWTZADe-5": { + "id": "7e7kPIVKM4VrUWTZADe-5", + "tableId": "GDEF0_WuOpaYtsZxjn2zM", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483757518, + "createAt": 1755483441006 + } + }, + "YdLa5geill88c3UM5a_YR": { + "id": "YdLa5geill88c3UM5a_YR", + "tableId": "jO40Ej5EXImXnadoJo9bn", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755483768171, + "createAt": 1755483519967 + } + }, + "HZIdc4faH9k91g-JN-NhW": { + "id": "HZIdc4faH9k91g-JN-NhW", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "type", + "comment": "형식", + "dataType": "ENUM", + "default": "('CPU','RAM','DISK','SOFTWARE')", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 172 + }, + "meta": { + "updateAt": 1755486378357, + "createAt": 1755486306594 + } + }, + "TsfQy78jcI0ref_kE7OV9": { + "id": "TsfQy78jcI0ref_kE7OV9", + "tableId": "ZMGIWLFEswObjH2Sx0NlW", + "name": "type", + "comment": "형식", + "dataType": "ENUM('CPU','RAM','DISK','SOFTWARE')", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 206, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488402952, + "createAt": 1755486399420 + } + }, + "pcpeNmSmqH_DtbRLyaYv9": { + "id": "pcpeNmSmqH_DtbRLyaYv9", + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "name": "serverinfo_code", + "comment": "서버코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 0, + "ui": { + "keys": 2, + "widthName": 85, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755486633050, + "createAt": 1755486550772 + } + }, + "l2g7xess8DY86_ZOm7Ca1": { + "id": "l2g7xess8DY86_ZOm7Ca1", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "partinfo_uid", + "comment": "part정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 66, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755486711129, + "createAt": 1755486693704 + } + }, + "NdvFKvSSsZJ3s1sEMgXzt": { + "id": "NdvFKvSSsZJ3s1sEMgXzt", + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "name": "extra", + "comment": "추가정보(RAID등)", + "dataType": "JSON", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 96, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755486793127, + "createAt": 1755486722061 + } + }, + "JnsH90ebD8YNwM8q_Ajat": { + "id": "JnsH90ebD8YNwM8q_Ajat", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488657335, + "createAt": 1755488630271 + } + }, + "gbR9hOeDvjnrJAxI4vLf9": { + "id": "gbR9hOeDvjnrJAxI4vLf9", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "title", + "comment": "", + "dataType": "VARCHAR(255)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 81, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488630271, + "createAt": 1755488630271 + } + }, + "PV9lD8qRmTrg8bMT4t3WG": { + "id": "PV9lD8qRmTrg8bMT4t3WG", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "amount", + "comment": "포인트액", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488752319, + "createAt": 1755488630271 + } + }, + "VP7GvkqWejNbQZc-tmlr_": { + "id": "VP7GvkqWejNbQZc-tmlr_", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "status", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'default'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488630271, + "createAt": 1755488630271 + } + }, + "UzQFCo9RFEeqMUnp4xCp_": { + "id": "UzQFCo9RFEeqMUnp4xCp_", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "updated_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 62, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488630271, + "createAt": 1755488630271 + } + }, + "rXvRKMW6wEsJR5E6IwWZI": { + "id": "rXvRKMW6wEsJR5E6IwWZI", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1755488630272, + "createAt": 1755488630271 + } + }, + "dNTE1M813GnbddEqp4esS": { + "id": "dNTE1M813GnbddEqp4esS", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "deleted_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "", + "options": 0, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488630272, + "createAt": 1755488630272 + } + }, + "z86v6qGtWsrVhzZfUo_7d": { + "id": "z86v6qGtWsrVhzZfUo_7d", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "userinfo_uid", + "comment": "관리자정보", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 67, + "widthComment": 62, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488717423, + "createAt": 1755488677087 + } + }, + "QD0EVLU6BeTsEsNO3MAgd": { + "id": "QD0EVLU6BeTsEsNO3MAgd", + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "name": "clientinfo_code", + "comment": "고객코드", + "dataType": "VARCHAR(20)", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 82, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1755488709733, + "createAt": 1755488700401 + } } }, "relationshipEntities": { - "gAVYXWnBSnCw-0ieO4Mil": { - "id": "gAVYXWnBSnCw-0ieO4Mil", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 885.6138, - "y": 1121.1133, - "direction": 1 - }, - "end": { - "tableId": "GDEF0_WuOpaYtsZxjn2zM", - "columnIds": [ - "nPYun5WHoy8uroXUBiqh8" - ], - "x": 654.2029, - "y": 747.9010000000001, - "direction": 2 - }, - "meta": { - "updateAt": 1746604503019, - "createAt": 1745819764143 - } - }, - "4BDt10BeeryoN0ZdEHIui": { - "id": "4BDt10BeeryoN0ZdEHIui", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 885.6138, - "y": 1329.1133, - "direction": 1 - }, - "end": { - "tableId": "jO40Ej5EXImXnadoJo9bn", - "columnIds": [ - "35XbdvgOzpNdasPnMcbkx" - ], - "x": 661.1292, - "y": 1068.2412, - "direction": 2 - }, - "meta": { - "updateAt": 1745914803629, - "createAt": 1745914803629 - } - }, - "KtdVJCYZ3DMVnPnFGKi3P": { - "id": "KtdVJCYZ3DMVnPnFGKi3P", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 857.6138, - "y": 1208.1133, - "direction": 1 - }, - "end": { - "tableId": "5AUwJum9FKPCoYRMBhLnF", - "columnIds": [ - "PyXYmokQzpzzT08WTmtsN" - ], - "x": 656.8195000000001, - "y": 1056.7134, - "direction": 2 - }, - "meta": { - "updateAt": 1745914916196, - "createAt": 1745914916196 - } - }, "AH1dyESfueUlhcoiU6KsQ": { "id": "AH1dyESfueUlhcoiU6KsQ", "identification": false, @@ -10288,80 +12475,24 @@ "columnIds": [ "7B0zaLoZnOoMNW8OHZlrQ" ], - "x": 647.4147, - "y": 1657.6983, - "direction": 2 + "x": 2163.1753, + "y": 1690.2063, + "direction": 1 }, "end": { "tableId": "ZLEpY5EjuZV21718zf-Y1", "columnIds": [ "f7_MGvRjkwL1xkCWrAgDR" ], - "x": 827.863, - "y": 1940.4333, - "direction": 1 + "x": 1561.1227, + "y": 1839.0937, + "direction": 2 }, "meta": { "updateAt": 1746595277837, "createAt": 1746595277837 } }, - "anhMCXytE7rcE_drKBPWz": { - "id": "anhMCXytE7rcE_drKBPWz", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1418.6138, - "y": 1363.7799666666667, - "direction": 2 - }, - "end": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "NzxkmndrTbH7xb6fbnGV7" - ], - "x": 1560.9612, - "y": 1511.2679, - "direction": 1 - }, - "meta": { - "updateAt": 1748506571484, - "createAt": 1748506571484 - } - }, - "Hj5AZkoYGvM_syvnqMeOi": { - "id": "Hj5AZkoYGvM_syvnqMeOi", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1980.2112, - "y": 1419.2679, - "direction": 4 - }, - "end": { - "tableId": "QCNA57Pi6A9dJDgybxS5v", - "columnIds": [ - "ZWV8iXrgQovfYTm32QGbZ" - ], - "x": 2259.4614, - "y": 956.8780666666665, - "direction": 1 - }, - "meta": { - "updateAt": 1749615226177, - "createAt": 1749615226177 - } - }, "cRqZmxohkCGd_FTkg1rhI": { "id": "cRqZmxohkCGd_FTkg1rhI", "identification": false, @@ -10372,8 +12503,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1598.9012, - "y": 743.2873999999999, + "x": 1254.4012, + "y": 381.2874, "direction": 8 }, "end": { @@ -10381,8 +12512,8 @@ "columnIds": [ "Vf3bNvvEPfu1zCs4rcHTU" ], - "x": 1700.7112, - "y": 1419.2679, + "x": 1081.5529000000001, + "y": 1018.5867, "direction": 4 }, "meta": { @@ -10400,8 +12531,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1724.6512, - "y": 521.2873999999999, + "x": 1631.6512, + "y": 159.2874, "direction": 2 }, "end": { @@ -10409,8 +12540,8 @@ "columnIds": [ "s1Az-lXWK0NlVQqFEEK8o" ], - "x": 2259.4614, - "y": 743.5447333333333, + "x": 2122.464, + "y": 279.29083333333335, "direction": 1 }, "meta": { @@ -10418,118 +12549,6 @@ "createAt": 1750829265309 } }, - "SPka-cLj0RKoiI41G_6pY": { - "id": "SPka-cLj0RKoiI41G_6pY", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1313.5815, - "y": 1277.9179, - "direction": 1 - }, - "end": { - "tableId": "ZLEpY5EjuZV21718zf-Y1", - "columnIds": [ - "3iPU6UC3FKcE8hXY9Q40C" - ], - "x": 1127.1366, - "y": 1253.1929, - "direction": 2 - }, - "meta": { - "updateAt": 1755066780399, - "createAt": 1755066780399 - } - }, - "Be8El0y3CWe_2WOBxssZU": { - "id": "Be8El0y3CWe_2WOBxssZU", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1326.4848, - "y": 1366.7566000000002, - "direction": 1 - }, - "end": { - "tableId": "IsMoJXzvtuoOFFt93qS0w", - "columnIds": [ - "s756JnSlHbNIOpmMi5M-2" - ], - "x": 567.4958, - "y": 1706.5644, - "direction": 2 - }, - "meta": { - "updateAt": 1755069233971, - "createAt": 1755069233971 - } - }, - "R1Q9ObPbavZ376JxKDHml": { - "id": "R1Q9ObPbavZ376JxKDHml", - "identification": false, - "relationshipType": 8, - "startRelationshipType": 1, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1840.4612, - "y": 1787.2679, - "direction": 8 - }, - "end": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "EKrwHre6e66jqAMnAW_KR" - ], - "x": 1884.9231, - "y": 1918.0162, - "direction": 4 - }, - "meta": { - "updateAt": 1755069335261, - "createAt": 1755069335261 - } - }, - "RSWTHCBXAega89Qn25dV8": { - "id": "RSWTHCBXAega89Qn25dV8", - "identification": false, - "relationshipType": 8, - "startRelationshipType": 1, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1823.5815, - "y": 1109.2512333333332, - "direction": 2 - }, - "end": { - "tableId": "IsMoJXzvtuoOFFt93qS0w", - "columnIds": [ - "ByQhiHPUZQBhgIaT774FJ" - ], - "x": 2429.1032, - "y": 1363.5488, - "direction": 1 - }, - "meta": { - "updateAt": 1755069479018, - "createAt": 1755069479018 - } - }, "6eVY12bW8ePKGX43ni21y": { "id": "6eVY12bW8ePKGX43ni21y", "identification": false, @@ -10540,8 +12559,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1221.6512, - "y": 496.62073333333336, + "x": 1128.6512, + "y": 122.2874, "direction": 1 }, "end": { @@ -10549,8 +12568,8 @@ "columnIds": [ "Wco5JzN0gIqgNaG-vYnjF" ], - "x": 649.3505, - "y": 343.9762, + "x": 587.3749, + "y": 313.025, "direction": 2 }, "meta": { @@ -10558,398 +12577,6 @@ "createAt": 1755069614219 } }, - "6Z59wOM9Ozqcxy1HXyWfL": { - "id": "6Z59wOM9Ozqcxy1HXyWfL", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 1615.7351, - "y": 1976.6219, - "direction": 1 - }, - "end": { - "tableId": "H5lE3ZX7xEbV8d0OHBR95", - "columnIds": [ - "jqmxU5JhvpNsSCdKSoyT7" - ], - "x": 1237.8474999999999, - "y": 1930.661, - "direction": 2 - }, - "meta": { - "updateAt": 1755069998397, - "createAt": 1755069998397 - } - }, - "bcycdLlJH_tFYYDrKimpY": { - "id": "bcycdLlJH_tFYYDrKimpY", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "RMhrLs7bOaopKmKt9YKHQ", - "columnIds": [ - "Jh6e_-9QYe1Tqve0PE3kT" - ], - "x": 568.5356, - "y": 1821.4784, - "direction": 2 - }, - "end": { - "tableId": "H5lE3ZX7xEbV8d0OHBR95", - "columnIds": [ - "DwPWRr9Ca7SpzA6FeGYVg" - ], - "x": 803.8475, - "y": 1930.661, - "direction": 1 - }, - "meta": { - "updateAt": 1755070021142, - "createAt": 1755070021142 - } - }, - "rfeiuBIFSQQ4T9vZ_bSVE": { - "id": "rfeiuBIFSQQ4T9vZ_bSVE", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 1615.7351, - "y": 2040.6219, - "direction": 1 - }, - "end": { - "tableId": "VdcGlLO4HgExVJUAVEriv", - "columnIds": [ - "r0esmH8vUxxZfUM5g2LMo" - ], - "x": 1245.6144, - "y": 2102.4843, - "direction": 2 - }, - "meta": { - "updateAt": 1755070077479, - "createAt": 1755070077479 - } - }, - "D0py0vZ2AFCYJAyfuG3xy": { - "id": "D0py0vZ2AFCYJAyfuG3xy", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "lwd2DR7f1FW8fXtJ0lX-r", - "columnIds": [ - "203b3hUKUQ_Gu5wKShBgZ" - ], - "x": 565.05, - "y": 2095.2533000000003, - "direction": 2 - }, - "end": { - "tableId": "VdcGlLO4HgExVJUAVEriv", - "columnIds": [ - "zPhCo7rgbYHeLG1t_hdq8" - ], - "x": 811.6144, - "y": 2102.4843, - "direction": 1 - }, - "meta": { - "updateAt": 1755070084260, - "createAt": 1755070084260 - } - }, - "-Su3FGiUbis01r8FsghJ7": { - "id": "-Su3FGiUbis01r8FsghJ7", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 1615.7351, - "y": 2104.6219, - "direction": 1 - }, - "end": { - "tableId": "BFhEqfFZ0L56a6Tey1OsK", - "columnIds": [ - "gutGFwQWK4wXhe8FtDw2o" - ], - "x": 1248.4732, - "y": 2260.0797, - "direction": 2 - }, - "meta": { - "updateAt": 1755070159652, - "createAt": 1755070159652 - } - }, - "bkNq5LFoIOcQUcH8zRR1u": { - "id": "bkNq5LFoIOcQUcH8zRR1u", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "dnFyz1CSdGeS6mCbfCMO0", - "columnIds": [ - "WaCB3uNZYFReAPiBqQ97v" - ], - "x": 565.0925, - "y": 2344.993, - "direction": 2 - }, - "end": { - "tableId": "BFhEqfFZ0L56a6Tey1OsK", - "columnIds": [ - "8ECMbJlnwzH9BVC8qww0G" - ], - "x": 814.4732, - "y": 2260.0797, - "direction": 1 - }, - "meta": { - "updateAt": 1755070184602, - "createAt": 1755070184602 - } - }, - "evNG079qK8vtHbDi_X3vi": { - "id": "evNG079qK8vtHbDi_X3vi", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "ZMGIWLFEswObjH2Sx0NlW", - "columnIds": [ - "2HB01q46-mugMjuOz85YG" - ], - "x": 549.8123, - "y": 1953.3671, - "direction": 2 - }, - "end": { - "tableId": "1IgC97w7iAToPDVjmA6cP", - "columnIds": [ - "xmzCVojXgE59GnF4OFU1d" - ], - "x": 698.5848, - "y": 1815.172, - "direction": 1 - }, - "meta": { - "updateAt": 1755070503028, - "createAt": 1755070503028 - } - }, - "vXG-OLwcOHCAT-_MJVIHG": { - "id": "vXG-OLwcOHCAT-_MJVIHG", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "ZLEpY5EjuZV21718zf-Y1", - "columnIds": [ - "Id0h8QbOdlhPj9P1zTm5o" - ], - "x": 889.7858, - "y": 1576.1628, - "direction": 8 - }, - "end": { - "tableId": "1IgC97w7iAToPDVjmA6cP", - "columnIds": [ - "Plp-1fV7paxPZi96sBPKC" - ], - "x": 907.5848, - "y": 1775.172, - "direction": 4 - }, - "meta": { - "updateAt": 1755070524117, - "createAt": 1755070524117 - } - }, - "Lu_9fZemeTtpwxe8JqmVk": { - "id": "Lu_9fZemeTtpwxe8JqmVk", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1313.5815, - "y": 1354.5845666666667, - "direction": 1 - }, - "end": { - "tableId": "1IgC97w7iAToPDVjmA6cP", - "columnIds": [ - "MFCMVc9PfltkzyP2wGEiT" - ], - "x": 1186.0835, - "y": 1602.0358, - "direction": 2 - }, - "meta": { - "updateAt": 1755070544576, - "createAt": 1755070544576 - } - }, - "y5sp_z99F97sAiCCdnTTW": { - "id": "y5sp_z99F97sAiCCdnTTW", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "ZMGIWLFEswObjH2Sx0NlW", - "columnIds": [ - "2HB01q46-mugMjuOz85YG" - ], - "x": 725.1659, - "y": 2217.601, - "direction": 2 - }, - "end": { - "tableId": "1IgC97w7iAToPDVjmA6cP", - "columnIds": [ - "tY1o1CYV2XEEhNzLszGZe" - ], - "x": 792.9496, - "y": 2390.194, - "direction": 1 - }, - "meta": { - "updateAt": 1755070620855, - "createAt": 1755070620855 - } - }, - "Dz6QcS_70VKHQ2YjzwZGN": { - "id": "Dz6QcS_70VKHQ2YjzwZGN", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1399.2481666666665, - "y": 1463.9179, - "direction": 8 - }, - "end": { - "tableId": "ld67cErj1fQafxxvx9u-d", - "columnIds": [ - "ZLRkW2IglxHYxi64pzqI6" - ], - "x": 1117.8107, - "y": 1917.5262, - "direction": 2 - }, - "meta": { - "updateAt": 1755070727257, - "createAt": 1755070727257 - } - }, - "w8boPPGLtYJ1bduzTmlb9": { - "id": "w8boPPGLtYJ1bduzTmlb9", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "RTq5rHQupiXXJPXqpN8K5", - "columnIds": [ - "zBz4vBOZSIA8vKmfqXckO" - ], - "x": 556.4864, - "y": 2017.6734, - "direction": 2 - }, - "end": { - "tableId": "ld67cErj1fQafxxvx9u-d", - "columnIds": [ - "_1psmOpMPnQkuDErcYGoN" - ], - "x": 673.8107, - "y": 1917.5262, - "direction": 1 - }, - "meta": { - "updateAt": 1755070740084, - "createAt": 1755070740084 - } - }, - "3cXkv3jbZSAHILxZRp8IO": { - "id": "3cXkv3jbZSAHILxZRp8IO", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B8haiEbPc1lRBWTv1g25G", - "columnIds": [ - "N_yJVoCN4oUEDhYqdzApb" - ], - "x": 1442.0815, - "y": 1463.9179, - "direction": 8 - }, - "end": { - "tableId": "MKzOIGduxigGV9tdWRJS9", - "columnIds": [ - "BZ6k54lNYbwArAe3Lej8Z" - ], - "x": 1120.6888, - "y": 2231.0469, - "direction": 2 - }, - "meta": { - "updateAt": 1755070878615, - "createAt": 1755070878615 - } - }, - "W7OXR3l5ipZIzfo3Tmkjn": { - "id": "W7OXR3l5ipZIzfo3Tmkjn", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "GRBrbb1hqwKSRMfod3I7U", - "columnIds": [ - "XnNj7H0bnTxo_NuZm7BOs" - ], - "x": 552.9504, - "y": 2288.929, - "direction": 2 - }, - "end": { - "tableId": "MKzOIGduxigGV9tdWRJS9", - "columnIds": [ - "YwXJqImj25hxIQbi8-ZPr" - ], - "x": 678.6888, - "y": 2231.0469, - "direction": 1 - }, - "meta": { - "updateAt": 1755070900547, - "createAt": 1755070900547 - } - }, "M7KNNgj1MYJ4QVhIJWU1U": { "id": "M7KNNgj1MYJ4QVhIJWU1U", "identification": false, @@ -11016,8 +12643,8 @@ "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1" ], - "x": 1489.4231, - "y": 2264.6828666666665, + "x": 2192.6731, + "y": 2035.044166666667, "direction": 1 }, "end": { @@ -11025,8 +12652,8 @@ "columnIds": [ "Mc9DanKrdzYxiptkoeq9J" ], - "x": 1416.9496, - "y": 2390.194, + "x": 1837.7455, + "y": 2196.9039, "direction": 2 }, "meta": { @@ -11100,8 +12727,8 @@ "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1" ], - "x": 1489.4231, - "y": 2126.0162, + "x": 1461.5284, + "y": 2162.5162, "direction": 1 }, "end": { @@ -11109,8 +12736,8 @@ "columnIds": [ "7j-v8422Rzf3ZoLGCDJGo" ], - "x": 1344.863, - "y": 2026.4333, + "x": 1209.7612, + "y": 1975.2414, "direction": 2 }, "meta": { @@ -11128,8 +12755,8 @@ "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1" ], - "x": 2280.4231, - "y": 2022.0162, + "x": 2212.5284, + "y": 2076.5162, "direction": 2 }, "end": { @@ -11137,8 +12764,8 @@ "columnIds": [ "UqCsY6KiCJOOFtjCHoMVL" ], - "x": 2419.0055, - "y": 1838.9773, + "x": 2409.431, + "y": 1879.4028, "direction": 1 }, "meta": { @@ -11156,8 +12783,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1347.4012, - "y": 743.2873999999999, + "x": 1505.9012, + "y": 381.2874, "direction": 8 }, "end": { @@ -11165,8 +12792,8 @@ "columnIds": [ "hrPg0uHAdEjamOj--BVzO" ], - "x": 1152.1138, - "y": 1017.1133, + "x": 1552.23, + "y": 468.8448, "direction": 4 }, "meta": { @@ -11184,8 +12811,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1221.6512, - "y": 595.2874, + "x": 1128.6512, + "y": 196.2874, "direction": 1 }, "end": { @@ -11193,8 +12820,8 @@ "columnIds": [ "10Ii30CtjhJA-dPVnX2Z-" ], - "x": 654.2029, - "y": 575.9010000000001, + "x": 600.5444, + "y": 548.2669000000001, "direction": 2 }, "meta": { @@ -11240,8 +12867,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1221.6512, - "y": 693.9540666666667, + "x": 1128.6512, + "y": 270.2874, "direction": 1 }, "end": { @@ -11249,8 +12876,8 @@ "columnIds": [ "J1dtvqmAyJxT6QtuZq7IA" ], - "x": 661.1292, - "y": 932.2412, + "x": 603.7146, + "y": 899.2656, "direction": 2 }, "meta": { @@ -11268,8 +12895,8 @@ "columnIds": [ "_AcWUYKzNJd-V0fRHq8Cx" ], - "x": 1285.3638, - "y": 1433.1133, + "x": 929.8915, + "y": 1374.5156, "direction": 8 }, "end": { @@ -11277,9 +12904,9 @@ "columnIds": [ "imjqFzOrKxNF9-aH171pe" ], - "x": 1489.4231, - "y": 1987.3495333333335, - "direction": 1 + "x": 1189.2159, + "y": 2187.8899, + "direction": 4 }, "meta": { "updateAt": 1755161208359, @@ -11352,8 +12979,8 @@ "columnIds": [ "N_yJVoCN4oUEDhYqdzApb" ], - "x": 1560.9612, - "y": 1695.2679, + "x": 1375.6859, + "y": 1664.7297000000003, "direction": 1 }, "end": { @@ -11361,8 +12988,8 @@ "columnIds": [ "ZPFSJbnNsml6U3UKwtSVX" ], - "x": 1344.863, - "y": 1854.4333, + "x": 1209.7612, + "y": 1809.2414, "direction": 2 }, "meta": { @@ -11380,8 +13007,8 @@ "columnIds": [ "_AcWUYKzNJd-V0fRHq8Cx" ], - "x": 1018.8638, - "y": 1433.1133, + "x": 885.4748333333332, + "y": 1374.5156, "direction": 8 }, "end": { @@ -11389,8 +13016,8 @@ "columnIds": [ "nIeV_YUzCUo3ZwJEtefBV" ], - "x": 1086.363, - "y": 1768.4333, + "x": 951.2612, + "y": 1735.2414, "direction": 4 }, "meta": { @@ -11408,8 +13035,8 @@ "columnIds": [ "_AcWUYKzNJd-V0fRHq8Cx" ], - "x": 1418.6138, - "y": 1086.4466333333332, + "x": 1818.73, + "y": 572.8448000000001, "direction": 2 }, "end": { @@ -11417,8 +13044,8 @@ "columnIds": [ "ho6JZ9VdUHm5R5xx2hf8Z" ], - "x": 2259.4614, - "y": 850.2113999999999, + "x": 2122.464, + "y": 385.95750000000004, "direction": 1 }, "meta": { @@ -11436,8 +13063,8 @@ "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1" ], - "x": 2280.4231, - "y": 2230.0162, + "x": 2212.5284, + "y": 2162.5162, "direction": 2 }, "end": { @@ -11445,8 +13072,8 @@ "columnIds": [ "jGUbjneRTg2hPnWwlTUAn" ], - "x": 2421.5258, - "y": 2269.3720000000003, + "x": 2374.7173, + "y": 2014.0528, "direction": 1 }, "meta": { @@ -11492,8 +13119,8 @@ "columnIds": [ "N_yJVoCN4oUEDhYqdzApb" ], - "x": 2119.9611999999997, - "y": 1480.6012333333335, + "x": 1775.3577, + "y": 1291.2716, "direction": 2 }, "end": { @@ -11501,8 +13128,8 @@ "columnIds": [ "97RhPf67fDR-y6rT7cxfj" ], - "x": 2268.0278, - "y": 1435.666666666667, + "x": 2134.0658, + "y": 909.0087666666665, "direction": 1 }, "meta": { @@ -11520,8 +13147,8 @@ "columnIds": [ "_AcWUYKzNJd-V0fRHq8Cx" ], - "x": 1418.6138, - "y": 1225.1133, + "x": 1818.73, + "y": 780.8448000000001, "direction": 2 }, "end": { @@ -11529,8 +13156,8 @@ "columnIds": [ "QLwujC3DidC4GxXjEZ97x" ], - "x": 2268.0278, - "y": 1329.0000000000002, + "x": 2134.0658, + "y": 802.3420999999998, "direction": 1 }, "meta": { @@ -11548,8 +13175,8 @@ "columnIds": [ "mfHtgzc_Aeocr6xkgwYWh" ], - "x": 1724.6512, - "y": 669.2873999999999, + "x": 1631.6512, + "y": 307.2874, "direction": 2 }, "end": { @@ -11557,8 +13184,8 @@ "columnIds": [ "ShxQXt7QhnuRrZToBBUCA" ], - "x": 2268.0278, - "y": 1222.3333333333335, + "x": 2134.0658, + "y": 695.6754333333332, "direction": 1 }, "meta": { @@ -11576,8 +13203,8 @@ "columnIds": [ "N_yJVoCN4oUEDhYqdzApb" ], - "x": 2119.9611999999997, - "y": 1603.2679000000003, + "x": 2177.6859, + "y": 1710.7297, "direction": 2 }, "end": { @@ -11585,8 +13212,8 @@ "columnIds": [ "Tf4tatgNo1vCFMiLXWWzk" ], - "x": 2419.0055, - "y": 1714.9773, + "x": 2409.431, + "y": 1805.4028, "direction": 1 }, "meta": { @@ -11604,8 +13231,8 @@ "columnIds": [ "N_yJVoCN4oUEDhYqdzApb" ], - "x": 2119.9611999999997, - "y": 1725.934566666667, + "x": 2190.4518, + "y": 1751.8644666666669, "direction": 2 }, "end": { @@ -11613,18 +13240,1379 @@ "columnIds": [ "W0dMiAswDCER2eGLQpP7d" ], - "x": 2421.5258, - "y": 2085.3720000000003, + "x": 2374.7173, + "y": 1910.0528, "direction": 1 }, "meta": { "updateAt": 1755233489285, "createAt": 1755233489285 } + }, + "dWvabJpdOJEjnUnxIr-FY": { + "id": "dWvabJpdOJEjnUnxIr-FY", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 1843.7829, + "y": 2102.5238, + "direction": 4 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "SwRy3H1j9iLeKZBaLNyuR" + ], + "x": 1811.4029, + "y": 1853.2261, + "direction": 8 + }, + "meta": { + "updateAt": 1755243374402, + "createAt": 1755243363121 + } + }, + "_MlOr6HhQadixMDblX_Q-": { + "id": "_MlOr6HhQadixMDblX_Q-", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "columnIds": [ + "Id0h8QbOdlhPj9P1zTm5o" + ], + "x": 574.4684, + "y": 1744.4119, + "direction": 2 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "lN38gtO243yA3RiRYyPh3" + ], + "x": 1410.4029, + "y": 1633.2261000000003, + "direction": 1 + }, + "meta": { + "updateAt": 1755243720223, + "createAt": 1755243720223 + } + }, + "bYi-u1A04pZgulY6HERBf": { + "id": "bYi-u1A04pZgulY6HERBf", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "columnIds": [ + "dsz0no4QmTBs-HMbe_HtT" + ], + "x": 2371.1335, + "y": 1584.8919, + "direction": 1 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "tjd351KGFBrDiA6-HqtdD" + ], + "x": 2212.4029, + "y": 1621.2261000000003, + "direction": 2 + }, + "meta": { + "updateAt": 1755243872669, + "createAt": 1755243872669 + } + }, + "B-7EcwF30QEcT0HJ19tGB": { + "id": "B-7EcwF30QEcT0HJ19tGB", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 1, + "start": { + "tableId": "RTq5rHQupiXXJPXqpN8K5", + "columnIds": [ + "zBz4vBOZSIA8vKmfqXckO" + ], + "x": 2374.7173, + "y": 1898.0528, + "direction": 1 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "GLfaIN6fDx3gqmEichxBM" + ], + "x": 2212.4029, + "y": 1751.892766666667, + "direction": 2 + }, + "meta": { + "updateAt": 1755244650005, + "createAt": 1755244650005 + } + }, + "QzSvNp81iKRqd3sb6aISf": { + "id": "QzSvNp81iKRqd3sb6aISf", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 1, + "start": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "PuLZie9O9warTXzmBPj3F" + ], + "x": 577.2163, + "y": 2100.6591, + "direction": 2 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "uwo4oDDnBN4kfBPECG8KI" + ], + "x": 1410.4029, + "y": 1695.2261, + "direction": 1 + }, + "meta": { + "updateAt": 1755244696995, + "createAt": 1755244696995 + } + }, + "kITBao6-8P7SK_ff97k-2": { + "id": "kITBao6-8P7SK_ff97k-2", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "N_yJVoCN4oUEDhYqdzApb" + ], + "x": 1410.4029, + "y": 1633.2261000000003, + "direction": 1 + }, + "end": { + "tableId": "vE9CQplxcHu3VwgfvH6Ip", + "columnIds": [ + "ETT9KRDf_r30ZaIHw_W4Z" + ], + "x": 1168.7528, + "y": 1674.3665, + "direction": 2 + }, + "meta": { + "updateAt": 1755245232309, + "createAt": 1755245232309 + } + }, + "OQwW56YRRoBNxUBnOtY2d": { + "id": "OQwW56YRRoBNxUBnOtY2d", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "columnIds": [ + "dsz0no4QmTBs-HMbe_HtT" + ], + "x": 2136.9627, + "y": 1113.1846, + "direction": 1 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "xlQ24QCitYSSl-z8f2vqG" + ], + "x": 1793.3577, + "y": 1377.9382666666668, + "direction": 2 + }, + "meta": { + "updateAt": 1755245596234, + "createAt": 1755245596234 + } + }, + "H4am77J3J4Na7-rDOKmfd": { + "id": "H4am77J3J4Na7-rDOKmfd", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 592.4539, + "y": 2219.8416, + "direction": 2 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "uTP3S6LnZ80gfxyTqBFS4" + ], + "x": 987.3577, + "y": 1589.938266666667, + "direction": 1 + }, + "meta": { + "updateAt": 1755245649050, + "createAt": 1755245649050 + } + }, + "9GYOocaxnboV8D9kxQeS3": { + "id": "9GYOocaxnboV8D9kxQeS3", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "N_yJVoCN4oUEDhYqdzApb" + ], + "x": 987.3577, + "y": 1248.6049333333335, + "direction": 1 + }, + "end": { + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "columnIds": [ + "k89CgIzT1rfGpbRQYrMMV" + ], + "x": 700.6879, + "y": 1629.485, + "direction": 2 + }, + "meta": { + "updateAt": 1755245813502, + "createAt": 1755245813502 + } + }, + "UsRTM6HH-m4I_Yj-PMq67": { + "id": "UsRTM6HH-m4I_Yj-PMq67", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "N_yJVoCN4oUEDhYqdzApb" + ], + "x": 987.3577, + "y": 1419.2716000000003, + "direction": 1 + }, + "end": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "SlovGoAbswPj9pLEDGAO_" + ], + "x": 602.2894, + "y": 1965.1714, + "direction": 2 + }, + "meta": { + "updateAt": 1755246043287, + "createAt": 1755246043287 + } + }, + "YMXMe_cfZm9_w1-6ezGAI": { + "id": "YMXMe_cfZm9_w1-6ezGAI", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "N_yJVoCN4oUEDhYqdzApb" + ], + "x": 984.3577, + "y": 1947.938266666667, + "direction": 1 + }, + "end": { + "tableId": "RTq5rHQupiXXJPXqpN8K5", + "columnIds": [ + "9CjuC803WcessEwff6HMj" + ], + "x": 614.7905, + "y": 2447.8575, + "direction": 2 + }, + "meta": { + "updateAt": 1755246082073, + "createAt": 1755246082073 + } + }, + "Gi6PQuZotHyfjLoLguJZD": { + "id": "Gi6PQuZotHyfjLoLguJZD", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "ZMGIWLFEswObjH2Sx0NlW", + "columnIds": [ + "2HB01q46-mugMjuOz85YG" + ], + "x": 2193.8551, + "y": 2169.6757, + "direction": 1 + }, + "end": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "PPYMa0hTpupMnPEWZEVp6" + ], + "x": 1401.4539, + "y": 2230.8416, + "direction": 2 + }, + "meta": { + "updateAt": 1755246555369, + "createAt": 1755246555369 + } + }, + "qNiuNG8jl-wxHmt0ja2NO": { + "id": "qNiuNG8jl-wxHmt0ja2NO", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "W_lPWGav23vY_3307ANtm", + "columnIds": [ + "0foA-8vQXe0ELhwLwMbSV" + ], + "x": 2198.0001, + "y": 2431.4885, + "direction": 1 + }, + "end": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "SlbGqJXf-rNePjMEvRIsr" + ], + "x": 1401.4539, + "y": 2322.8415999999997, + "direction": 2 + }, + "meta": { + "updateAt": 1755246873484, + "createAt": 1755246873484 + } + }, + "OGoh72K3oj3mjMp5_fkbb": { + "id": "OGoh72K3oj3mjMp5_fkbb", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 592.4539, + "y": 2441.8416, + "direction": 2 + }, + "end": { + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "columnIds": [ + "obuByh1ZWHr1IIkvgrbWr" + ], + "x": 1089.4145, + "y": 2350.3422, + "direction": 1 + }, + "meta": { + "updateAt": 1755247159760, + "createAt": 1755247159760 + } + }, + "mH_TEHhIXPHYKYEXq2olR": { + "id": "mH_TEHhIXPHYKYEXq2olR", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "columnIds": [ + "WfUhhigWFoqSS1vz3dWPx" + ], + "x": 2003.5122, + "y": 2509.7323, + "direction": 2 + }, + "end": { + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "columnIds": [ + "WIa81CxRFY76H8y3AD0z-" + ], + "x": 2201.2195, + "y": 2382.9521, + "direction": 1 + }, + "meta": { + "updateAt": 1755247405336, + "createAt": 1755247405336 + } + }, + "4feDg2-ittS_qtT7y9Xtm": { + "id": "4feDg2-ittS_qtT7y9Xtm", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "Dc6xDx_iwsVF1Z9ks1gPh", + "columnIds": [ + "CxChVMNZ0-lR_Qis-x2vD" + ], + "x": 2195.6054, + "y": 2378.7945, + "direction": 1 + }, + "end": { + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "columnIds": [ + "zd1xXBB6j-idV0F9EHSJ5" + ], + "x": 1553.8693, + "y": 2491.2512, + "direction": 2 + }, + "meta": { + "updateAt": 1755247786767, + "createAt": 1755247786767 + } + }, + "uLLzI8qiH1m1AzGwyXyIH": { + "id": "uLLzI8qiH1m1AzGwyXyIH", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 901.4539, + "y": 2381.8416, + "direction": 1 + }, + "end": { + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "columnIds": [ + "GyUE9E-9dNJyvlHKOedDq" + ], + "x": 603.7806, + "y": 2427.3665, + "direction": 2 + }, + "meta": { + "updateAt": 1755249801944, + "createAt": 1755249801944 + } + }, + "GHmupz9UOcqbMfH8khXZx": { + "id": "GHmupz9UOcqbMfH8khXZx", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "columnIds": [ + "dsz0no4QmTBs-HMbe_HtT" + ], + "x": 2197.9627, + "y": 1615.1846, + "direction": 1 + }, + "end": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "DBfXQ1o8_Uwy01-FyjWz0" + ], + "x": 1399.4539, + "y": 2199.8416, + "direction": 2 + }, + "meta": { + "updateAt": 1755355032132, + "createAt": 1755355032132 + } + }, + "6zhyWhPLK2REv99ouzbS_": { + "id": "6zhyWhPLK2REv99ouzbS_", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 592.4539, + "y": 2293.8416, + "direction": 2 + }, + "end": { + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "columnIds": [ + "CvilrbKyyz1NnLPndNkb8" + ], + "x": 1075, + "y": 1816, + "direction": 1 + }, + "meta": { + "updateAt": 1755476547241, + "createAt": 1755476547241 + } + }, + "ErucR4-YqniMnUrcdsKJp": { + "id": "ErucR4-YqniMnUrcdsKJp", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "ZMGIWLFEswObjH2Sx0NlW", + "columnIds": [ + "2HB01q46-mugMjuOz85YG" + ], + "x": 1933.1733, + "y": 1990.1302, + "direction": 1 + }, + "end": { + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "columnIds": [ + "x23F_sFvFpqLOXzldHBFn" + ], + "x": 1539.682, + "y": 2064.5905000000002, + "direction": 2 + }, + "meta": { + "updateAt": 1755476572319, + "createAt": 1755476572319 + } + }, + "cg6r5rpX4cJsqE85x4-uy": { + "id": "cg6r5rpX4cJsqE85x4-uy", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 592.4539, + "y": 2367.8416, + "direction": 2 + }, + "end": { + "tableId": "XWDManpabF2tsIxhMejP6", + "columnIds": [ + "lkmohF33yJzxDKZgvYZi7" + ], + "x": 1083, + "y": 2082, + "direction": 1 + }, + "meta": { + "updateAt": 1755476673143, + "createAt": 1755476673143 + } + }, + "SkiC6sB1ojvkODhsS60ld": { + "id": "SkiC6sB1ojvkODhsS60ld", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "W_lPWGav23vY_3307ANtm", + "columnIds": [ + "0foA-8vQXe0ELhwLwMbSV" + ], + "x": 2233.0456, + "y": 2153.3067, + "direction": 1 + }, + "end": { + "tableId": "XWDManpabF2tsIxhMejP6", + "columnIds": [ + "M4sylK12L-sbwc460lHp7" + ], + "x": 1541.7273, + "y": 2345.5455, + "direction": 2 + }, + "meta": { + "updateAt": 1755476695269, + "createAt": 1755476695269 + } + }, + "nXhazg5e2HfhSM91-NHLo": { + "id": "nXhazg5e2HfhSM91-NHLo", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "PuLZie9O9warTXzmBPj3F" + ], + "x": 592.2894, + "y": 1910.1714, + "direction": 4 + }, + "end": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "QntZma68vv35q1xARB2R4" + ], + "x": 612.2894, + "y": 2186.1714, + "direction": 2 + }, + "meta": { + "updateAt": 1755476992395, + "createAt": 1755476992395 + } + }, + "it74kJbg40Z9_cjVIisPD": { + "id": "it74kJbg40Z9_cjVIisPD", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 586.4539, + "y": 1594.0416, + "direction": 2 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "oUDsRmvN4I4k7BNNJR0y4" + ], + "x": 935.3577, + "y": 1189.2716, + "direction": 1 + }, + "meta": { + "updateAt": 1755479448345, + "createAt": 1755479448345 + } + }, + "dBaoBapnKwtLBRKiHqyTL": { + "id": "dBaoBapnKwtLBRKiHqyTL", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 2, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "1ZM86qoxmCcoKnqOpE2oj" + ], + "x": 987.3577, + "y": 1285.2716, + "direction": 1 + }, + "end": { + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "columnIds": [ + "RUTBvn2-51hfNG7Adcbh-" + ], + "x": 700.6879, + "y": 1629.485, + "direction": 2 + }, + "meta": { + "updateAt": 1755479688215, + "createAt": 1755479688215 + } + }, + "igy5Ns2bjd79UocDnODgu": { + "id": "igy5Ns2bjd79UocDnODgu", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "1ZM86qoxmCcoKnqOpE2oj" + ], + "x": 1676.3029000000001, + "y": 1312.5866999999998, + "direction": 2 + }, + "end": { + "tableId": "MgyqOOvja_MGR3f4xNT8T", + "columnIds": [ + "VUPZdWS7fM1J2QstRq4KR" + ], + "x": 2134.0658, + "y": 909.0087666666665, + "direction": 1 + }, + "meta": { + "updateAt": 1755479812192, + "createAt": 1755479812192 + } + }, + "-6P0QeZZJQRJ5_ZQjzb1M": { + "id": "-6P0QeZZJQRJ5_ZQjzb1M", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "1ZM86qoxmCcoKnqOpE2oj" + ], + "x": 1676.3029000000001, + "y": 1116.5866999999998, + "direction": 2 + }, + "end": { + "tableId": "QCNA57Pi6A9dJDgybxS5v", + "columnIds": [ + "LRN5qjIRZ18UOhqFbBLuo" + ], + "x": 2122.464, + "y": 492.6241666666667, + "direction": 1 + }, + "meta": { + "updateAt": 1755479838515, + "createAt": 1755479838515 + } + }, + "5p6IeLChVoXSw9jrqw-QW": { + "id": "5p6IeLChVoXSw9jrqw-QW", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2102.0074000000004, + "direction": 2 + }, + "end": { + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "columnIds": [ + "mOdd3p43Qb4VStgr1nWHB" + ], + "x": 1041.4963, + "y": 2482.8691, + "direction": 1 + }, + "meta": { + "updateAt": 1755479899081, + "createAt": 1755479899081 + } + }, + "cQhYkZcViYZwsv7f_k2ZC": { + "id": "cQhYkZcViYZwsv7f_k2ZC", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2057.6074, + "direction": 2 + }, + "end": { + "tableId": "XWDManpabF2tsIxhMejP6", + "columnIds": [ + "cp6LM5PcjxQXXXksE7tCl" + ], + "x": 1024.2728, + "y": 2310.3182, + "direction": 1 + }, + "meta": { + "updateAt": 1755479916812, + "createAt": 1755479916812 + } + }, + "svMBHbKKROqCgBpsX-WI7": { + "id": "svMBHbKKROqCgBpsX-WI7", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2106.9407333333334, + "direction": 2 + }, + "end": { + "tableId": "y6LxJSy1rKRbGC1ANZKOG", + "columnIds": [ + "YqJDZb-w4dCpGDbMaNC0j" + ], + "x": 1031.8693, + "y": 2491.2512, + "direction": 1 + }, + "meta": { + "updateAt": 1755479930090, + "createAt": 1755479930090 + } + }, + "e57qOlaGNqgfNVFBAoaDa": { + "id": "e57qOlaGNqgfNVFBAoaDa", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 1, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 1924.4074000000003, + "direction": 2 + }, + "end": { + "tableId": "IsMoJXzvtuoOFFt93qS0w", + "columnIds": [ + "Li6TetD-ZbH9MNKGAK0im" + ], + "x": 1038.208, + "y": 1564.4414, + "direction": 1 + }, + "meta": { + "updateAt": 1755480385013, + "createAt": 1755480385013 + } + }, + "VT_VzA9IwipmXjafcw9Mz": { + "id": "VT_VzA9IwipmXjafcw9Mz", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 1, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 588.5172, + "y": 1899.0359714285714, + "direction": 2 + }, + "end": { + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "columnIds": [ + "sWwdum3AkxFncLEFPN1CM" + ], + "x": 1008.6879, + "y": 1556.485, + "direction": 1 + }, + "meta": { + "updateAt": 1755480470466, + "createAt": 1755480470466 + } + }, + "3I5RkYjnDcuksJVgH8Jk4": { + "id": "3I5RkYjnDcuksJVgH8Jk4", + "identification": false, + "relationshipType": 8, + "startRelationshipType": 1, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "1ZM86qoxmCcoKnqOpE2oj" + ], + "x": 935.3577, + "y": 1177.2716, + "direction": 1 + }, + "end": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "1R3FQnBR2tpSdfkj3jipU" + ], + "x": 588.4539, + "y": 1596.4416, + "direction": 2 + }, + "meta": { + "updateAt": 1755480802836, + "createAt": 1755480802836 + } + }, + "yNXavIEUyRz9ijpnoapzg": { + "id": "yNXavIEUyRz9ijpnoapzg", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "1ZM86qoxmCcoKnqOpE2oj" + ], + "x": 883.3029, + "y": 1214.5866999999998, + "direction": 1 + }, + "end": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "3fZMQ9qB1DO8y44eJRKdt" + ], + "x": 597.5172, + "y": 1865.2074000000002, + "direction": 2 + }, + "meta": { + "updateAt": 1755481142307, + "createAt": 1755481142307 + } + }, + "1HarGgIch-Dmeztx6OVBZ": { + "id": "1HarGgIch-Dmeztx6OVBZ", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2110.4645428571425, + "direction": 2 + }, + "end": { + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "columnIds": [ + "qDieUIrgCa3bzZX6OWKcC" + ], + "x": 1036.2266, + "y": 2705.3851, + "direction": 1 + }, + "meta": { + "updateAt": 1755481487973, + "createAt": 1755481487973 + } + }, + "H0lzYKil7HgQU_yubc4sz": { + "id": "H0lzYKil7HgQU_yubc4sz", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "oNuTAELQcUrUMGz3PRJIW", + "columnIds": [ + "bBO5EQFcFAnvhtm8mQaiG" + ], + "x": 2140.1897, + "y": 2676.5029, + "direction": 1 + }, + "end": { + "tableId": "N9Zu0JeQXBcwLiuCqLotP", + "columnIds": [ + "nUQNtDBUrs6SFI5OPk5gp" + ], + "x": 1586.2266, + "y": 2705.3851, + "direction": 2 + }, + "meta": { + "updateAt": 1755481519997, + "createAt": 1755481519997 + } + }, + "ZIpohNrObd9sUVPeJmbkq": { + "id": "ZIpohNrObd9sUVPeJmbkq", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2020.6074, + "direction": 2 + }, + "end": { + "tableId": "Pa1u61sIGvzDtItserV5k", + "columnIds": [ + "_bHdGsO8d_89L_gSiQRmG" + ], + "x": 1014.3771, + "y": 1883.1031, + "direction": 1 + }, + "meta": { + "updateAt": 1755481631894, + "createAt": 1755481631894 + } + }, + "ZSp55xN4vwUYGz_Vth2aV": { + "id": "ZSp55xN4vwUYGz_Vth2aV", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "PuLZie9O9warTXzmBPj3F" + ], + "x": 2143.1217, + "y": 1706.2916, + "direction": 1 + }, + "end": { + "tableId": "Pa1u61sIGvzDtItserV5k", + "columnIds": [ + "wI0MMNv14UOrTsaYp1Iwo" + ], + "x": 1536.3771000000002, + "y": 1883.1031, + "direction": 2 + }, + "meta": { + "updateAt": 1755481643217, + "createAt": 1755481643217 + } + }, + "-innuV4-s0XLM5nzcY6qH": { + "id": "-innuV4-s0XLM5nzcY6qH", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 1983.6074000000003, + "direction": 2 + }, + "end": { + "tableId": "ZLEpY5EjuZV21718zf-Y1", + "columnIds": [ + "6i-Ag5fvYugIDFg9tH3HA" + ], + "x": 1039.1227, + "y": 1839.0937, + "direction": 1 + }, + "meta": { + "updateAt": 1755481788806, + "createAt": 1755481788806 + } + }, + "29R_28dluuNshr0cYiWmK": { + "id": "29R_28dluuNshr0cYiWmK", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1552.23, + "y": 860.8448000000001, + "direction": 8 + }, + "end": { + "tableId": "B8haiEbPc1lRBWTv1g25G", + "columnIds": [ + "0LanT5cVJX_uBb0Foh2NM" + ], + "x": 1478.0529000000001, + "y": 1018.5867, + "direction": 4 + }, + "meta": { + "updateAt": 1755483330609, + "createAt": 1755483330609 + } + }, + "NMZvzyFkfEHAC1ky3ra_L": { + "id": "NMZvzyFkfEHAC1ky3ra_L", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1818.73, + "y": 566.8448000000001, + "direction": 2 + }, + "end": { + "tableId": "QCNA57Pi6A9dJDgybxS5v", + "columnIds": [ + "QwfRq6xU7Vy-QoenynjXR" + ], + "x": 2122.464, + "y": 385.95750000000004, + "direction": 1 + }, + "meta": { + "updateAt": 1755483359049, + "createAt": 1755483359049 + } + }, + "K6ujfXDMBCmHruD8sWvXo": { + "id": "K6ujfXDMBCmHruD8sWvXo", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1818.73, + "y": 762.8448000000001, + "direction": 2 + }, + "end": { + "tableId": "MgyqOOvja_MGR3f4xNT8T", + "columnIds": [ + "VBy1PXlflYSQGeLRXkD3l" + ], + "x": 2134.0658, + "y": 802.3420999999998, + "direction": 1 + }, + "meta": { + "updateAt": 1755483387662, + "createAt": 1755483387662 + } + }, + "VroEhP44BVBCHx9WyFjhm": { + "id": "VroEhP44BVBCHx9WyFjhm", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1285.73, + "y": 534.1781333333333, + "direction": 1 + }, + "end": { + "tableId": "GDEF0_WuOpaYtsZxjn2zM", + "columnIds": [ + "7e7kPIVKM4VrUWTZADe-5" + ], + "x": 600.5444, + "y": 720.2669000000001, + "direction": 2 + }, + "meta": { + "updateAt": 1755483441006, + "createAt": 1755483441006 + } + }, + "2UJ97eZArC3FeTkEjPTUl": { + "id": "2UJ97eZArC3FeTkEjPTUl", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1285.73, + "y": 664.8448, + "direction": 1 + }, + "end": { + "tableId": "jO40Ej5EXImXnadoJo9bn", + "columnIds": [ + "YdLa5geill88c3UM5a_YR" + ], + "x": 603.7146, + "y": 1035.2656, + "direction": 2 + }, + "meta": { + "updateAt": 1755483519967, + "createAt": 1755483519967 + } + }, + "uTwhO_6djzNzMFo8rwOSQ": { + "id": "uTwhO_6djzNzMFo8rwOSQ", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 1, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "34psXzS7RLX0sWXZyDGGf" + ], + "x": 597.5172, + "y": 2042.8074000000004, + "direction": 2 + }, + "end": { + "tableId": "SEgsi7mbM-56Rsx5-qj8K", + "columnIds": [ + "pcpeNmSmqH_DtbRLyaYv9" + ], + "x": 1038.6154, + "y": 2163.4485, + "direction": 1 + }, + "meta": { + "updateAt": 1755486550772, + "createAt": 1755486550772 + } + }, + "FjAORncWifI_a1aI6e0LJ": { + "id": "FjAORncWifI_a1aI6e0LJ", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "ZMGIWLFEswObjH2Sx0NlW", + "columnIds": [ + "2HB01q46-mugMjuOz85YG" + ], + "x": 2167.0921, + "y": 2310.3344, + "direction": 1 + }, + "end": { + "tableId": "8GYAVBvZGaMFeq3QuXk_B", + "columnIds": [ + "l2g7xess8DY86_ZOm7Ca1" + ], + "x": 1597.4963, + "y": 2482.8691, + "direction": 2 + }, + "meta": { + "updateAt": 1755486693704, + "createAt": 1755486693704 + } + }, + "qVSQf-uiaof7exFrBC68_": { + "id": "qVSQf-uiaof7exFrBC68_", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "Jq5Qkun2FzQhCGKANIVOZ", + "columnIds": [ + "mfHtgzc_Aeocr6xkgwYWh" + ], + "x": 1128.6512, + "y": 344.2874, + "direction": 1 + }, + "end": { + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "columnIds": [ + "z86v6qGtWsrVhzZfUo_7d" + ], + "x": 608.4191, + "y": 1193.6232, + "direction": 2 + }, + "meta": { + "updateAt": 1755488677087, + "createAt": 1755488677087 + } + }, + "TkraffhuWi06www9bNecX": { + "id": "TkraffhuWi06www9bNecX", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "6ajvOCaGuXU9pzV0Y9jEi", + "columnIds": [ + "n7IyDCZLDqfEo49XRYtYR" + ], + "x": 1285.73, + "y": 795.5114666666666, + "direction": 1 + }, + "end": { + "tableId": "PdXX5ghGi8ZK89G9OjtnQ", + "columnIds": [ + "QD0EVLU6BeTsEsNO3MAgd" + ], + "x": 608.4191, + "y": 1329.6232, + "direction": 2 + }, + "meta": { + "updateAt": 1755488700401, + "createAt": 1755488700401 + } } }, "indexEntities": {}, "indexColumnEntities": {}, - "memoEntities": {} + "memoEntities": { + "d30wBLeMKKvv4a59vIp-W": { + "id": "d30wBLeMKKvv4a59vIp-W", + "value": "", + "ui": { + "x": 203, + "y": 1069, + "zIndex": 4838, + "width": 116, + "height": 100, + "color": "" + }, + "meta": { + "updateAt": 1755480369678, + "createAt": 1755480369678 + } + } + } } } \ No newline at end of file diff --git a/app/Database/dbmsv2_init.sql b/app/Database/dbmsv2_init.sql index 256ca7e..0c9cab0 100644 --- a/app/Database/dbmsv2_init.sql +++ b/app/Database/dbmsv2_init.sql @@ -15,6 +15,492 @@ /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +-- +-- Table structure for table `accountinfo` +-- + +DROP TABLE IF EXISTS `accountinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accountinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `userinfo_uid` int(11) NOT NULL COMMENT '관리자정보', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `bank` int(11) NOT NULL COMMENT '은행', + `title` varchar(255) NOT NULL COMMENT '사유', + `alias` varchar(50) NOT NULL COMMENT '입출금자명', + `issue_at` date NOT NULL COMMENT '입출금일자', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '압출금액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_accountinfo` (`userinfo_uid`), + KEY `FK_clientinfo_TO_accountinfo` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_accountinfo` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_user_TO_accountinfo` FOREIGN KEY (`userinfo_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='예치금계좌'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `accountinfo` +-- + +LOCK TABLES `accountinfo` WRITE; +/*!40000 ALTER TABLE `accountinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `accountinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `clientinfo` +-- + +DROP TABLE IF EXISTS `clientinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientinfo` ( + `code` varchar(20) NOT NULL COMMENT '고객코드', + `user_uid` int(11) NOT NULL COMMENT '관리자정보', + `role` varchar(50) NOT NULL DEFAULT 'user', + `name` varchar(100) NOT NULL, + `phone` varchar(50) DEFAULT NULL, + `email` varchar(50) NOT NULL, + `history` text DEFAULT NULL COMMENT 'history', + `account_balance` int(11) NOT NULL DEFAULT 0 COMMENT '예치금', + `coupon_balance` int(11) NOT NULL DEFAULT 0 COMMENT '쿠폰수', + `point_balance` int(11) NOT NULL DEFAULT 0 COMMENT '포인트', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`code`), + UNIQUE KEY `UQ_name` (`name`), + KEY `FK_user_TO_clientinfo` (`user_uid`), + CONSTRAINT `FK_user_TO_clientinfo` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='고객정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `clientinfo` +-- + +LOCK TABLES `clientinfo` WRITE; +/*!40000 ALTER TABLE `clientinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `clientinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `couponinfo` +-- + +DROP TABLE IF EXISTS `couponinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `couponinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `userinfo_uid` int(11) NOT NULL COMMENT '관리자정보', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `title` varchar(255) NOT NULL, + `cnt` int(11) NOT NULL DEFAULT 0 COMMENT '갯수', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_couponinfo` (`userinfo_uid`), + KEY `FK_clientinfo_TO_couponinfo` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_couponinfo` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_user_TO_couponinfo` FOREIGN KEY (`userinfo_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='쿠폰정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `couponinfo` +-- + +LOCK TABLES `couponinfo` WRITE; +/*!40000 ALTER TABLE `couponinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `couponinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `csinfo` +-- + +DROP TABLE IF EXISTS `csinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `csinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `serverinfo_code` varchar(20) DEFAULT NULL COMMENT '서버코드', + `type` varchar(20) NOT NULL COMMENT '구분(KCS,VCS)', + `ip` varchar(50) NOT NULL, + `accountid` varchar(50) DEFAULT NULL, + `domain` varchar(100) DEFAULT NULL, + `price` int(11) NOT NULL DEFAULT 0 COMMENT '기본금액', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '서비스금액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `UQ_ip` (`ip`), + KEY `FK_serverinfo_TO_csinfo` (`serverinfo_code`), + CONSTRAINT `FK_serverinfo_TO_csinfo` FOREIGN KEY (`serverinfo_code`) REFERENCES `serverinfo` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='CS정보(한서버 여러개 앞단 등록가능)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `csinfo` +-- + +LOCK TABLES `csinfo` WRITE; +/*!40000 ALTER TABLE `csinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `csinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `ipinfo` +-- + +DROP TABLE IF EXISTS `ipinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ipinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `lineinfo_uid` int(11) NOT NULL COMMENT '회선정보', + `serverinfo_code` varchar(20) DEFAULT NULL COMMENT '서버코드', + `ip` char(16) NOT NULL, + `price` int(11) NOT NULL DEFAULT 0 COMMENT '기본금액', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '서비스금액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `UQ_ip` (`ip`), + KEY `FK_lineinfo_TO_ipinfo` (`lineinfo_uid`), + KEY `FK_serverinfo_TO_ipinfo` (`serverinfo_code`), + CONSTRAINT `FK_lineinfo_TO_ipinfo` FOREIGN KEY (`lineinfo_uid`) REFERENCES `lineinfo` (`uid`), + CONSTRAINT `FK_serverinfo_TO_ipinfo` FOREIGN KEY (`serverinfo_code`) REFERENCES `serverinfo` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' IP 정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `ipinfo` +-- + +LOCK TABLES `ipinfo` WRITE; +/*!40000 ALTER TABLE `ipinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `ipinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `lineinfo` +-- + +DROP TABLE IF EXISTS `lineinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `lineinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `type` varchar(20) NOT NULL COMMENT '회선구분', + `title` varchar(100) NOT NULL, + `bandwith` varchar(20) NOT NULL COMMENT 'IP 대역', + `start_at` date DEFAULT NULL COMMENT '개통일', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `UQ_title` (`title`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='회선 정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `lineinfo` +-- + +LOCK TABLES `lineinfo` WRITE; +/*!40000 ALTER TABLE `lineinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `lineinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `partinfo` +-- + +DROP TABLE IF EXISTS `partinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `partinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `type` enum('CPU','RAM','DISK','SOFTWARE') NOT NULL COMMENT '형식', + `title` varchar(50) NOT NULL, + `price` int(11) NOT NULL DEFAULT 0 COMMENT '기본금액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `UQ_title` (`title`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='PART정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `partinfo` +-- + +LOCK TABLES `partinfo` WRITE; +/*!40000 ALTER TABLE `partinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `partinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `payment_month` +-- + +DROP TABLE IF EXISTS `payment_month`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payment_month` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `user_uid` int(11) NOT NULL COMMENT '관리자정보(결제처리자)', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `serviceinfo_coide` varchar(20) NOT NULL COMMENT '서비스코드', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '청구금액', + `billing_at` date DEFAULT NULL COMMENT '지급기한일', + `pay_method` varchar(20) DEFAULT NULL COMMENT '자뷸방법(ACCOUNT,COUPON)', + `status` varchar(20) NOT NULL DEFAULT 'default' COMMENT '상태(PAID,UNPAID)', + `updated_at` timestamp NULL DEFAULT NULL COMMENT '지불처리일', + `created_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '청구발행일', + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_payment_month` (`user_uid`), + KEY `FK_serviceinfo_TO_payment_month` (`serviceinfo_coide`), + KEY `FK_clientinfo_TO_payment_month` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_payment_month` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_serviceinfo_TO_payment_month` FOREIGN KEY (`serviceinfo_coide`) REFERENCES `serviceinfo` (`code`), + CONSTRAINT `FK_user_TO_payment_month` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='월별결제정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `payment_month` +-- + +LOCK TABLES `payment_month` WRITE; +/*!40000 ALTER TABLE `payment_month` DISABLE KEYS */; +/*!40000 ALTER TABLE `payment_month` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `payment_onetime` +-- + +DROP TABLE IF EXISTS `payment_onetime`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payment_onetime` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `user_uid` int(11) NOT NULL COMMENT '관리자정보(결제처리자)', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `serviceinfo_code` varchar(20) NOT NULL COMMENT '서비스코드', + `title` varchar(50) DEFAULT NULL COMMENT '일회성 제목(제품명)', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '청구금액', + `pay_method` varchar(20) DEFAULT NULL COMMENT '지불방법(ACCOUNT,COUPON)', + `status` varchar(20) NOT NULL DEFAULT 'default' COMMENT '상태(PAID,UNPAID)', + `updated_at` timestamp NULL DEFAULT NULL COMMENT '지불처리일', + `created_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '청구발행일(지불기한일)', + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_payment_onetime` (`user_uid`), + KEY `FK_serviceinfo_TO_payment_onetime` (`serviceinfo_code`), + KEY `FK_clientinfo_TO_payment_onetime` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_payment_onetime` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_serviceinfo_TO_payment_onetime` FOREIGN KEY (`serviceinfo_code`) REFERENCES `serviceinfo` (`code`), + CONSTRAINT `FK_user_TO_payment_onetime` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='일회성결제정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `payment_onetime` +-- + +LOCK TABLES `payment_onetime` WRITE; +/*!40000 ALTER TABLE `payment_onetime` DISABLE KEYS */; +/*!40000 ALTER TABLE `payment_onetime` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `pointinfo` +-- + +DROP TABLE IF EXISTS `pointinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pointinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `userinfo_uid` int(11) NOT NULL COMMENT '관리자정보', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `title` varchar(255) NOT NULL, + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '포인트액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_pointinfo` (`userinfo_uid`), + KEY `FK_clientinfo_TO_pointinfo` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_pointinfo` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_user_TO_pointinfo` FOREIGN KEY (`userinfo_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='포인트정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `pointinfo` +-- + +LOCK TABLES `pointinfo` WRITE; +/*!40000 ALTER TABLE `pointinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `pointinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `serverinfo` +-- + +DROP TABLE IF EXISTS `serverinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `serverinfo` ( + `code` varchar(20) NOT NULL COMMENT '서버코드', + `serviceinfo_code` varchar(20) DEFAULT NULL COMMENT '서비스코드', + `title` varchar(50) NOT NULL, + `price` int(11) NOT NULL DEFAULT 0 COMMENT '기본금액', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '서비스금액', + `status` varchar(20) NOT NULL DEFAULT 'default', + `manufactur_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '제조일', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`code`), + KEY `FK_serviceinfo_TO_serverinfo` (`serviceinfo_code`), + CONSTRAINT `FK_serviceinfo_TO_serverinfo` FOREIGN KEY (`serviceinfo_code`) REFERENCES `serviceinfo` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='서버정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `serverinfo` +-- + +LOCK TABLES `serverinfo` WRITE; +/*!40000 ALTER TABLE `serverinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `serverinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `serverinfo_partinfo` +-- + +DROP TABLE IF EXISTS `serverinfo_partinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `serverinfo_partinfo` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `serverinfo_code` varchar(20) NOT NULL COMMENT '서버코드', + `partinfo_uid` int(11) NOT NULL COMMENT 'part정보', + `cnt` tinyint(4) NOT NULL DEFAULT 1 COMMENT 'cpu 갯수', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '서비스금액', + `extra` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '추가정보(RAID등)', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`uid`), + KEY `FK_serverinfo_TO_serverinfo_partinfo` (`serverinfo_code`), + KEY `FK_partinfo_TO_serverinfo_partinfo` (`partinfo_uid`), + CONSTRAINT `FK_partinfo_TO_serverinfo_partinfo` FOREIGN KEY (`partinfo_uid`) REFERENCES `partinfo` (`uid`), + CONSTRAINT `FK_serverinfo_TO_serverinfo_partinfo` FOREIGN KEY (`serverinfo_code`) REFERENCES `serverinfo` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='서버정보_part정보(CASECADE)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `serverinfo_partinfo` +-- + +LOCK TABLES `serverinfo_partinfo` WRITE; +/*!40000 ALTER TABLE `serverinfo_partinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `serverinfo_partinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `serviceinfo` +-- + +DROP TABLE IF EXISTS `serviceinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `serviceinfo` ( + `code` varchar(20) NOT NULL COMMENT '서비스코드', + `user_uid` int(11) NOT NULL COMMENT '관리자정보', + `clientinfo_code` varchar(20) NOT NULL COMMENT '고객코드', + `type` varchar(20) NOT NULL COMMENT '서비스형식((일발, 방어,전용,VPN,대체,,테스트,자사,코로케이션)', + `location` varchar(20) DEFAULT NULL COMMENT '지역코드(chiba,tokyo,3center)', + `billing_at` date NOT NULL COMMENT '청구일', + `start_at` date NOT NULL COMMENT '시작일', + `end_at` date DEFAULT NULL COMMENT '종료일', + `amount` int(11) NOT NULL DEFAULT 0 COMMENT '서비스금액(IP+월별ITEM+CS의 서비스금액의 총합금액)', + `history` text DEFAULT NULL COMMENT 'history', + `status` varchar(20) NOT NULL DEFAULT 'default' COMMENT '상태', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`code`), + KEY `FK_user_TO_serviceinfo` (`user_uid`), + KEY `FK_clientinfo_TO_serviceinfo` (`clientinfo_code`), + CONSTRAINT `FK_clientinfo_TO_serviceinfo` FOREIGN KEY (`clientinfo_code`) REFERENCES `clientinfo` (`code`), + CONSTRAINT `FK_user_TO_serviceinfo` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='서비스정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `serviceinfo` +-- + +LOCK TABLES `serviceinfo` WRITE; +/*!40000 ALTER TABLE `serviceinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `serviceinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `switchinfo` +-- + +DROP TABLE IF EXISTS `switchinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `switchinfo` ( + `code` varchar(20) NOT NULL COMMENT 'switch코드', + `serverinfo_code` varchar(20) DEFAULT NULL COMMENT '서버코드', + `status` varchar(20) NOT NULL DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`code`), + KEY `FK_serverinfo_TO_switchinfo` (`serverinfo_code`), + CONSTRAINT `FK_serverinfo_TO_switchinfo` FOREIGN KEY (`serverinfo_code`) REFERENCES `serverinfo` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='스위치정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `switchinfo` +-- + +LOCK TABLES `switchinfo` WRITE; +/*!40000 ALTER TABLE `switchinfo` DISABLE KEYS */; +/*!40000 ALTER TABLE `switchinfo` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `user` -- @@ -49,6 +535,37 @@ LOCK TABLES `user` WRITE; INSERT INTO `user` VALUES (1,'choi.jh','$2y$10$.vl2FtwJsjMNFCJJm3ISDu7m3vBB85mZ5fRQxcfI0uK/2D1e8Xora','최준흠','choi.jh@prime-idc.jp','0434434327','manager,cloudflare,firewall,security,director,master','default','2025-08-08 01:03:54','2023-03-23 06:50:04',NULL),(2,'cho.jh','$2y$10$ot/aUXR/W1n4Q3dZA2dZCOxQrpVb2Bq31Y7xFQS3G6D1gtImmyBjm','조준희','cho.jh@prime-idc.jp','','manager,cloudflare,security','default','2025-08-08 01:03:41','2023-03-24 02:20:48',NULL),(4,'kimdy','$2y$10$18uyn94xdprzAnt.oYZ5weAvb8rRLhkz/SdQrjEK7yuGhCr9PlUCC','김동윤','kimdy@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:10:17','2023-03-24 02:21:50',NULL),(5,'kimhy','$2y$10$.yEKVqY.F7HoSOZijl4uyeulUtfAQ4EDRiyR2JpgFYBuKw.mZoZvG','김효영','khy@prime-idc.jp',NULL,'manager,security,director','default','2025-06-24 01:11:41','2023-03-24 02:23:18',NULL),(6,'kim.eh','$2y$10$YmwicI.Br4XNyGamfRADMOu.qlkwKd2fmnNkL7YIkNHGndvqYPnCq','김은혁','kim.eh@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:09:38','2023-03-24 02:23:52',NULL),(7,'leeph','$2y$10$lR739WzJsW6rDLgchYs7buek4BYeTlKHTQY60RDqRms9Io7RSY3AC','이풍호','leeph@prime-idc.jp',NULL,'manager,cloudflare','default','2023-05-29 16:32:52','2023-03-24 02:24:21',NULL),(8,'jinmingyu','$2y$10$PI8WA6d/z4hDE6hxJoUhbuMH3vTTWH0Ry2Z6fTLUUpwQGaE/9bEZa','김명옥','jinmingyu@idcjp.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:09:47','2023-03-24 02:25:00',NULL),(9,'kangdh','$2y$10$gu9OS2DDQQ5H.Hh61t3BSOUp87l35q.xsduVSxvCcn8IgA4jrATgG','강동헌','kang.dh@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:06:54','2023-03-24 02:25:48',NULL),(10,'yoohs','$2y$10$TGASk98FuZ6Ux6FDquu1aO3rztA01MCle/Vs1.3iaEMQzakAbCzJy','유혜성','yoo.hs@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:08:08','2023-03-24 02:26:31',NULL),(11,'kim.yh','$2y$10$8GciQXpKYiR3TDWQfh9JjOQAQ.YWGoOSCL0a0/w4XACO0mUgjjbWy','김영환','kim.yh@idcjp.jp','','manager,cloudflare,firewall,security','default','2025-08-08 01:08:02','2023-03-24 02:27:05',NULL),(12,'yunmuj','$2y$10$zkgwGVj2JSOVIsxLe8fePe1gvWWaCemfZMktzBlrN8oLb3CKydkZC','윤무정','yunmuj@idcjp.jp','','manager,cloudflare','default','2025-08-08 01:07:57','2023-03-24 02:27:59',NULL),(13,'kim.mt','$2y$10$3dfkA0oq4LqiJOmjbBGKe.p0Dhj/MDqjoTdw11BOPF/H2qJqnEuHO','김문태','kim.mt@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:07:44','2023-03-24 02:28:31',NULL),(14,'shin.ms','$2y$10$.jaDkGtm/gZK3ZDF.fJUGOwMI7Zif5588X5AxSMvvk238RDI7spQ6','신민수','shin.ms@idcjp.jp',NULL,'manager,cloudflare','default','2023-03-24 02:29:00','2023-03-24 02:29:00',NULL),(15,'park.sm','$2y$10$BwMxw0uvw2tAdQ0EZQ2/hu.Q7zYu7mbuBPPRTaa14bwG3VLf0cXfu','박선미','park.sm@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:07:33','2023-03-24 02:29:34',NULL),(24,'kobn','$2y$10$pWM/XFfSNeSng32sypbDX.WaR4UlM4EDkYKCQfFkYIOC7Ppg0nc5G','고병남','ko@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:10:02','2024-10-29 06:30:19',NULL),(25,'jeong.sg','$2y$10$OzH6140JztiUEs4s/VHbPOxfxubFooqwqVhGpdFG8OJCGAFXNu546','정상구','jeong.sg@prime-idc.jp','','manager,cloudflare,security','default','2025-08-08 01:07:26','2025-01-23 00:29:46',NULL),(43,'test1234','$2y$10$21wlqjmdfDlIr0vAjDzs6ubIchc1DwOG61GGkZUwY7gb9GMTxA96K','test1234','test@gmail.com','0434434327','manager,cloudflare','default','2025-07-02 08:03:20','2025-07-01 06:05:11',NULL),(44,'test233332','$2y$10$9FqxChYQ3qlbGL0dFvHsQuEl3ELiH3R5kDytQqmFa2b2i9RYpjeQy','123423422','test2333@co.kr22','2343422','manager','default','2025-07-11 07:24:04','2025-07-11 07:23:13',NULL),(45,'kim.jh','$2y$10$voCle9yFWWhGhQ0JrH46puLYySJYq6O41/BSrKxx0MHWyO8KDf97u','김준한','kim.jh@prime-idc.jp','','manager,cloudflare,security','default',NULL,'2025-08-08 02:27:49',NULL); /*!40000 ALTER TABLE `user` ENABLE KEYS */; UNLOCK TABLES; + +-- +-- Table structure for table `user_history` +-- + +DROP TABLE IF EXISTS `user_history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `user_history` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `user_uid` int(11) NOT NULL COMMENT '관리자정보', + `title` varchar(255) NOT NULL, + `content` text DEFAULT NULL, + `status` varchar(20) DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + KEY `FK_user_TO_user_history` (`user_uid`), + CONSTRAINT `FK_user_TO_user_history` FOREIGN KEY (`user_uid`) REFERENCES `user` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='작업 기록 로그'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `user_history` +-- + +LOCK TABLES `user_history` WRITE; +/*!40000 ALTER TABLE `user_history` DISABLE KEYS */; +/*!40000 ALTER TABLE `user_history` ENABLE KEYS */; +UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -59,4 +576,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-08-15 14:30:48 +-- Dump completed on 2025-08-18 12:53:40 diff --git a/app/Database/user.sql b/app/Database/user.sql new file mode 100644 index 0000000..00d73fe --- /dev/null +++ b/app/Database/user.sql @@ -0,0 +1,62 @@ +-- MySQL dump 10.19 Distrib 10.3.28-MariaDB, for Linux (x86_64) +-- +-- Host: localhost Database: dbms +-- ------------------------------------------------------ +-- Server version 10.3.28-MariaDB-log + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `user` +-- + +DROP TABLE IF EXISTS `user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `user` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `id` varchar(20) NOT NULL, + `passwd` varchar(255) NOT NULL, + `name` varchar(20) NOT NULL, + `email` varchar(50) NOT NULL, + `mobile` varchar(20) DEFAULT NULL, + `role` varchar(255) DEFAULT NULL, + `status` varchar(20) DEFAULT 'default', + `updated_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `UQ_id` (`id`), + UNIQUE KEY `UQ_email` (`email`) +) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8 COMMENT='관리자정보'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `user` +-- + +LOCK TABLES `user` WRITE; +/*!40000 ALTER TABLE `user` DISABLE KEYS */; +INSERT INTO `user` VALUES (1,'choi.jh','$2y$10$.vl2FtwJsjMNFCJJm3ISDu7m3vBB85mZ5fRQxcfI0uK/2D1e8Xora','최준흠','choi.jh@prime-idc.jp','0434434327','manager,cloudflare,firewall,security,director,master','default','2025-08-08 01:03:54','2023-03-23 06:50:04',NULL),(2,'cho.jh','$2y$10$ot/aUXR/W1n4Q3dZA2dZCOxQrpVb2Bq31Y7xFQS3G6D1gtImmyBjm','조준희','cho.jh@prime-idc.jp','','manager,cloudflare,security','default','2025-08-08 01:03:41','2023-03-24 02:20:48',NULL),(4,'kimdy','$2y$10$18uyn94xdprzAnt.oYZ5weAvb8rRLhkz/SdQrjEK7yuGhCr9PlUCC','김동윤','kimdy@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:10:17','2023-03-24 02:21:50',NULL),(5,'kimhy','$2y$10$.yEKVqY.F7HoSOZijl4uyeulUtfAQ4EDRiyR2JpgFYBuKw.mZoZvG','김효영','khy@prime-idc.jp',NULL,'manager,security,director','default','2025-06-24 01:11:41','2023-03-24 02:23:18',NULL),(6,'kim.eh','$2y$10$YmwicI.Br4XNyGamfRADMOu.qlkwKd2fmnNkL7YIkNHGndvqYPnCq','김은혁','kim.eh@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:09:38','2023-03-24 02:23:52',NULL),(7,'leeph','$2y$10$lR739WzJsW6rDLgchYs7buek4BYeTlKHTQY60RDqRms9Io7RSY3AC','이풍호','leeph@prime-idc.jp',NULL,'manager,cloudflare','default','2023-05-29 16:32:52','2023-03-24 02:24:21',NULL),(8,'jinmingyu','$2y$10$PI8WA6d/z4hDE6hxJoUhbuMH3vTTWH0Ry2Z6fTLUUpwQGaE/9bEZa','김명옥','jinmingyu@idcjp.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:09:47','2023-03-24 02:25:00',NULL),(9,'kangdh','$2y$10$gu9OS2DDQQ5H.Hh61t3BSOUp87l35q.xsduVSxvCcn8IgA4jrATgG','강동헌','kang.dh@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:06:54','2023-03-24 02:25:48',NULL),(10,'yoohs','$2y$10$TGASk98FuZ6Ux6FDquu1aO3rztA01MCle/Vs1.3iaEMQzakAbCzJy','유혜성','yoo.hs@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:08:08','2023-03-24 02:26:31',NULL),(11,'kim.yh','$2y$10$8GciQXpKYiR3TDWQfh9JjOQAQ.YWGoOSCL0a0/w4XACO0mUgjjbWy','김영환','kim.yh@idcjp.jp','','manager,cloudflare,firewall,security','default','2025-08-08 01:08:02','2023-03-24 02:27:05',NULL),(12,'yunmuj','$2y$10$zkgwGVj2JSOVIsxLe8fePe1gvWWaCemfZMktzBlrN8oLb3CKydkZC','윤무정','yunmuj@idcjp.jp','','manager,cloudflare','default','2025-08-08 01:07:57','2023-03-24 02:27:59',NULL),(13,'kim.mt','$2y$10$3dfkA0oq4LqiJOmjbBGKe.p0Dhj/MDqjoTdw11BOPF/H2qJqnEuHO','김문태','kim.mt@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:07:44','2023-03-24 02:28:31',NULL),(14,'shin.ms','$2y$10$.jaDkGtm/gZK3ZDF.fJUGOwMI7Zif5588X5AxSMvvk238RDI7spQ6','신민수','shin.ms@idcjp.jp',NULL,'manager,cloudflare','default','2023-03-24 02:29:00','2023-03-24 02:29:00',NULL),(15,'park.sm','$2y$10$BwMxw0uvw2tAdQ0EZQ2/hu.Q7zYu7mbuBPPRTaa14bwG3VLf0cXfu','박선미','park.sm@idcjp.jp','','manager,cloudflare,security','default','2025-08-08 01:07:33','2023-03-24 02:29:34',NULL),(24,'kobn','$2y$10$pWM/XFfSNeSng32sypbDX.WaR4UlM4EDkYKCQfFkYIOC7Ppg0nc5G','고병남','ko@prime-idc.jp',NULL,'manager,cloudflare,security','default','2025-06-24 01:10:02','2024-10-29 06:30:19',NULL),(25,'jeong.sg','$2y$10$OzH6140JztiUEs4s/VHbPOxfxubFooqwqVhGpdFG8OJCGAFXNu546','정상구','jeong.sg@prime-idc.jp','','manager,cloudflare,security','default','2025-08-08 01:07:26','2025-01-23 00:29:46',NULL),(43,'test1234','$2y$10$21wlqjmdfDlIr0vAjDzs6ubIchc1DwOG61GGkZUwY7gb9GMTxA96K','test1234','test@gmail.com','0434434327','manager,cloudflare','default','2025-07-02 08:03:20','2025-07-01 06:05:11',NULL),(44,'test233332','$2y$10$9FqxChYQ3qlbGL0dFvHsQuEl3ELiH3R5kDytQqmFa2b2i9RYpjeQy','123423422','test2333@co.kr22','2343422','manager','default','2025-07-11 07:24:04','2025-07-11 07:23:13',NULL),(45,'kim.jh','$2y$10$voCle9yFWWhGhQ0JrH46puLYySJYq6O41/BSrKxx0MHWyO8KDf97u','김준한','kim.jh@prime-idc.jp','','manager,cloudflare,security','default',NULL,'2025-08-08 02:27:49',NULL); +/*!40000 ALTER TABLE `user` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2025-08-14 18:16:36 diff --git a/app/Entities/CommonEntity.php b/app/Entities/CommonEntity.php index bfb014a..239894d 100644 --- a/app/Entities/CommonEntity.php +++ b/app/Entities/CommonEntity.php @@ -47,6 +47,10 @@ abstract class CommonEntity extends Entity { return $this->attributes['created_at']; } + public function getPrice(): string + { + return $this->attributes['price']; + } public function getStatus(): string|null { return $this->attributes['status'] ?? null; diff --git a/app/Entities/Customer/ClientHistoryEntity.php b/app/Entities/Customer/ClientHistoryEntity.php deleted file mode 100644 index f572c2e..0000000 --- a/app/Entities/Customer/ClientHistoryEntity.php +++ /dev/null @@ -1,11 +0,0 @@ -attributes['serviceinfo_uid']); - } -} diff --git a/app/Entities/Equipment/CSEntity.php b/app/Entities/Equipment/CSEntity.php new file mode 100644 index 0000000..00bc29a --- /dev/null +++ b/app/Entities/Equipment/CSEntity.php @@ -0,0 +1,14 @@ +attributes['code']; - } -} diff --git a/app/Entities/Equipment/Part/IpEntity.php b/app/Entities/Equipment/IpEntity.php similarity index 80% rename from app/Entities/Equipment/Part/IpEntity.php rename to app/Entities/Equipment/IpEntity.php index bbdf040..8ee0b30 100644 --- a/app/Entities/Equipment/Part/IpEntity.php +++ b/app/Entities/Equipment/IpEntity.php @@ -1,8 +1,8 @@ attributes['domain']; - } -} diff --git a/app/Entities/Equipment/Part/LineEntity.php b/app/Entities/Equipment/Part/LineEntity.php deleted file mode 100644 index 6fbc8b0..0000000 --- a/app/Entities/Equipment/Part/LineEntity.php +++ /dev/null @@ -1,16 +0,0 @@ -attributes['bandwith']; - } -} diff --git a/app/Entities/Equipment/Part/PartEntity.php b/app/Entities/Equipment/Part/PartEntity.php deleted file mode 100644 index d6269b0..0000000 --- a/app/Entities/Equipment/Part/PartEntity.php +++ /dev/null @@ -1,14 +0,0 @@ -attributes['code']; + } } diff --git a/app/Helpers/AuthHelper.php b/app/Helpers/AuthHelper.php new file mode 100644 index 0000000..56be0bc --- /dev/null +++ b/app/Helpers/AuthHelper.php @@ -0,0 +1,27 @@ +setTitleField(UserModel::TITLE); + } + public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string + { + switch ($field) { + case 'id': + case 'passwd': + $form = form_password($field, "", [...$extras]); + break; + default: + $form = parent::getFieldForm($field, $value, $viewDatas, $extras); + break; + } + return $form; + } // +} diff --git a/app/Helpers/CommonHelper.php b/app/Helpers/CommonHelper.php new file mode 100644 index 0000000..7f1fed6 --- /dev/null +++ b/app/Helpers/CommonHelper.php @@ -0,0 +1,437 @@ +_myAuth) { + $this->_myAuth = service('myauth'); + } + return $this->_myAuth; + } + final public function setTitleField(string $field): void + { + $this->_titleField = $field; + } + final public function getTitleField(): string + { + if (!$this->_titleField) { + throw new \Exception("titleField가 지정되지 않았습니다."); + } + return $this->_titleField; + } + final public function setViewDatas(array $viewDatas): void + { + $this->_viewDatas = $viewDatas; + } + final public function getViewDatas(string $key) + { + if (!array_key_exists($key, $this->_viewDatas)) { + throw new \Exception("{$key}에 해당하는 ViewData가 존재하지 않습니다."); + } + return $this->_viewDatas[$key]; + } + + //IP관련련 + final public function isDomainName(string $domain): bool + { + $pattern_validation = '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\&\.\/\?\:@\-_=#])*/'; + return preg_match($pattern_validation, $domain); + } + + final public function isIPAddress(string $ip, $type = false): bool + { + switch ($type) { + case 'ipv4': + $result = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); + break; + case 'ipv6': + $result = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); + break; + case 'all': + $result = filter_var($ip, FILTER_VALIDATE_IP); + break; + default: + $result = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE); + break; + } + return $result; + } + final function isValidCIDR(string $cidr, $type = "ipv4"): bool + { + // 형식: "IP/Prefix" 형태인지 검사 + if (!preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}\/\d{1,2}$/', $cidr)) { + return false; + } + list($ip, $prefix) = explode('/', $cidr); + // IP 유효성 검사 + if (!$this->isIPAddress($ip, $type)) { + return false; + } + // Prefix는 0~32 사이인지 검사 (IPv4 기준) + $prefix = (int) $prefix; + if ($prefix < 0 || $prefix > 32) { + return false; + } + return true; + } + final public function isHostName(string $host): bool + { + $pattern_validation = '/[a-zA-Z0-9\.\/\?\:@\*\-_=#]/'; + return preg_match($pattern_validation, $host); + } + final public function isMobile() + { + // Check the server headers to see if they're mobile friendly + if (isset($_SERVER["HTTP_X_WAP_PROFILE"])) { + return true; + } + // If the http_accept header supports wap then it's a mobile too + if (preg_match("/wap\.|\.wap/i", $_SERVER["HTTP_ACCEPT"])) { + return true; + } + // Still no luck? Let's have a look at the user agent on the browser. If it contains + // any of the following, it's probably a mobile device. Kappow! + if (isset($_SERVER["HTTP_USER_AGENT"])) { + $user_agents = array("midp", "j2me", "avantg", "docomo", "novarra", "palmos", "palmsource", "240x320", "opwv", "chtml", "pda", "windows\ ce", "mmp\/", "blackberry", "mib\/", "symbian", "wireless", "nokia", "hand", "mobi", "phone", "cdm", "up\.b", "audio", "SIE\-", "SEC\-", "samsung", "HTC", "mot\-", "mitsu", "sagem", "sony", "alcatel", "lg", "erics", "vx", "NEC", "philips", "mmm", "xx", "panasonic", "sharp", "wap", "sch", "rover", "pocket", "benq", "java", "pt", "pg", "vox", "amoi", "bird", "compal", "kg", "voda", "sany", "kdd", "dbt", "sendo", "sgh", "gradi", "jb", "\d\d\di", "moto"); + foreach ($user_agents as $user_string) { + if (preg_match("/" . $user_string . "/i", $_SERVER["HTTP_USER_AGENT"])) { + return true; + } + } + } + // Let's NOT return "mobile" if it's an iPhone, because the iPhone can render normal pages quite well. + if (preg_match("/iphone/i", $_SERVER["HTTP_USER_AGENT"])) { + return false; + } + // None of the above? Then it's probably not a mobile device. + return false; + } + + final public function alert(string $msg, $url = null) + { + $msg = preg_replace("/\r/", "\\r", $msg); + $msg = preg_replace("/\n/", "\\n", $msg); + $msg = preg_replace("/\'/", "\'", $msg); + $msg = preg_replace("/\"/", "\'", $msg); + $msg = "alert(\"{$msg}\");"; + switch ($url) { + case 'close': + $msg .= "window.close();"; + break; + default: + $msg .= $url ? "location.href=\"{$url}\";" : ""; + break; + } + return ""; + } + + final public function getRandomString($length = 10, $characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") + { + return substr(str_shuffle($characters), 0, $length); + } + + final public function getPasswordString($length = 8) + { + return $this->getRandomString($length, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?"); + } + + // byte값을 알아보기 쉽게 변환 + final public function getSizeForHuman($bytes) + { + $ext = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $unitCount = 0; + for (; $bytes > 1024; $unitCount++) { + $bytes /= 1024; + } + return floor($bytes) . $ext[$unitCount]; + } + + // Proxy등을 통하여 Client_IP가 알수없는경우 실제사용자의 IP를 가져오기 위한것 + final public function getClientIP($clientIP = false) + { + if (isset($_SERVER['HTTP_CLIENT_IP'])) { + $clientIP = $_SERVER['HTTP_CLIENT_IP']; + } else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $clientIP = $_SERVER['HTTP_X_FORWARDED_FOR']; + } else if (isset($_SERVER['HTTP_X_FORWARDED'])) { + $clientIP = $_SERVER['HTTP_X_FORWARDED']; + } else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) { + $clientIP = $_SERVER['HTTP_FORWARDED_FOR']; + } else if (isset($_SERVER['HTTP_FORWARDED'])) { + $clientIP = $_SERVER['HTTP_FORWARDED']; + } else if (isset($_SERVER['REMOTE_ADDR'])) { + $clientIP = $_SERVER['REMOTE_ADDR']; + } + return $clientIP; + } + + // (EX:192.168.1.0 -> 192.168.001.000) + final public function cidrToIpRange(string $cidr): array + { + if (!$this->isValidCIDR($cidr)) { + return []; // 유효하지 않으면 빈 배열 반환 + } + + list($ip, $prefix) = explode('/', $cidr); + $prefix = (int) $prefix; + + $ipLong = ip2long($ip); + $netmask = ~((1 << (32 - $prefix)) - 1); + $network = $ipLong & $netmask; + $broadcast = $network | ~$netmask; + + $ips = []; + + // 첫 IP부터 마지막 IP까지 반복 + for ($i = $network; $i <= $broadcast; $i++) { + $ips[] = long2ip($i); + } + + return $ips; + } + + public function getFieldLabel(string $field, string $label, array $viewDatas, array $extras = []): string + { + switch ($field) { + default: + // required가 있으면 class 추가 + $extras = (strpos($viewDatas['control']['field_rules'][$field], 'required') !== false) ? ["class" => "text-danger", "required" => "", ...$extras] : $extras; + $label = form_label($label, $field, $extras); + break; + } + return $label; + } + + // header.php에서 getFieldForm_Helper사용 + protected function form_dropdown_disabled(string $field, mixed $value, array $formOptions, array $extras = [], mixed $disabledKey = null): string + { + // $formOptions는 필터 옵션 배열로, key는 필터 엔티티의 PK, value는 필터 엔티티 객체 + $extra = ""; + foreach ($extras as $option_tag => $option_value) { + $extra = sprintf(" %s=\"%s\"", $option_tag, htmlspecialchars($option_value, ENT_QUOTES, 'UTF-8')); + } + $html = sprintf("'; + return $html; + } + public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string + { + switch ($field) { + case 'email': + $form = form_input($field, $value ?? "", ["placeholder" => "예)test@example.com", ...$extras]); + break; + case 'mobile': + case 'phone': + $form = form_input($field, $value ?? "", ["placeholder" => "예)010-0010-0010", ...$extras]); + break; + case 'role': + if (!is_array($viewDatas['control']['filter_optons'][$field])) { + throw new \Exception(__METHOD__ . "에서 {$field}의 field_options가 array형태가 아닙니다."); + } + // create, modify, create_form, modify_form일때 checkbox로 표시 + if (in_array($viewDatas['control']['action'], ['create_form', 'modify_form'])) { + $forms = []; + foreach ($viewDatas['control']['filter_optons'][$field] as $key => $filterEntity) { + if ($key !== '') { // 빈값은 제외 + $values = is_array($value) ? $value : explode(DEFAULTS["DELIMITER_ROLE"], $value); + //form_check에는 "class" => "form-control" 쓰면 않되거나 form-check를 써야함 + $forms[] = form_checkbox("{$field}[]", $key, in_array($key, $values)) . $filterEntity->getTitle(); + } + } + $form = implode(" ", $forms); + } else { + $form = $this->form_dropdown_disabled($field, $value, $viewDatas['control']['filter_optons'][$field], $extras); + } + break; + case 'expired_at': + case 'billing_at': + case 'start_at': + case 'updated_at': + case 'created_at': + $extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' calender' : 'calender'; + $form = form_input($field, $value ?? "", $extras); + break; + case 'description': + case 'content': + $extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' tinymce' : 'tinymce'; + $form = form_textarea($field, $value ?? "", ['id' => $field, ...$extras]); + break; + case 'clientinfo_uid': + case 'ownerinfo_uid': + case 'user_uid': + $extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' select-field' : 'select-field'; + $form = $this->form_dropdown_disabled($field, $value, $viewDatas['control']['filter_optons'][$field], $extras); + break; + default: + if (in_array($field, $viewDatas['control']['filter_fields'])) { + $form = $this->form_dropdown_disabled($field, $value, $viewDatas['control']['filter_optons'][$field], $extras); + } else { + $form = form_input($field, $value ?? "", $extras); + } + break; + } + return $form; + } + + public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null + { + switch ($field) { + case 'user_uid': + $value = array_key_exists($value, $viewDatas['control']['filter_optons'][$field]) && $viewDatas['control']['filter_optons'][$field][$value] ? $viewDatas['control']['filter_optons'][$field][$value]->getTitle() : ""; + break; + case 'role': + $roles = []; + foreach (explode(DEFAULTS["DELIMITER_ROLE"], $value) as $key) { + $roles[] = $viewDatas['control']['filter_optons'][$field][$key]->getTitle() ?? ""; + } + $value = implode(" , ", $roles); + break; + case 'updated_at': + case 'created_at': + case 'deleted_at': + $value = $value ? date("Y-m-d", strtotime($value)) : ""; + break; + case 'price': + case 'amount': + $value = number_format($value) . "원"; + break; + default: + if (in_array($field, $viewDatas['control']['filter_fields'])) { + //index 액션에서만 filter_options를 변경시 선택된 값을 변경하는 기능 + if ($viewDatas['control']['action'] == 'index') { + $extras["onChange"] = sprintf( + "document.location.href='%s/toggle/%s/%s?%s='+this.options[this.selectedIndex].value", + current_url(), + $viewDatas['entity']->getPK(), + $field, + $field + ); + $value = $this->getFieldForm($field, $value, $viewDatas, $extras); + } else { + $value = array_key_exists($value, $viewDatas['control']['filter_optons'][$field]) ? $viewDatas['control']['filter_optons'][$field][$value]->getTitle() : ""; + } + } + break; + } + if (is_array($value)) { + echo __METHOD__ . "에서 오류: {$field}의 값이 Array형태입니다"; + exit; + } + return $value; + } + final public function getListRowColor(mixed $entity, string $field = 'status', string $value = DEFAULTS['STATUS']): string + { + return $entity->isMatched($field, $value) ? "" : 'class="table-danger"'; + } + + public function getListLabel(string $field, string $label, array $viewDatas, array $extras = []): string + { + switch ($field) { + default: + $label = $this->getFieldLabel($field, $label, $viewDatas, $extras); + if (isset($viewDatas['order_field']) && $viewDatas['order_field'] == $field) { + $label .= $viewDatas['order_value'] == 'ASC' ? ICONS["UP"] : ICONS["DOWN"]; + } + $query = $viewDatas['uri']->getQuery(['except' => ['order_field', 'order_value']]); + $query .= empty($query) ? "" : "&"; + $query .= "order_field={$field}&order_value="; + $query .= isset($viewDatas['order_value']) && $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC"; + $label = anchor(current_url() . "?" . $query, $label); + break; + } + return $label; + } + + public function getListButton(string $action, string $label, array $viewDatas, array $extras = []): string + { + switch ($action) { + case 'create': + // echo current_url() . '/' . $action . '?' . $viewDatas['uri']->getQuery(); + $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; + $action = form_label( + $label ? $label : ICONS['ADD'], + $action, + [ + "data-src" => current_url() . '/' . $action . '?' . $viewDatas['uri']->getQuery(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + case 'modify': + $oldBatchJobUids = old("batchjob_uids", null); + $oldBatchJobUids = is_array($oldBatchJobUids) ? $oldBatchJobUids : [$oldBatchJobUids]; + $checkbox = form_checkbox([ + "id" => "checkbox_uid_{$viewDatas['entity']->getPK()}", + "name" => "batchjob_uids[]", + "value" => $viewDatas['entity']->getPK(), + "class" => "batchjobuids_checkboxs", + "checked" => in_array($viewDatas['entity']->getPK(), $oldBatchJobUids) + ]); + $action = $checkbox . form_label( + $label ? $label : $viewDatas['cnt'], + $action, + [ + "data-src" => current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK() . '?' . $viewDatas['uri']->getQuery(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + case 'view': + $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; + $action = form_label( + $label ? $label : ICONS['SEARCH'], + $action, + [ + "data-src" => current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + case 'delete': + $extras = ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self", ...$extras]; + $action = anchor( + current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), + $label ? $label : ICONS['DELETE'], + $extras + ); + break; + case 'batchjob': + $action = form_submit("batchjob_submit", $label ? $label : '일괄처리', [ + "formaction" => current_url() . '/batchjob', + "class" => "btn btn-outline btn-warning", + // "onclick" => "return submitBatchJob()" + ]); + break; + case 'batchjob_delete': + $action = form_submit("batchjob_submit", $label ? $label : '일괄삭제', [ + "formaction" => current_url() . '/batchjob_delete', + "class" => "btn btn-outline btn-danger", + // "onclick" => "return submitBatchJobDelete()" + ]); + break; + default: + $action = ""; + break; + } + return $action; + } +} diff --git a/app/Helpers/Customer/ClientHistoryHelper.php b/app/Helpers/Customer/ClientHistoryHelper.php deleted file mode 100644 index 41aec42..0000000 --- a/app/Helpers/Customer/ClientHistoryHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: ClientHistoryModel::TITLE); - } -} diff --git a/app/Helpers/Customer/ServiceHistoryHelper.php b/app/Helpers/Customer/ServiceHistoryHelper.php deleted file mode 100644 index 5ed23de..0000000 --- a/app/Helpers/Customer/ServiceHistoryHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: ServiceHistoryModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/CodeHelper.php b/app/Helpers/Equipment/CodeHelper.php deleted file mode 100644 index def9a39..0000000 --- a/app/Helpers/Equipment/CodeHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: CodeModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/DomainHelper.php b/app/Helpers/Equipment/DomainHelper.php similarity index 91% rename from app/Helpers/Equipment/Part/DomainHelper.php rename to app/Helpers/Equipment/DomainHelper.php index b789ba9..76bcb43 100644 --- a/app/Helpers/Equipment/Part/DomainHelper.php +++ b/app/Helpers/Equipment/DomainHelper.php @@ -1,10 +1,10 @@ setTitleField(field: CpuModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/DefenceHelper.php b/app/Helpers/Equipment/Part/DefenceHelper.php deleted file mode 100644 index e08f979..0000000 --- a/app/Helpers/Equipment/Part/DefenceHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: DefenceModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/IpHelper.php b/app/Helpers/Equipment/Part/IpHelper.php deleted file mode 100644 index b806f56..0000000 --- a/app/Helpers/Equipment/Part/IpHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: IpModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/LineHelper.php b/app/Helpers/Equipment/Part/LineHelper.php deleted file mode 100644 index fe0ffee..0000000 --- a/app/Helpers/Equipment/Part/LineHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: LineModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/PartHelper.php b/app/Helpers/Equipment/Part/PartHelper.php deleted file mode 100644 index ec01dcb..0000000 --- a/app/Helpers/Equipment/Part/PartHelper.php +++ /dev/null @@ -1,13 +0,0 @@ -setTitleField(field: RamModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/SoftwareHelper.php b/app/Helpers/Equipment/Part/SoftwareHelper.php deleted file mode 100644 index 85709dc..0000000 --- a/app/Helpers/Equipment/Part/SoftwareHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: SoftwareModel::TITLE); - } -} diff --git a/app/Helpers/Equipment/Part/StorageHelper.php b/app/Helpers/Equipment/Part/StorageHelper.php deleted file mode 100644 index 64a021a..0000000 --- a/app/Helpers/Equipment/Part/StorageHelper.php +++ /dev/null @@ -1,14 +0,0 @@ -setTitleField(field: StorageModel::TITLE); - } -} diff --git a/app/Helpers/HomeHelper.php b/app/Helpers/HomeHelper.php new file mode 100644 index 0000000..a9a9cae --- /dev/null +++ b/app/Helpers/HomeHelper.php @@ -0,0 +1,88 @@ +setTitleField(field: ServicePaymentModel::TITLE); + } + + public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null + { + switch ($field) { + case 'item_uid': + $value = $viewDatas['control']['filter_optons'][$viewDatas['entity']->getItemType()][$value]->getTitle(); + break; + case 'type': + // echo $value; + // dd($viewDatas['control']['filter_optons'][$field]); + $value = $viewDatas['control']['filter_optons'][$field][$value]->getTitle(); + break; + case 'amount': + $value = number_format($value) . "원"; + break; + case 'status': + $value = parent::getFieldView($field, $value, $viewDatas, $extras); + break; + case "LINE": + case "IP": + case "SERVER": + case "CPU": + case "RAM": + case "STORAGE": + case "SOFTWARE": + case "DEFENCE": + case "DOMAIN": + // if ($field == 'DEFENCE') { + // dd($viewDatas['entity']->getItemEntities($field)); + // } + $temps = []; + foreach ($viewDatas['entity']->getItemEntities($field) as $itemEntity) { + $temps[] = $viewDatas['control']['filter_optons'][$field][$itemEntity->getItemUid()]->getTitle(); + } + $value = implode("
", $temps); + break; + default: + if (in_array($field, $viewDatas['control']['filter_fields'])) { + if (array_key_exists($value, $viewDatas['control']['filter_optons'][$field])) { + $value = $viewDatas['control']['filter_optons'][$field][$value]->getTitle(); + } else { + $value = ""; + } + } + break; + } + if (is_array($value)) { + echo __METHOD__ . "에서 오류: {$field}의 값이 Array형태입니다"; + exit; + } + return $value; + } + public function getListButton(string $action, string $label, array $viewDatas, array $extras = []): string + { + switch ($action) { + case 'new_service_view': + $extras = ["class" => "btn btn-outline btn-light btn-circle", "target" => "_self", ...$extras]; + $action = form_label( + $label ? $label : ICONS['SEARCH'], + $action, + [ + "data-src" => '/admin/customer/service/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + default: + $action = parent::getListButton($action, $label, $viewDatas, $extras); + break; + } + return $action; + } +} diff --git a/app/Helpers/MyLogHelper.php b/app/Helpers/MyLogHelper.php new file mode 100644 index 0000000..2a421af --- /dev/null +++ b/app/Helpers/MyLogHelper.php @@ -0,0 +1,54 @@ +setTitleField(MyLogModel::TITLE); + } + public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null + { + switch ($field) { + case 'content': + $value = nl2br($value); + break; + default: + if (in_array($field, $viewDatas['control']['filter_fields'])) { + if (array_key_exists($value, $viewDatas['control']['filter_optons'][$field])) { + $value = $viewDatas['control']['filter_optons'][$field][$value]->getTitle(); + } else { + $value = ""; + } + } + break; + } + if (is_array($value)) { + echo __METHOD__ . "에서 오류: {$field}의 값이 Array형태입니다"; + exit; + } + return $value; + } + public function getListButton(string $action, string $label, array $viewDatas, array $extras = []): string + { + switch ($action) { + case 'modify': + $action = $viewDatas['cnt']; + break; + case 'create': + case 'delete': + case 'batchjob': + case 'batchjob_delete': + $action = ""; + break; + default: + $action = parent::getListButton($action, $label, $viewDatas, $extras); + break; + } + return $action; + } +} diff --git a/app/Helpers/UserHelper.php b/app/Helpers/UserHelper.php new file mode 100644 index 0000000..e669aa1 --- /dev/null +++ b/app/Helpers/UserHelper.php @@ -0,0 +1,27 @@ +setTitleField(UserModel::TITLE); + } + public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string + { + switch ($field) { + case 'passwd': + case 'confirmpassword': + $form = form_password($field, "", [...$extras]); + break; + default: + $form = parent::getFieldForm($field, $value, $viewDatas, $extras); + break; + } + return $form; + } // +} diff --git a/app/Language/en/Customer/ClientHistory.php b/app/Language/en/Customer/ClientHistory.php deleted file mode 100644 index 4bedfd4..0000000 --- a/app/Language/en/Customer/ClientHistory.php +++ /dev/null @@ -1,20 +0,0 @@ - "고객History정보", - 'label' => [ - 'clientinfo_uid' => "고객명", - 'title' => "제목", - 'description' => "상세정보", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "신청일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default' - ], - "STATUS" => [ - 'default' => "사용중", - "pause" => "일시정지", - ], -]; diff --git a/app/Language/en/Customer/ServiceHistory.php b/app/Language/en/Customer/ServiceHistory.php deleted file mode 100644 index 43daca1..0000000 --- a/app/Language/en/Customer/ServiceHistory.php +++ /dev/null @@ -1,20 +0,0 @@ - "서비스History정보", - 'label' => [ - 'serviceinfo_uid' => "서비스명", - 'title' => "제목", - 'description' => "상세정보", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "신청일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default' - ], - "STATUS" => [ - 'default' => "사용중", - "pause" => "일시정지", - ], -]; diff --git a/app/Language/en/Equipment/Part/Defence.php b/app/Language/en/Equipment/CS.php similarity index 100% rename from app/Language/en/Equipment/Part/Defence.php rename to app/Language/en/Equipment/CS.php diff --git a/app/Language/en/Equipment/Code.php b/app/Language/en/Equipment/Code.php deleted file mode 100644 index 2ac6637..0000000 --- a/app/Language/en/Equipment/Code.php +++ /dev/null @@ -1,19 +0,0 @@ - "서버장비정보", - 'label' => [ - 'code' => "코드", - 'status' => "사용여부", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default', - ], - "STATUS" => [ - 'default' => "사용가능", - 'occupied' => "서비스중", - "format" => "포맷요청중", - ], -]; diff --git a/app/Language/en/Equipment/Part/Ip.php b/app/Language/en/Equipment/Ip.php similarity index 100% rename from app/Language/en/Equipment/Part/Ip.php rename to app/Language/en/Equipment/Ip.php diff --git a/app/Language/en/Equipment/Part/Line.php b/app/Language/en/Equipment/Line.php similarity index 100% rename from app/Language/en/Equipment/Part/Line.php rename to app/Language/en/Equipment/Line.php diff --git a/app/Language/en/Equipment/Part/Cpu.php b/app/Language/en/Equipment/Part/Cpu.php deleted file mode 100644 index 50d3291..0000000 --- a/app/Language/en/Equipment/Part/Cpu.php +++ /dev/null @@ -1,20 +0,0 @@ - "CPU정보", - 'label' => [ - 'model' => "모델", - 'price' => "가격", - 'description' => "설명", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default' - ], - "STATUS" => [ - 'default' => "사용가능", - "pause" => "일시정지", - ], -]; diff --git a/app/Language/en/Equipment/Part/Domain.php b/app/Language/en/Equipment/Part/Domain.php deleted file mode 100644 index 3020f2c..0000000 --- a/app/Language/en/Equipment/Part/Domain.php +++ /dev/null @@ -1,20 +0,0 @@ - "Domain정보", - 'label' => [ - 'domain' => "도메인", - 'expired_at' => "종료일", - 'price' => "금액", - 'description' => "설명", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - "STATUS" => [ - 'default' => "사용가능", - "pause" => "일시정지", - "occupied" => "사용중", - "forbidden" => "금지됨", - ], -]; diff --git a/app/Language/en/Equipment/Part/Ram.php b/app/Language/en/Equipment/Part/Ram.php deleted file mode 100644 index 8dba0ae..0000000 --- a/app/Language/en/Equipment/Part/Ram.php +++ /dev/null @@ -1,21 +0,0 @@ - "RAM정보", - 'label' => [ - 'model' => "모델", - 'price' => "가격", - 'description' => "설명", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default' - ], - "STATUS" => [ - 'default' => "사용가능", - "pause" => "일시정지", - - ], -]; diff --git a/app/Language/en/Equipment/Part/Software.php b/app/Language/en/Equipment/Part/Software.php deleted file mode 100644 index 3c380da..0000000 --- a/app/Language/en/Equipment/Part/Software.php +++ /dev/null @@ -1,29 +0,0 @@ - "소프트웨어정보", - 'label' => [ - 'type' => "종류", - 'model' => "모델", - 'price' => "금액", - 'description' => "설명", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'type' => 'Windows', - 'status' => 'default' - ], - "TYPE" => [ - "Windows" => "Windows OS", - "Linux" => "Linux OS", - "Security" => "보안용", - "Virus" => "바이러스용", - "App" => "어플리케이션", - ], - "STATUS" => [ - 'default' => "사용가능", - "pause" => "일시정지", - ], -]; diff --git a/app/Language/en/Equipment/Part/Storage.php b/app/Language/en/Equipment/Part/Storage.php deleted file mode 100644 index 5e9609a..0000000 --- a/app/Language/en/Equipment/Part/Storage.php +++ /dev/null @@ -1,20 +0,0 @@ - "DISK정보", - 'label' => [ - 'model' => "모델", - 'price' => "가격", - 'description' => "설명", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일", - 'deleted_at' => "삭제일", - ], - 'DEFAULTS' => [ - 'status' => 'default' - ], - "STATUS" => [ - 'default' => "사용가능", - "pause" => "일시정지", - ], -]; diff --git a/app/Models/CommonModel.php b/app/Models/CommonModel.php index 4ef7686..2efcee9 100644 --- a/app/Models/CommonModel.php +++ b/app/Models/CommonModel.php @@ -10,8 +10,7 @@ abstract class CommonModel extends Model protected $table = ''; protected $primaryKey = ''; protected $useAutoIncrement = true; - // protected $returnType = 'array'; - + protected $returnType = 'array'; protected $useSoftDeletes = false; protected $protectFields = true; protected $allowedFields = []; diff --git a/app/Models/Customer/AccountModel.php b/app/Models/Customer/AccountModel.php index 802be0e..7c3ecf9 100644 --- a/app/Models/Customer/AccountModel.php +++ b/app/Models/Customer/AccountModel.php @@ -11,7 +11,6 @@ class AccountModel extends CustomerModel const TITLE = "title"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = AccountEntity::class; protected $allowedFields = [ "clientinfo_uid", "status", @@ -23,6 +22,7 @@ class AccountModel extends CustomerModel public function __construct() { parent::__construct(); + $this->returnType = AccountEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Customer/ClientHistoryModel.php b/app/Models/Customer/ClientHistoryModel.php deleted file mode 100644 index 8e32e99..0000000 --- a/app/Models/Customer/ClientHistoryModel.php +++ /dev/null @@ -1,44 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "clientinfo_uid": - $rule = "required|numeric"; - break; - case "title": - $rule = "required|trim|string"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Customer/ClientModel.php b/app/Models/Customer/ClientModel.php index f947fbd..cb66381 100644 --- a/app/Models/Customer/ClientModel.php +++ b/app/Models/Customer/ClientModel.php @@ -11,7 +11,6 @@ class ClientModel extends CustomerModel const TITLE = "name"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = ClientEntity::class; protected $allowedFields = [ "code", "name", @@ -27,6 +26,7 @@ class ClientModel extends CustomerModel public function __construct() { parent::__construct(); + $this->returnType = ClientEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Customer/CouponModel.php b/app/Models/Customer/CouponModel.php index 96beb69..159900a 100644 --- a/app/Models/Customer/CouponModel.php +++ b/app/Models/Customer/CouponModel.php @@ -11,7 +11,6 @@ class CouponModel extends CustomerModel const TITLE = "title"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = CouponEntity::class; protected $allowedFields = [ "clientinfo_uid", "status", @@ -22,6 +21,7 @@ class CouponModel extends CustomerModel public function __construct() { parent::__construct(); + $this->returnType = CouponEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Customer/PointModel.php b/app/Models/Customer/PointModel.php index faa32a2..a6da1a8 100644 --- a/app/Models/Customer/PointModel.php +++ b/app/Models/Customer/PointModel.php @@ -11,7 +11,6 @@ class PointModel extends CustomerModel const TITLE = "title"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = PointEntity::class; protected $allowedFields = [ "clientinfo_uid", "status", @@ -22,6 +21,7 @@ class PointModel extends CustomerModel public function __construct() { parent::__construct(); + $this->returnType = PointEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Customer/ServiceHistoryModel.php b/app/Models/Customer/ServiceHistoryModel.php deleted file mode 100644 index 3e0ee4f..0000000 --- a/app/Models/Customer/ServiceHistoryModel.php +++ /dev/null @@ -1,44 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "serviceinfo_uid": - $rule = "required|numeric"; - break; - case "title": - $rule = "required|trim|string"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Customer/ServiceModel.php b/app/Models/Customer/ServiceModel.php index 672eb5b..7fb8708 100644 --- a/app/Models/Customer/ServiceModel.php +++ b/app/Models/Customer/ServiceModel.php @@ -11,25 +11,22 @@ class ServiceModel extends CustomerModel const TITLE = "code"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = ServiceEntity::class; protected $allowedFields = [ - "clientinfo_uid", - "ownerinfo_uid", "user_uid", - "switchinfo_uid", - "codeinfo_uid", - "code", - "type", + "clientinfo_uid", + "clientinfo_name", "location", - "raid", + "code", "billing_at", "start_at", + "end_at", "status", "updated_at" ]; public function __construct() { parent::__construct(); + $this->returnType = ServiceEntity::class; } public function getFormFieldRule(string $action, string $field): string { @@ -37,17 +34,10 @@ class ServiceModel extends CustomerModel throw new \Exception(__FUNCTION__ . "=> field가 array 입니다.\n" . var_export($field, true)); } switch ($field) { - case "clientinfo_uid": - case "ownerinfo_uid": case "user_uid": - case "switchinfo_uid": - case "codeinfo_uid": + case "clientinfo_uid": $rule = "required|numeric"; break; - case "code": - $rule = "if_exist|trim|string"; - break; - case "type": case "location": case "status": $rule = "required|trim|string"; @@ -56,8 +46,8 @@ class ServiceModel extends CustomerModel case "start_at": $rule = "required|valid_date"; break; - case "raid": - $rule = "if_exist|trim|string"; + case "end_at": + $rule = "if_exist|valid_date"; break; default: $rule = parent::getFormFieldRule($action, $field); diff --git a/app/Models/Customer/ServicePaymentModel.php b/app/Models/Customer/ServicePaymentModel.php index 7fa5916..b60ccb9 100644 --- a/app/Models/Customer/ServicePaymentModel.php +++ b/app/Models/Customer/ServicePaymentModel.php @@ -12,7 +12,6 @@ class ServicePaymentModel extends CustomerModel const TITLE = "item_type"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = ServicePaymentEntity::class; protected $allowedFields = [ "serviceinfo_uid", "ownerinfo_uid", @@ -29,6 +28,7 @@ class ServicePaymentModel extends CustomerModel public function __construct() { parent::__construct(); + $this->returnType = ServicePaymentEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Equipment/Part/DefenceModel.php b/app/Models/Equipment/CSModel.php similarity index 87% rename from app/Models/Equipment/Part/DefenceModel.php rename to app/Models/Equipment/CSModel.php index bd561f2..9c94d4e 100644 --- a/app/Models/Equipment/Part/DefenceModel.php +++ b/app/Models/Equipment/CSModel.php @@ -1,17 +1,16 @@ returnType = CSEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/Equipment/CodeModel.php b/app/Models/Equipment/CodeModel.php deleted file mode 100644 index b3ca413..0000000 --- a/app/Models/Equipment/CodeModel.php +++ /dev/null @@ -1,43 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "code": - $rule = "required|trim|min_length[4]|max_length[20]"; - $rule .= in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->table}.{$field}]" : ""; - break; - case "status": - $rule = "required|trim|string"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Equipment/Part/IpModel.php b/app/Models/Equipment/IpModel.php similarity index 100% rename from app/Models/Equipment/Part/IpModel.php rename to app/Models/Equipment/IpModel.php diff --git a/app/Models/Equipment/Part/LineModel.php b/app/Models/Equipment/LineModel.php similarity index 100% rename from app/Models/Equipment/Part/LineModel.php rename to app/Models/Equipment/LineModel.php diff --git a/app/Models/Equipment/Part/DomainModel.php b/app/Models/Equipment/Part/DomainModel.php deleted file mode 100644 index da47962..0000000 --- a/app/Models/Equipment/Part/DomainModel.php +++ /dev/null @@ -1,43 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "domain": - $rule = "required|trim|valid_domain"; - $rule .= in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->table}.{$field}]" : ""; - break; - case "price": - $rule = "required|numeric"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Equipment/Part/PartModel.php b/app/Models/Equipment/Part/PartModel.php deleted file mode 100644 index ca36c84..0000000 --- a/app/Models/Equipment/Part/PartModel.php +++ /dev/null @@ -1,13 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "model": - $rule = "required|trim|string"; - $rule .= in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->table}.{$field}]" : ""; - break; - case "price": - $rule = "required|numeric"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Equipment/Part/SoftwareModel.php b/app/Models/Equipment/Part/SoftwareModel.php deleted file mode 100644 index f473147..0000000 --- a/app/Models/Equipment/Part/SoftwareModel.php +++ /dev/null @@ -1,48 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "model": - $rule = "required|trim|string"; - $rule .= in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->table}.{$field}]" : ""; - break; - case "type": - $rule = "required|trim|string"; - break; - case "price": - $rule = "required|numeric"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Equipment/Part/StorageModel.php b/app/Models/Equipment/Part/StorageModel.php deleted file mode 100644 index 8b09787..0000000 --- a/app/Models/Equipment/Part/StorageModel.php +++ /dev/null @@ -1,43 +0,0 @@ - field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case "model": - $rule = "required|trim|string"; - $rule .= in_array($action, ["create", "create_form"]) ? "|is_unique[{$this->table}.{$field}]" : ""; - break; - case "price": - $rule = "required|numeric"; - break; - default: - $rule = parent::getFormFieldRule($action, $field); - break; - } - return $rule; - } -} diff --git a/app/Models/Equipment/Part/CpuModel.php b/app/Models/Equipment/PartModel.php similarity index 79% rename from app/Models/Equipment/Part/CpuModel.php rename to app/Models/Equipment/PartModel.php index 59f4cde..de037eb 100644 --- a/app/Models/Equipment/Part/CpuModel.php +++ b/app/Models/Equipment/PartModel.php @@ -1,25 +1,25 @@ returnType = PartEntity::class; } final public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Models/UserModel.php b/app/Models/UserModel.php index 719c418..0e24f33 100644 --- a/app/Models/UserModel.php +++ b/app/Models/UserModel.php @@ -11,7 +11,6 @@ class UserModel extends CommonModel const TITLE = "name"; protected $table = self::TABLE; protected $primaryKey = self::PK; - protected $returnType = UserEntity::class; protected $allowedFields = [ "id", "passwd", @@ -25,6 +24,7 @@ class UserModel extends CommonModel public function __construct() { parent::__construct(); + $this->returnType = UserEntity::class; } public function getFormFieldRule(string $action, string $field): string { diff --git a/app/Services/Auth/AuthService.php b/app/Services/Auth/AuthService.php index 422215b..0f577ed 100644 --- a/app/Services/Auth/AuthService.php +++ b/app/Services/Auth/AuthService.php @@ -5,15 +5,16 @@ namespace App\Services\Auth; use App\Entities\UserEntity; use App\Services\CommonService; use CodeIgniter\Session\Session; +use CodeIgniter\Model; // 참고:https://github.com/SyntaxPhoenix/iloclient abstract class AuthService extends CommonService { private ?Session $_session = null; private $url_stack_name = "url_stack"; - protected function __construct() + protected function __construct(Model $model) { - parent::__construct(); + parent::__construct($model); $this->addClassName('Auth'); } abstract public function login(array $formDatas): UserEntity; diff --git a/app/Services/Auth/LocalService.php b/app/Services/Auth/LocalService.php index 184b8f6..b7cf91f 100644 --- a/app/Services/Auth/LocalService.php +++ b/app/Services/Auth/LocalService.php @@ -7,9 +7,9 @@ use App\Models\UserModel; class LocalService extends AuthService { - public function __construct() + public function __construct(UserModel $model) { - parent::__construct(); + parent::__construct($model); $this->addClassName('Local'); } final public function getModelClass(): UserModel diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php index 581343f..d0186dd 100644 --- a/app/Services/CommonService.php +++ b/app/Services/CommonService.php @@ -4,15 +4,17 @@ namespace App\Services; use App\Entities\FormOptionEntity; use App\Libraries\LogCollector; +use CodeIgniter\Model; abstract class CommonService { - private $_serviceDatas = []; private $_model = null; private $_classNames = []; - protected function __construct() {} - abstract public function getModelClass(): mixed; - abstract public function getEntityClass(): mixed; + private $_serviceDatas = []; + protected function __construct(Model $model) + { + $this->_model = $model; + } abstract public function getFormFields(): array; abstract public function getFilterFields(): array; abstract public function getBatchJobFields(): array; @@ -54,7 +56,7 @@ abstract class CommonService final protected function getModel(): mixed { if (!$this->_model) { - $this->_model = $this->getModelClass(); + throw new \Exception("Model이 정의되지 않았습니다. " . __METHOD__); } return $this->_model; } diff --git a/app/Services/Customer/ClientHistoryService.php b/app/Services/Customer/ClientHistoryService.php deleted file mode 100644 index 61c1ff2..0000000 --- a/app/Services/Customer/ClientHistoryService.php +++ /dev/null @@ -1,57 +0,0 @@ -addClassName('ClientHistory'); - } - public function getModelClass(): ClientHistoryModel - { - return new ClientHistoryModel(); - } - public function getEntityClass(): ClientHistoryEntity - { - return new ClientHistoryEntity(); - } - public function getFormFields(): array - { - return [ - "clientinfo_uid", - "title", - "description", - ]; - } - public function getFilterFields(): array - { - return ["clientinfo_uid", 'status']; - } - public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['clientinfo_uid', 'title', 'status', 'created_at']; - } - //FieldForm관련용 - public function getFormFieldOption(string $field, array $options = []): array - { - switch ($field) { - case 'clientinfo_uid': - $options = $this->getClientService()->getEntities(); - break; - default: - $options = parent::getFormFieldOption($field, $options); - break; - } - return $options; - } -} diff --git a/app/Services/Customer/CustomerService.php b/app/Services/Customer/CustomerService.php index dd1203c..ef98ee8 100644 --- a/app/Services/Customer/CustomerService.php +++ b/app/Services/Customer/CustomerService.php @@ -16,15 +16,17 @@ use App\Services\Equipment\Part\SoftwareService; use App\Services\Equipment\Part\StorageService; use App\Services\Equipment\ServerService; use App\Services\UserService; +use CodeIgniter\Model; abstract class CustomerService extends CommonService { private ?UserService $_userService = null; private ?ClientService $_clientService = null; + private ?ServerService $_serverService = null; private $_equipmentService = []; - protected function __construct() + protected function __construct(Model $model) { - parent::__construct(); + parent::__construct($model); $this->addClassName('Customer'); } final public function getClientService(): ClientService @@ -48,6 +50,13 @@ abstract class CustomerService extends CommonService } return $this->_serviceService; } + final public function getServerService(): ServerService + { + if (!$this->_serverService) { + $this->_serverService = new ServerService(); + } + return $this->_serverService; + } //ServiceItemController,ServiceController에서 사용 final public function getServiceItemLinkService(string $key): mixed { diff --git a/app/Services/Customer/ServiceHistoryService.php b/app/Services/Customer/ServiceHistoryService.php deleted file mode 100644 index 6296f1c..0000000 --- a/app/Services/Customer/ServiceHistoryService.php +++ /dev/null @@ -1,44 +0,0 @@ -addClassName('ServiceHistory'); - } - public function getModelClass(): ServiceHistoryModel - { - return new ServiceHistoryModel(); - } - public function getEntityClass(): ServiceHistoryEntity - { - return new ServiceHistoryEntity(); - } - public function getFormFields(): array - { - return [ - "serviceinfo_uid", - "title", - "description", - ]; - } - public function getFilterFields(): array - { - return ["serviceinfo_uid", 'status']; - } - public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['serviceinfo_uid', 'title', 'status', 'created_at']; - } - //FieldForm관련용 -} diff --git a/app/Services/Customer/ServiceService.php b/app/Services/Customer/ServiceService.php index 5368ada..2e5f62a 100644 --- a/app/Services/Customer/ServiceService.php +++ b/app/Services/Customer/ServiceService.php @@ -3,44 +3,22 @@ namespace App\Services\Customer; use App\Entities\Customer\ServiceEntity; -use App\Entities\Equipment\CodeEntity; - -use App\Entities\Equipment\SwitchEntity; use App\Models\Customer\ServiceModel; -use App\Services\Customer\ServiceItemService; -use App\Services\Equipment\CodeService; -use App\Services\Equipment\SwitchService; + class ServiceService extends CustomerService { - private ?CodeService $_codeService = null; - private ?SwitchService $_switchService = null; - private ?ServiceItemService $_serviceItemService = null; private ?ServicePaymentService $_servicePaymentService = null; private ?string $_searchIP = null; public function __construct() { - parent::__construct(); + parent::__construct(new ServiceModel()); $this->addClassName('Service'); } - public function getModelClass(): ServiceModel - { - return new ServiceModel(); - } - public function getEntityClass(): ServiceEntity - { - return new ServiceEntity(); - } public function getFormFields(): array { return [ "clientinfo_uid", - "ownerinfo_uid", - "type", - "location", - "switchinfo_uid", - "codeinfo_uid", - "raid", "billing_at", "start_at", "status" @@ -48,7 +26,7 @@ class ServiceService extends CustomerService } public function getFilterFields(): array { - return ["clientinfo_uid", 'ownerinfo_uid', 'user_uid', 'type', 'location', 'switchinfo_uid', 'codeinfo_uid', 'raid', 'status']; + return ["user_uid", "clientinfo_uid", 'status']; } public function getBatchJobFields(): array { @@ -56,28 +34,7 @@ class ServiceService extends CustomerService } public function getIndexFields(): array { - return ['clientinfo_uid', 'ownerinfo_uid', 'type', 'location', 'switchinfo_uid', 'codeinfo_uid', 'raid', 'billing_at', 'start_at', 'updated_at', 'status', 'user_uid']; - } - public function getCodeService(): CodeService - { - if (!$this->_codeService) { - $this->_codeService = new CodeService(); - } - return $this->_codeService; - } - public function getSwitchService(): SwitchService - { - if (!$this->_switchService) { - $this->_switchService = new SwitchService(); - } - return $this->_switchService; - } - public function getServiceItemService(): ServiceItemService - { - if (!$this->_serviceItemService) { - $this->_serviceItemService = new ServiceItemService(); - } - return $this->_serviceItemService; + return ['clientinfo_uid', 'location', 'billing_at', 'start_at', 'updated_at', 'status', 'user_uid']; } public function getServicePaymentService(): ServicePaymentService { @@ -115,11 +72,8 @@ class ServiceService extends CustomerService case 'user_uid': $options = $this->getUserService()->getEntities(); break; - case 'codeinfo_uid': - $options = $this->getCodeService()->getEntities(); - break; - case 'switchinfo_uid': - $options = $this->getSwitchService()->getEntities(); + case 'clientinfo_uid': + $options = $this->getClientService()->getEntities(); break; default: $options = parent::getFormFieldOption($field, $options); @@ -127,26 +81,10 @@ class ServiceService extends CustomerService } return $options; } - //Service마다 ItemEntities 설정용 - public function setItemEntitiesByService(ServiceEntity $entity): ServiceEntity - { - foreach (SERVICE_ITEM_TYPES as $item_type => $label) { - $itemEntities = $this->getServiceItemService()->getEntities([ - 'serviceinfo_uid' => $entity->getPK(), - 'item_type' => $item_type - ]); - $entity->setItemEntities($item_type, $itemEntities); - } - return $entity; - } //interval을 기준으로 최근 신규 서비스정보 가져오기 final public function getEntitiesByNewService(int $interval, string $status = DEFAULTS['STATUS']): array { - $entities = []; - foreach ($this->getEntities(sprintf("start_at >= NOW()-INTERVAL {$interval} DAY AND status = '%s'", $status)) as $entity) { - $entities[$entity->getPK()] = $this->setItemEntitiesByService($entity); - }; - return $entities; + return $this->getEntities(sprintf("start_at >= NOW()-INTERVAL {$interval} DAY AND status = '%s'", $status)); } //서비스 방식에 따른 서비스별 Count final public function getTotalCountsByType(): array @@ -182,10 +120,9 @@ class ServiceService extends CustomerService } public function create(array $formDatas): ServiceEntity { - //code의 경우 서비스중으로 설정작업 - $this->getCodeService()->setStatus($formDatas['codeinfo_uid'], CodeEntity::STATUS_OCCUPIED); - //switch의 경우 서비스중으로 설정작업 - $this->getSwitchService()->setStatus($formDatas['switchinfo_uid'], SwitchEntity::STATUS_OCCUPIED); + $entity = parent::create($formDatas); + //서버경우 서비스중으로 설정작업 + // $this->getServerService()->setService($entity)ServerEntity::STATUS_OCCUPIED); return parent::create($formDatas); } public function modify(mixed $entity, array $formDatas): ServiceEntity diff --git a/app/Services/Equipment/CodeService.php b/app/Services/Equipment/CodeService.php deleted file mode 100644 index 9b10fe4..0000000 --- a/app/Services/Equipment/CodeService.php +++ /dev/null @@ -1,60 +0,0 @@ -addClassName('Code'); - } - public function getModelClass(): CodeModel - { - return new CodeModel(); - } - public function getEntityClass(): CodeEntity - { - return new CodeEntity(); - } - public function getFormFields(): array - { - return [ - "code", - "status", - ]; - } - public function getFilterFields(): array - { - return ['status']; - } - public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['code', 'status']; - } - //상태변경 - public function setStatus(string $code, string $status): CodeEntity - { - //code의 경우 사용가능/사용중으로 설정작업 - $entity = $this->getEntity($code); - if (!$entity) { - throw new \Exception("{$code}에 대한 서버코드정보를 찾을수 없습니다."); - } - return $this->getModel()->modify($entity, ['status' => $status]); - } - //List 검색용 - //OrderBy 처리 - public function setOrderBy(mixed $field = null, mixed $value = null): void - { - $this->getModel()->orderBy('code', 'ASC'); - parent::setOrderBy($field, $value); - } -} diff --git a/app/Services/Equipment/Part/DefenceService.php b/app/Services/Equipment/DefenceService.php similarity index 100% rename from app/Services/Equipment/Part/DefenceService.php rename to app/Services/Equipment/DefenceService.php diff --git a/app/Services/Equipment/Part/DomainService.php b/app/Services/Equipment/DomainService.php similarity index 100% rename from app/Services/Equipment/Part/DomainService.php rename to app/Services/Equipment/DomainService.php diff --git a/app/Services/Equipment/Part/IpService.php b/app/Services/Equipment/IpService.php similarity index 100% rename from app/Services/Equipment/Part/IpService.php rename to app/Services/Equipment/IpService.php diff --git a/app/Services/Equipment/Part/LineService.php b/app/Services/Equipment/LineService.php similarity index 100% rename from app/Services/Equipment/Part/LineService.php rename to app/Services/Equipment/LineService.php diff --git a/app/Services/Equipment/Part/CpuService.php b/app/Services/Equipment/Part/CpuService.php deleted file mode 100644 index 72707ee..0000000 --- a/app/Services/Equipment/Part/CpuService.php +++ /dev/null @@ -1,49 +0,0 @@ -addClassName('Cpu'); - } - public function getModelClass(): CpuModel - { - return new CpuModel(); - } - public function getEntityClass(): CpuEntity - { - return new CpuEntity(); - } - final public function getFormFields(): array - { - return [ - "model", - "status", - ]; - } - final public function getFilterFields(): array - { - return ['status']; - } - final public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['model', 'status']; - } - //List 검색용 - //OrderBy 처리 - public function setOrderBy(mixed $field = null, mixed $value = null): void - { - $this->getModel()->orderBy('model', 'ASC'); - parent::setOrderBy($field, $value); - } -} diff --git a/app/Services/Equipment/Part/RamService.php b/app/Services/Equipment/Part/RamService.php deleted file mode 100644 index 46f75ae..0000000 --- a/app/Services/Equipment/Part/RamService.php +++ /dev/null @@ -1,49 +0,0 @@ -addClassName('Ram'); - } - public function getModelClass(): RamModel - { - return new RamModel(); - } - public function getEntityClass(): RamEntity - { - return new RamEntity(); - } - final public function getFormFields(): array - { - return [ - "model", - "status", - ]; - } - final public function getFilterFields(): array - { - return ['status']; - } - final public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['model', 'status']; - } - //List 검색용 - //OrderBy 처리 - public function setOrderBy(mixed $field = null, mixed $value = null): void - { - $this->getModel()->orderBy('model', 'ASC'); - parent::setOrderBy($field, $value); - } -} diff --git a/app/Services/Equipment/Part/SoftwareService.php b/app/Services/Equipment/Part/SoftwareService.php deleted file mode 100644 index 32372b0..0000000 --- a/app/Services/Equipment/Part/SoftwareService.php +++ /dev/null @@ -1,51 +0,0 @@ -addClassName('Software'); - } - public function getModelClass(): SoftwareModel - { - return new SoftwareModel(); - } - public function getEntityClass(): SoftwareEntity - { - return new SoftwareEntity(); - } - public function getFormFields(): array - { - return [ - "type", - "model", - "status", - "description", - ]; - } - public function getFilterFields(): array - { - return ['type', 'status']; - } - public function getBatchJobFields(): array - { - return ['type', 'status']; - } - public function getIndexFields(): array - { - return ['type', 'model', 'status']; - } - //List 검색용 - //OrderBy 처리 - public function setOrderBy(mixed $field = null, mixed $value = null): void - { - $this->getModel()->orderBy('model', 'ASC'); - parent::setOrderBy($field, $value); - } -} diff --git a/app/Services/Equipment/Part/StorageService.php b/app/Services/Equipment/Part/StorageService.php deleted file mode 100644 index f84febf..0000000 --- a/app/Services/Equipment/Part/StorageService.php +++ /dev/null @@ -1,49 +0,0 @@ -addClassName('Storage'); - } - public function getModelClass(): StorageModel - { - return new StorageModel(); - } - public function getEntityClass(): StorageEntity - { - return new StorageEntity(); - } - final public function getFormFields(): array - { - return [ - "model", - "status", - ]; - } - final public function getFilterFields(): array - { - return ['status']; - } - final public function getBatchJobFields(): array - { - return ['status']; - } - public function getIndexFields(): array - { - return ['model', 'status']; - } - //List 검색용 - //OrderBy 처리 - public function setOrderBy(mixed $field = null, mixed $value = null): void - { - $this->getModel()->orderBy('model', 'ASC'); - parent::setOrderBy($field, $value); - } -} diff --git a/app/Services/Equipment/Part/PartService.php b/app/Services/Equipment/PartService.php similarity index 100% rename from app/Services/Equipment/Part/PartService.php rename to app/Services/Equipment/PartService.php diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 071e617..1c6d5af 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -9,18 +9,9 @@ class UserService extends CommonService { public function __construct() { - parent::__construct(); + parent::__construct(new UserModel()); $this->addClassName('User'); } - public function getModelClass(): UserModel - { - return new UserModel(); - } - public function getEntityClass(): UserEntity - { - return new UserEntity(); - } - public function getFormFields(): array { return ['id', 'passwd', 'confirmpassword', 'name', 'email', 'mobile', 'role'];