diff --git a/app/Config/Routes.php b/app/Config/Routes.php index c71d95d..c155457 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -161,6 +161,19 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'PartController::batchjob_delete'); $routes->get('download/(:alpha)', 'PartController::download/$1'); }); + $routes->group('defence', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { + $routes->get('/', 'DefenceController::index', []); + $routes->get('create', 'DefenceController::create_form'); + $routes->post('create', 'DefenceController::create'); + $routes->get('modify/(:num)', 'DefenceController::modify_form/$1'); + $routes->post('modify/(:num)', 'DefenceController::modify/$1'); + $routes->get('view/(:num)', 'DefenceController::view/$1'); + $routes->get('delete/(:num)', 'DefenceController::delete/$1'); + $routes->get('toggle/(:num)/(:any)', 'DefenceController::toggle/$1/$2'); + $routes->post('batchjob', 'DefenceController::batchjob'); + $routes->post('batchjob_delete', 'DefenceController::batchjob_delete'); + $routes->get('download/(:alpha)', 'DefenceController::download/$1'); + }); $routes->group('software', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { $routes->get('/', 'SoftwareController::index', []); $routes->get('create', 'SoftwareController::create_form'); @@ -174,5 +187,18 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au $routes->post('batchjob_delete', 'SoftwareController::batchjob_delete'); $routes->get('download/(:alpha)', 'SoftwareController::download/$1'); }); + $routes->group('serverpart', ['namespace' => 'App\Controllers\Admin\Equipment'], function ($routes) { + $routes->get('/', 'ServerPartController::index', []); + $routes->get('create', 'ServerPartController::create_form'); + $routes->post('create', 'ServerPartController::create'); + $routes->get('modify/(:num)', 'ServerPartController::modify_form/$1'); + $routes->post('modify/(:num)', 'ServerPartController::modify/$1'); + $routes->get('view/(:num)', 'ServerPartController::view/$1'); + $routes->get('delete/(:num)', 'ServerPartController::delete/$1'); + $routes->get('toggle/(:num)/(:any)', 'ServerPartController::toggle/$1/$2'); + $routes->post('batchjob', 'ServerPartController::batchjob'); + $routes->post('batchjob_delete', 'ServerPartController::batchjob_delete'); + $routes->get('download/(:alpha)', 'ServerPartController::download/$1'); + }); }); }); diff --git a/app/Controllers/Admin/Customer/ClientController.php b/app/Controllers/Admin/Customer/ClientController.php index dfe030e..08fd58e 100644 --- a/app/Controllers/Admin/Customer/ClientController.php +++ b/app/Controllers/Admin/Customer/ClientController.php @@ -57,7 +57,7 @@ class ClientController extends CustomerController protected function view_process($uid): mixed { $fields = [ - 'fields' => [$this->getService()->getModel()->getTitleField(), 'email', 'phone', 'role', 'account_balance', 'coupon_balance', 'point_balance', 'status'], + 'fields' => ['name', 'email', 'phone', 'role', 'account_balance', 'coupon_balance', 'point_balance', 'status'], ]; $this->init('view', $fields); return parent::view_process($uid); @@ -65,7 +65,7 @@ class ClientController extends CustomerController protected function index_process(): array { $fields = [ - 'fields' => [$this->getService()->getModel()->getTitleField(), 'email', 'phone', 'role', 'account_balance', 'coupon_balance', 'point_balance', 'status'], + 'fields' => ['name', 'email', 'phone', 'role', 'account_balance', 'coupon_balance', 'point_balance', 'status'], ]; $this->init('index', $fields); return parent::index_process(); diff --git a/app/Controllers/Admin/Customer/ServiceController.php b/app/Controllers/Admin/Customer/ServiceController.php index 0d39626..72d0ff3 100644 --- a/app/Controllers/Admin/Customer/ServiceController.php +++ b/app/Controllers/Admin/Customer/ServiceController.php @@ -2,18 +2,19 @@ namespace App\Controllers\Admin\Customer; -use App\Entities\Customer\ServicePartEntity; -use App\Helpers\Customer\ServiceHelper; -use App\Services\Customer\ServiceService; -use App\Services\Equipment\PartService; -use App\Services\Equipment\IpService; - use App\Services\Equipment\ServerService; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Validation\Validation; use Psr\Log\LoggerInterface; +use App\Entities\Customer\ServicePartEntity; +use App\Services\Customer\ServicePartService; +use App\Helpers\Customer\ServiceHelper; +use App\Services\Customer\ServiceService; +use App\Services\Equipment\PartService; +use App\Services\Equipment\IpService; + class ServiceController extends CustomerController { private ?ServerService $_serverService = null; @@ -23,13 +24,11 @@ class ServiceController extends CustomerController { parent::initController($request, $response, $logger); $this->uri_path .= strtolower($this->getService()->getClassName()) . '/'; - $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; - // echo $this->view_path; - // exit; + // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; $this->class_path = $this->getService()->getClassPath(); $this->title = lang("{$this->getService()->getClassPath()}.title"); $this->helper = $this->getHelper(); - $this->individualStylesheets = ['server_partinfo.css'];; + $this->individualStylesheets = ['server_partinfo.css']; $this->individualScripts = ['server_partinfo.js']; } public function getService(): ServiceService @@ -67,106 +66,28 @@ class ServiceController extends CustomerController } return $this->_ipService; } - - //Index,FieldForm관련 - protected function getFieldRule(string $action, string $field): string - { - if (is_array($field)) { - throw new \Exception(__FUNCTION__ . "=> field가 array 입니다.\n" . var_export($field, true)); - } - switch ($field) { - case 'CPU': - case 'RAM': - case 'DISK': - $rule = "if_exist|permit_empty|numeric"; - break; - default: - $rule = parent::getFieldRule($action, $field); - break; - } - return $rule; - } - protected function getFormFieldOption(string $field, array $options = []): array - { - switch ($field) { - case 'SERVER': - $options[$field] = $this->getServerService()->getFormFieldOption($field); - break; - case 'CPU': - case 'RAM': - case 'DISK': - $options[$field] = $this->getPartService()->getFormFieldOption($field); - break; - case 'IP': - $options[$field] = $this->getIPService()->getFormFieldOption($field); - break; - default: - $options = parent::getFormFieldOption($field, $options); - break; - } - return $options; - } - protected function setValidation(Validation $validation, string $action, string $field, ?string $rule = null): Validation - { - switch ($field) { - case 'SERVER': - case 'CPU': - case 'RAM': - case 'DISK': - case 'IP': - //아래 Rule Array는 필드명.* checkbox를 사용 - $validation->setRule("{$field}.*", $field, $rule); - break; - default: - $validation = parent::setValidation($validation, $action, $field, $rule); - break; - } - return $validation; - } //Index,FieldForm관련 - protected function create_process(): mixed + private function setPartEntity(ServiceEntity $entity): ServiceEntity { - $entity = parent::create_process(); - //변경할 UIDS - $cpu_uids = $this->request->getVar('CPU[]'); - if (!is_array($cpu_uids)) { - throw new \Exception("CPU가 정의되지 않았습니다."); - } - foreach ($cpu_uids as $uid) { - $temps = ['serviceinfo_uid' => $entity->getPK(), 'partinfo_uid' => $uid]; - $this->getService()->create($temps, new ServicePartEntity()); - } - $ram_uids = $this->request->getVar('RAM[]'); - if (!is_array($ram_uids)) { - throw new \Exception("RAM가 정의되지 않았습니다."); - } - foreach ($ram_uids as $uid) { - $temps = ['serviceinfo_uid' => $entity->getPK(), 'partinfo_uid' => $uid]; - $this->getService()->create($temps, new ServicePartEntity()); - } - $disk_uids = $this->request->getVar('DISK[]'); - if (!is_array($disk_uids)) { - throw new \Exception("DISK가 정의되지 않았습니다."); - } - foreach ($disk_uids as $uid) { - $temps = ['serviceinfo_uid' => $entity->getPK(), 'partinfo_uid' => $uid]; - $this->getService()->create($temps, new ServicePartEntity()); + foreach ($this->getServicePartService()->getEntities(['serviceinfo_uid' => $entity->getPK()]) as $servicePartEntity) { + $partEntity = $this->getPartService()->getEntity($servicePartEntity->getPartInfo()); + if ($partEntity) { + $entity->addPartEntity($partEntity->getType(), $partEntity); + } } return $entity; } protected function index_process(): array { $fields = [ - 'fields' => ['clientinfo_uid', 'type', $this->getService()->getModel()->getTitleField(), 'billing_at', 'start_at', 'end_at', 'status'], + 'fields' => ['type', 'model', 'IP', 'SERVER', 'CPU', 'RAM', 'DISK', 'status'], ]; $this->init('index', $fields); $this->modal_type = 'modal_iframe'; - $entities = parent::index_process(); - foreach ($entities as $key => $entity) { - $entity->CPU = $this->getServerService()->getEntities(['serverinfo_uid' => $entity->getPK()]); - $entity->RAM = $this->getServerService()->getEntities(['serverinfo_uid' => $entity->getPK()]); - $entity->DISK = $this->getServerService()->getEntities(['serverinfo_uid' => $entity->getPK()]); + $entities = []; + foreach (parent::index_process() as $entity) { + $entities[] = $this->setPartEntity($entity); } return $entities; } diff --git a/app/Controllers/Admin/Customer/ServicePartController.php b/app/Controllers/Admin/Customer/ServicePartController.php new file mode 100644 index 0000000..2ee9427 --- /dev/null +++ b/app/Controllers/Admin/Customer/ServicePartController.php @@ -0,0 +1,93 @@ +uri_path .= strtolower($this->getService()->getClassName()) . '/'; + $this->class_path = $this->getService()->getClassPath(); + $this->title = lang("{$this->getService()->getClassPath()}.title"); + $this->helper = $this->getHelper(); + } + public function getService(): ServicePartService + { + if (!$this->_service) { + $this->_service = new ServicePartService($this->request); + } + return $this->_service; + } + public function getHelper(): mixed + { + if (!$this->_helper) { + $this->_helper = new ServicePartHelper($this->request); + } + return $this->_helper; + } + final public function getPartService(): PartService + { + if (!$this->_partService) { + $this->_partService = new PartService($this->request); + } + return $this->_partService; + } + protected function getFormFieldOption(string $field, array $options = []): array + { + switch ($field) { + case 'serverinfo_uid': + $options[$field] = $this->getServiceService()->getFormFieldOption($field); + break; + case 'partinfo_uid': + $options[$field] = $this->getPartService()->getFormFieldOption($field); + break; + default: + $options = parent::getFormFieldOption($field, $options); + break; + } + return $options; + } + protected function getResultPageByActon(string $action, string $message = MESSAGES["SUCCESS"]): RedirectResponse|string + { + switch ($action) { + case 'index': + case 'view': + $this->getHelper()->setViewDatas($this->getViewDatas()); + $result = view($this->view_path . "popup" . DIRECTORY_SEPARATOR . $action, ['viewDatas' => $this->getViewDatas()]); + break; + default: + $result = parent::getResultPageByActon($action, $message); + break; + } + return $result; + } + //Index,FieldForm관련 + + + protected function setOrderByForList() + { + //OrderBy 처리 + $this->getService()->getModel()->orderBy('serverinfo_uid', 'ASC', false); + parent::setOrderByForList(); + } + protected function index_process(): array + { + $fields = [ + 'fields' => ['serverinfo_uid', 'type', 'partinfo_uid'], + ]; + $this->init('index', $fields); + $this->modal_type = 'modal_iframe'; + return parent::index_process(); + } +} diff --git a/app/Controllers/Admin/Equipment/DefenceController.php b/app/Controllers/Admin/Equipment/DefenceController.php new file mode 100644 index 0000000..d38de43 --- /dev/null +++ b/app/Controllers/Admin/Equipment/DefenceController.php @@ -0,0 +1,55 @@ +uri_path .= strtolower($this->getService()->getClassName()) . '/'; + + $this->class_path = $this->getService()->getClassPath(); + $this->title = lang("{$this->getService()->getClassPath()}.title"); + $this->helper = $this->getHelper(); + } + public function getService(): DefenceService + { + if (!$this->_service) { + $this->_service = new DefenceService($this->request); + } + return $this->_service; + } + public function getHelper(): mixed + { + if (!$this->_helper) { + $this->_helper = new DefenceHelper($this->request); + } + return $this->_helper; + } + //Index,FieldForm관련 + + protected function setOrderByForList() + { + //OrderBy 처리 + $this->getService()->getModel()->orderBy('INET_ATON(ip)', 'ASC', false); + parent::setOrderByForList(); + } + + protected function index_process(): array + { + $fields = [ + 'fields' => ['type', 'ip', 'accountid', 'domain', 'status'], + ]; + $this->init('index', $fields); + $this->modal_type = 'modal_iframe'; + return parent::index_process(); + } +} diff --git a/app/Controllers/Admin/Equipment/EquipmentController.php b/app/Controllers/Admin/Equipment/EquipmentController.php index 456fd4a..99881bc 100644 --- a/app/Controllers/Admin/Equipment/EquipmentController.php +++ b/app/Controllers/Admin/Equipment/EquipmentController.php @@ -17,8 +17,8 @@ abstract class EquipmentController extends AdminController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->uri_path .= 'device/'; - // $this->view_path .= "device" . DIRECTORY_SEPARATOR; + $this->uri_path .= 'equipment/'; + // $this->view_path .= "equipment" . DIRECTORY_SEPARATOR; } final public function getServerService(): ServerService { diff --git a/app/Controllers/Admin/Equipment/IpController.php b/app/Controllers/Admin/Equipment/IpController.php index 4f3b64e..a6ce47d 100644 --- a/app/Controllers/Admin/Equipment/IpController.php +++ b/app/Controllers/Admin/Equipment/IpController.php @@ -45,7 +45,7 @@ class IpController extends EquipmentController protected function index_process(): array { $fields = [ - 'fields' => ['lineinfo_uid', $this->getService()->getModel()->getTitleField(), 'status', 'updated_at'], + 'fields' => ['lineinfo_uid', 'ip', 'status', 'updated_at'], ]; $this->init('index', $fields); return parent::index_process(); diff --git a/app/Controllers/Admin/Equipment/LineController.php b/app/Controllers/Admin/Equipment/LineController.php index 72a493c..e269d4f 100644 --- a/app/Controllers/Admin/Equipment/LineController.php +++ b/app/Controllers/Admin/Equipment/LineController.php @@ -68,7 +68,7 @@ class LineController extends EquipmentController protected function view_process($uid): mixed { $fields = [ - 'fields' => ['clientinfo_uid', 'type', $this->getService()->getModel()->getTitleField(), 'bandwith', 'status', "start_at", 'created_at'], + 'fields' => ['clientinfo_uid', 'type', 'title', 'bandwith', 'status', "start_at", 'created_at'], ]; $this->init('view', $fields); return parent::view_process($uid); @@ -77,9 +77,10 @@ class LineController extends EquipmentController protected function index_process(): array { $fields = [ - 'fields' => ['clientinfo_uid', 'type', $this->getService()->getModel()->getTitleField(), 'bandwith', 'status', "start_at", 'created_at'], + 'fields' => ['clientinfo_uid', 'type', 'title', 'bandwith', 'status', "start_at", 'created_at'], ]; $this->init('index', $fields); + $this->modal_type = 'modal_iframe'; return parent::index_process(); } } diff --git a/app/Controllers/Admin/Equipment/PartController.php b/app/Controllers/Admin/Equipment/PartController.php index f92439d..29412d7 100644 --- a/app/Controllers/Admin/Equipment/PartController.php +++ b/app/Controllers/Admin/Equipment/PartController.php @@ -2,13 +2,12 @@ namespace App\Controllers\Admin\Equipment; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Validation\Validation; -use Psr\Log\LoggerInterface; - use App\Helpers\Equipment\PartHelper; use App\Services\Equipment\PartService; +use CodeIgniter\HTTP\RequestInterface; + +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; class PartController extends EquipmentController { @@ -35,10 +34,17 @@ class PartController extends EquipmentController return $this->_helper; } //Index,FieldForm관련 + + protected function setOrderByForList() + { + //OrderBy 처리 + $this->getService()->getModel()->orderBy('type', 'ASC', false); + parent::setOrderByForList(); + } protected function index_process(): array { $fields = [ - 'fields' => ['type', $this->getService()->getModel()->getTitleField(), 'manufactur_at', 'status'], + 'fields' => ['type', 'model', 'status'], ]; $this->init('index', $fields); $this->modal_type = 'modal_iframe'; diff --git a/app/Controllers/Admin/Equipment/ServerController.php b/app/Controllers/Admin/Equipment/ServerController.php index b3bc6ad..86af257 100644 --- a/app/Controllers/Admin/Equipment/ServerController.php +++ b/app/Controllers/Admin/Equipment/ServerController.php @@ -2,24 +2,32 @@ namespace App\Controllers\Admin\Equipment; -use App\Entities\Equipment\ServerPartEntity; -use App\Helpers\Equipment\ServerHelper; - -use App\Services\Equipment\ServerService; +use App\Entities\Equipment\ServerEntity; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; +use CodeIgniter\Validation\Validation; + +use App\Helpers\Equipment\ServerHelper; +use App\Services\Equipment\ServerService; +use App\Services\Equipment\PartService; +use App\Services\Equipment\ServerPartService; +use App\Entities\Equipment\ServerPartEntity; class ServerController extends EquipmentController { + private ?PartService $_partService = null; + private ?ServerPartService $_serverPartService = null; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); $this->uri_path .= strtolower($this->getService()->getClassName()) . '/'; - + // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; $this->class_path = $this->getService()->getClassPath(); $this->title = lang("{$this->getService()->getClassPath()}.title"); $this->helper = $this->getHelper(); + $this->individualStylesheets = ['server_partinfo.css']; + $this->individualScripts = ['server_partinfo.js']; } public function getService(): ServerService { @@ -35,15 +43,42 @@ class ServerController extends EquipmentController } return $this->_helper; } + final public function getPartService(): PartService + { + if (!$this->_partService) { + $this->_partService = new PartService($this->request); + } + return $this->_partService; + } + final public function getServerPartService(): ServerPartService + { + if (!$this->_serverPartService) { + $this->_serverPartService = new ServerPartService($this->request); + } + return $this->_serverPartService; + } //Index,FieldForm관련 - + private function setPartEntity(ServerEntity $entity): ServerEntity + { + foreach ($this->getServerPartService()->getEntities(['serverinfo_uid' => $entity->getPK()]) as $serverPartEntity) { + $partEntity = $this->getPartService()->getEntity($serverPartEntity->getPartInfo()); + if ($partEntity) { + $entity->addPartEntity($partEntity->getType(), $partEntity); + } + } + return $entity; + } protected function index_process(): array { $fields = [ - 'fields' => ['code', 'type', $this->getService()->getModel()->getTitleField(), 'manufactur_at', 'status'], + 'fields' => ['code', 'type', 'model', 'CPU', 'RAM', 'DISK', 'status'], ]; $this->init('index', $fields); $this->modal_type = 'modal_iframe'; - return parent::index_process(); + $entities = []; + foreach (parent::index_process() as $entity) { + $entities[] = $this->setPartEntity($entity); + } + return $entities; } } diff --git a/app/Controllers/Admin/Equipment/ServerPartController.php b/app/Controllers/Admin/Equipment/ServerPartController.php new file mode 100644 index 0000000..8eea678 --- /dev/null +++ b/app/Controllers/Admin/Equipment/ServerPartController.php @@ -0,0 +1,93 @@ +uri_path .= strtolower($this->getService()->getClassName()) . '/'; + $this->class_path = $this->getService()->getClassPath(); + $this->title = lang("{$this->getService()->getClassPath()}.title"); + $this->helper = $this->getHelper(); + } + public function getService(): ServerPartService + { + if (!$this->_service) { + $this->_service = new ServerPartService($this->request); + } + return $this->_service; + } + public function getHelper(): mixed + { + if (!$this->_helper) { + $this->_helper = new ServerPartHelper($this->request); + } + return $this->_helper; + } + final public function getPartService(): PartService + { + if (!$this->_partService) { + $this->_partService = new PartService($this->request); + } + return $this->_partService; + } + protected function getFormFieldOption(string $field, array $options = []): array + { + switch ($field) { + case 'serverinfo_uid': + $options[$field] = $this->getServerService()->getFormFieldOption($field); + break; + case 'partinfo_uid': + $options[$field] = $this->getPartService()->getFormFieldOption($field); + break; + default: + $options = parent::getFormFieldOption($field, $options); + break; + } + return $options; + } + protected function getResultPageByActon(string $action, string $message = MESSAGES["SUCCESS"]): RedirectResponse|string + { + switch ($action) { + case 'index': + case 'view': + $this->getHelper()->setViewDatas($this->getViewDatas()); + $result = view($this->view_path . "popup" . DIRECTORY_SEPARATOR . $action, ['viewDatas' => $this->getViewDatas()]); + break; + default: + $result = parent::getResultPageByActon($action, $message); + break; + } + return $result; + } + //Index,FieldForm관련 + + + protected function setOrderByForList() + { + //OrderBy 처리 + $this->getService()->getModel()->orderBy('serverinfo_uid', 'ASC', false); + parent::setOrderByForList(); + } + protected function index_process(): array + { + $fields = [ + 'fields' => ['serverinfo_uid', 'type', 'partinfo_uid'], + ]; + $this->init('index', $fields); + $this->modal_type = 'modal_iframe'; + return parent::index_process(); + } +} diff --git a/app/Controllers/Admin/Equipment/SoftwareController.php b/app/Controllers/Admin/Equipment/SoftwareController.php index 95b8e97..20b5a06 100644 --- a/app/Controllers/Admin/Equipment/SoftwareController.php +++ b/app/Controllers/Admin/Equipment/SoftwareController.php @@ -4,7 +4,7 @@ namespace App\Controllers\Admin\Equipment; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Validation\Validation; + use Psr\Log\LoggerInterface; use App\Helpers\Equipment\SoftwareHelper; @@ -38,7 +38,7 @@ class SoftwareController extends EquipmentController protected function index_process(): array { $fields = [ - 'fields' => ['type', $this->getService()->getModel()->getTitleField(), 'status', 'description'], + 'fields' => ['type', 'model', 'status', 'description'], ]; $this->init('index', $fields); $this->modal_type = 'modal_iframe'; diff --git a/app/Controllers/Admin/MyLogController.php b/app/Controllers/Admin/MyLogController.php index b03a3bb..5f97ec6 100644 --- a/app/Controllers/Admin/MyLogController.php +++ b/app/Controllers/Admin/MyLogController.php @@ -66,7 +66,7 @@ class MyLogController extends AdminController protected function view_process($uid): mixed { $fields = [ - 'fields' => ['user_uid', 'class_name', 'method_name', $this->getService()->getModel()->getTitleField(), 'status', 'created_at', 'content'], + 'fields' => ['user_uid', 'class_name', 'method_name', 'title', 'status', 'created_at', 'content'], ]; $this->init('view', $fields); return parent::view_process($uid); @@ -74,7 +74,7 @@ class MyLogController extends AdminController protected function index_process(): array { $fields = [ - 'fields' => ['user_uid', 'class_name', 'method_name', $this->getService()->getModel()->getTitleField(), 'status', 'created_at'], + 'fields' => ['user_uid', 'class_name', 'method_name', 'title', 'status', 'created_at'], ]; $this->init('index', $fields); return parent::index_process(); diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index f7a6eaf..38a06f3 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -73,7 +73,7 @@ class UserController extends AdminController protected function view_process($uid): mixed { $fields = [ - 'fields' => ['id', $this->getService()->getModel()->getTitleField(), 'email', 'mobile', 'role', 'status'], + 'fields' => ['id', 'name', 'email', 'mobile', 'role', 'status'], ]; $this->init('view', $fields); return parent::view_process($uid); @@ -81,7 +81,7 @@ class UserController extends AdminController protected function index_process(): array { $fields = [ - 'fields' => ['id', $this->getService()->getModel()->getTitleField(), 'email', 'mobile', 'role', 'status'], + 'fields' => ['id', 'name', 'email', 'mobile', 'role', 'status'], ]; $this->init('index', $fields); return parent::index_process(); diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php index d7dc774..b392ed3 100644 --- a/app/Controllers/CommonController.php +++ b/app/Controllers/CommonController.php @@ -144,7 +144,7 @@ abstract class CommonController extends BaseController { switch ($field) { default: - $validation->setRule($field, $field, $rule ?? $this->getService()->getFieldRule($action, $field)); + $validation->setRule($field, $field, $rule ?? $this->getFieldRule($action, $field)); break; } return $validation; diff --git a/app/Database/erp2.vuerd.json b/app/Database/erp2.vuerd.json index d6f95c9..9f9a86c 100644 --- a/app/Database/erp2.vuerd.json +++ b/app/Database/erp2.vuerd.json @@ -4,13 +4,13 @@ "settings": { "width": 4000, "height": 4000, - "scrollTop": -2057.1261, - "scrollLeft": -1040.6149, - "zoomLevel": 0.79, + "scrollTop": -2252.9128, + "scrollLeft": -992.9859, + "zoomLevel": 0.88, "show": 511, "database": 4, "databaseName": "", - "canvasType": "@dineug/erd-editor/builtin-schema-sql", + "canvasType": "ERD", "language": 1, "tableNameCase": 4, "columnNameCase": 2, @@ -43,15 +43,15 @@ "sgFc3Tg9sWiMm4hsEwKm9", "5KwHMmZppj-7TjRC_xQ54", "3tdV9J9ns8BWCGQeCXITI", - "F82-EcEv3fB4uzGzPrPla", "jO40Ej5EXImXnadoJo9bn", "gsa0XtQZQgrJ8ZXy8VQVg", "5AUwJum9FKPCoYRMBhLnF", "RMhrLs7bOaopKmKt9YKHQ", "gYqhvNLZjWrQk8LNKH3il", - "M9XC2MNIJqyKe77s6znI7", "RTq5rHQupiXXJPXqpN8K5", - "q0nHqNHYRczLFnV35V_qc" + "3RJ8qxNNqL7eCvBmmqzpd", + "Btzrm5KCDr_59gZoXRXol", + "BoXnD7ITrjdXuJVzpiLoN" ], "relationshipIds": [ "gAVYXWnBSnCw-0ieO4Mil", @@ -61,21 +61,21 @@ "fXVyT3pzVo0T0fgoFz4Gi", "gNCG3TpxxGPRdE0xNJM4Z", "KG3dDhcIJxHk3e1aGPWPa", - "AckV69XB9r2m1VHP64gtd", - "6blFGW77QEOBG_yDwtFQq", "95uRv2fz3rssNbkyuzkLh", "4BDt10BeeryoN0ZdEHIui", "KtdVJCYZ3DMVnPnFGKi3P", "AH1dyESfueUlhcoiU6KsQ", "H3ufP8FbEnPlyFiHAggt0", "hEYDIiEFtsN5gxqTmDYC7", - "zH9SNavkYXAVRNXk4KF3w", - "8v6Wmy4UTd5daxh1_kCH4", - "YDIkLS7KeNom6uC_nProR", "rDaiOqjpenuTOWAB9GhA6", "rvhOgmNcWHmmWI1PYPjzk", - "gy8AYT4ifY9wU-1_ttgwO", - "OfL_b7drVbtK_qtISBxwG" + "6OXR3AW1sSxDJA2ITIz9i", + "QJHejLurUndA2vJMYRawK", + "avEpCJt-x4kXYN5bcKxiG", + "xnvl_tBcFrTl87jBGDW08", + "xYyFwSIzfn3RPzA8eaJoV", + "KMa7J50RT1ImakceLy9iZ", + "bVmMQk7Qb5kh6yURDiOLx" ], "indexIds": [], "memoIds": [] @@ -214,11 +214,10 @@ "comment": "서버정보", "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1", - "J97WIRanerqkRvOlQCnL3", + "GUAjQ-qFNvMHOaqY-rBXq", "BAzGsBrmLOwZGYLchLmyP", "9F6QpQqxeEggZ0FHM81O1", "54iuIW4knok06vP4JH-oN", - "o0KMVEBZAnWRSsxx10HmA", "bh-W1plz0vCW2rURDnfDR", "tNaVOzr3vywCXiQdfUJWq", "6bQ_6eGfINic9LpM6PtDw" @@ -230,6 +229,7 @@ "kyD7tU9kevxCDow7j2uHI", "pY1RZgzuWBgRILX2XsMTt", "J97WIRanerqkRvOlQCnL3", + "GUAjQ-qFNvMHOaqY-rBXq", "BAzGsBrmLOwZGYLchLmyP", "9F6QpQqxeEggZ0FHM81O1", "6e3HgOnQwPQRS7r37pAK6", @@ -244,52 +244,18 @@ "yjaoHnd4nFaa-3REXvRfN" ], "ui": { - "x": 2446.3712, - "y": 1382.4445, + "x": 2410.6602, + "y": 2559.435, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1747379455586, + "updateAt": 1747632582436, "createAt": 1745819764137 } }, - "IhXnqMFBU_GmCvISNyaKj": { - "id": "IhXnqMFBU_GmCvISNyaKj", - "name": "serverinfos_partinfos", - "comment": "장비-부속품 연결정보", - "columnIds": [ - "iylHjtnqU_oLEYolQkQIM", - "pDILaJt_-vUo0fH_c6t2O", - "7oTkP7etYsNgI6J6xQZVG", - "NNGQ-RewVIApA1EISBQRS" - ], - "seqColumnIds": [ - "iylHjtnqU_oLEYolQkQIM", - "pDILaJt_-vUo0fH_c6t2O", - "7oTkP7etYsNgI6J6xQZVG", - "5kPFX9LYoh8iinAEpt3lm", - "qHwMDFU4dV5frDXsuW445", - "dLOesaVz9GnwntiIyvxwW", - "wQnQfh-JJI9BSQGaahMFu", - "NNGQ-RewVIApA1EISBQRS", - "D0lTirj9_pycie0SwZlUG" - ], - "ui": { - "x": 2998.8895, - "y": 2407.4365, - "zIndex": 2, - "widthName": 111, - "widthComment": 118, - "color": "" - }, - "meta": { - "updateAt": 1747119231934, - "createAt": 1745819764138 - } - }, "ZMGIWLFEswObjH2Sx0NlW": { "id": "ZMGIWLFEswObjH2Sx0NlW", "name": "softwareinfo", @@ -315,15 +281,15 @@ "8ZPjmeG3NoO6C0icGibJP" ], "ui": { - "x": 2457.4319, - "y": 2515.0816, + "x": 2400.1595, + "y": 2278.1189, "zIndex": 2, "widthName": 68, "widthComment": 89, "color": "" }, "meta": { - "updateAt": 1747379200589, + "updateAt": 1747631449097, "createAt": 1745819764138 } }, @@ -352,6 +318,7 @@ "oc5quhO8E3mqrBZKbIy_G", "lZQAY89JoyOHoTQEHeS1Y", "fiQBfXvw-4tj42PuGiDAk", + "BaXSr0Zs4Yk5dCbD8X_lm", "ehNv0f07ci1ARnkTSDG6J", "xaUC3GLta1iHmo1YQ-qDo", "PHhRG4nKR6k_CQF9B8xS1", @@ -360,15 +327,15 @@ "liJON6hIBB9aS-pQgM0Q6" ], "ui": { - "x": 2417.4558, - "y": 774.7781, + "x": 2349.9171, + "y": 1413.5552, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1747379439614, + "updateAt": 1747626184082, "createAt": 1745819764138 } }, @@ -399,15 +366,15 @@ "R-UjmO-S2UeQdddVNwH5M" ], "ui": { - "x": 2439.4932, - "y": 1132.3495, + "x": 2404.3581, + "y": 1780.9982, "zIndex": 2, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1747379446240, + "updateAt": 1747625582327, "createAt": 1745819764138 } }, @@ -418,9 +385,7 @@ "columnIds": [ "nb5CGzskl3_LIRA0yyede", "sscrxOdwLlx94tx1j_MrH", - "UKMpq-uPW9JhNhwRMtBmC", "iM3NfWTfO6qrXv94EUFgk", - "CITRNBpXOZqGM6gHy5MlB", "lwr6RuK8OGKJNLdd70NGS", "qnVCOfUyejx2ToAQhkmu0", "JItDVSlR3alwlWIyiXSyW", @@ -433,6 +398,7 @@ "sscrxOdwLlx94tx1j_MrH", "74hYN_2bj1ubH9fDJVRVz", "JXFtN33CEiVr8DDSQay0k", + "CY-ZAs3Ns1YhoxL9UiCee", "UKMpq-uPW9JhNhwRMtBmC", "iM3NfWTfO6qrXv94EUFgk", "CITRNBpXOZqGM6gHy5MlB", @@ -455,21 +421,20 @@ "color": "" }, "meta": { - "updateAt": 1747380828026, + "updateAt": 1747727821087, "createAt": 1745819764139 } }, "R4reSshLxH3DQW6fUfSPa": { "id": "R4reSshLxH3DQW6fUfSPa", - "name": "invoiceinfo", + "name": "billinginfo", "comment": "청구서 정보", "columnIds": [ "fsAJySlXPbGQahV59hQgo", - "Mlq3l8ZyEkSzXldwOmRed", + "uodvC_rgsnCqB65A3uZYW", "NzUNVP-O0U298m6bClqyd", "hCs1Oji5S6161mXCnAgP6", "iDvGbVnpR-GTfqajd7P02", - "rfUyj0qgcwNt8AYQrQpwr", "2SU_tNQXyQlsQc6WchJ04" ], "seqColumnIds": [ @@ -478,6 +443,7 @@ "bEnLVhafLMHZluEaYba4n", "F6kponQqcXk2TT-AIElPY", "h9_O9yvER5oW6Tb7ygofm", + "uodvC_rgsnCqB65A3uZYW", "NzUNVP-O0U298m6bClqyd", "zT13NpysXzkDKNUgdBOIC", "hCs1Oji5S6161mXCnAgP6", @@ -487,15 +453,15 @@ "2SU_tNQXyQlsQc6WchJ04" ], "ui": { - "x": 201.3262, - "y": 833.1988, + "x": 1158.0459, + "y": 1342.7878, "zIndex": 2, "widthName": 60, "widthComment": 65, "color": "" }, "meta": { - "updateAt": 1747374182062, + "updateAt": 1747626911262, "createAt": 1745819764139 } }, @@ -526,15 +492,15 @@ "UCQyqc-F1swYRY6Qa3lIi" ], "ui": { - "x": 1185.2953, - "y": 1976.666, + "x": 1167.4791, + "y": 2150.4061, "zIndex": 2, "widthName": 136, "widthComment": 94, "color": "" }, "meta": { - "updateAt": 1747379675241, + "updateAt": 1747625655368, "createAt": 1745819764139 } }, @@ -562,15 +528,15 @@ "3v3JWUBHg3mAb4HmHPUP-" ], "ui": { - "x": 1178.7675, - "y": 2563.8046, + "x": 1170.8023, + "y": 2382.9427, "zIndex": 2, "widthName": 139, "widthComment": 130, "color": "" }, "meta": { - "updateAt": 1747375494938, + "updateAt": 1747631546977, "createAt": 1745819764139 } }, @@ -599,15 +565,15 @@ "kTwnu5ylJ22aQ7cBwn3pZ" ], "ui": { - "x": 1180.4415, - "y": 1436.5532, + "x": 1169.2751, + "y": 1924.3199, "zIndex": 2, "widthName": 104, "widthComment": 80, "color": "" }, "meta": { - "updateAt": 1747379530935, + "updateAt": 1747625658979, "createAt": 1745819764139 } }, @@ -635,15 +601,15 @@ "nAYYL4VvZwFBqqY9J5A1P" ], "ui": { - "x": 1180.7967, - "y": 1196.9182, + "x": 1169.5592, + "y": 1703.1059, "zIndex": 2, "widthName": 113, "widthComment": 94, "color": "" }, "meta": { - "updateAt": 1747379529326, + "updateAt": 1747625662621, "createAt": 1745819764139 } }, @@ -720,46 +686,17 @@ ], "ui": { "x": 1181.8279, - "y": 2845.3078, + "y": 3150.7872, "zIndex": 2, "widthName": 60, "widthComment": 81, "color": "" }, "meta": { - "updateAt": 1747375496865, + "updateAt": 1747631474020, "createAt": 1745819764142 } }, - "h2unshrMDFXEq0pYzkkj1": { - "id": "h2unshrMDFXEq0pYzkkj1", - "name": "ipinfos_serverinfos", - "comment": "IP 사용내역", - "columnIds": [ - "0VUfC7ZS0NaIcqAhZYWHV", - "-VaB7wQ3cQKai3peK85u8", - "eh3Ubc6NIftsQEbE3kq-v", - "QZeSgl1hDBgLHn8iG-S4s" - ], - "seqColumnIds": [ - "0VUfC7ZS0NaIcqAhZYWHV", - "-VaB7wQ3cQKai3peK85u8", - "eh3Ubc6NIftsQEbE3kq-v", - "QZeSgl1hDBgLHn8iG-S4s" - ], - "ui": { - "x": 3198.8062, - "y": 1853.3342, - "zIndex": 143, - "widthName": 100, - "widthComment": 63, - "color": "" - }, - "meta": { - "updateAt": 1747104160796, - "createAt": 1745820710362 - } - }, "5AUwJum9FKPCoYRMBhLnF": { "id": "5AUwJum9FKPCoYRMBhLnF", "name": "pointinfo", @@ -802,93 +739,6 @@ "createAt": 1745914844735 } }, - "xrgAG9Zc_whfxTeGQ2fqx": { - "id": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "networkinfo", - "comment": "네트워크장비정보", - "columnIds": [ - "r7fMKgeUcNq4FhYZPN3h8", - "QJ0gQxBMvgFftpj3p2koI", - "GwdDytCn1l984Y6piavyi", - "DvwDCnsNxrcfqx6nTsbP4", - "B3NNhoIrKYGZrScx8XuuH", - "06IXODaDZXY8cDIet15Im", - "vnQRLYgWHQ8AgJkfbs2a3", - "0HPmN1faJk-KhZXILO2zx", - "AtQmi9C4c5YlY8Brl9irr", - "a0bnNatieTB5pr9jElQbS", - "qZSh2gBdoEMUq6j7FdhHg" - ], - "seqColumnIds": [ - "r7fMKgeUcNq4FhYZPN3h8", - "HlUwkGDQIzvSXKilnVmeR", - "cbdszvDa-AJcISTgkydfJ", - "QJ0gQxBMvgFftpj3p2koI", - "GwdDytCn1l984Y6piavyi", - "kpG1Udq4ON9Ohj4ociOCo", - "DvwDCnsNxrcfqx6nTsbP4", - "xGjZPy89motgc7RMZWhnl", - "ZyOb1xK46x0-io64OuWOF", - "B3NNhoIrKYGZrScx8XuuH", - "06IXODaDZXY8cDIet15Im", - "vnQRLYgWHQ8AgJkfbs2a3", - "0HPmN1faJk-KhZXILO2zx", - "AtQmi9C4c5YlY8Brl9irr", - "a0bnNatieTB5pr9jElQbS", - "sfeekPFUxsfR1R3fpCkPO", - "2rgItDTiBojLhyoJ4J-z-", - "qZSh2gBdoEMUq6j7FdhHg" - ], - "ui": { - "x": 2429.8024, - "y": 1794.7664, - "zIndex": 401, - "widthName": 65, - "widthComment": 98, - "color": "" - }, - "meta": { - "updateAt": 1747287681465, - "createAt": 1745916349284 - } - }, - "CYHveKA03TPJiz6X5wq2L": { - "id": "CYHveKA03TPJiz6X5wq2L", - "name": "serviceinfos_networkinfos", - "comment": "서비스-네트워크장비 연결", - "columnIds": [ - "JJri1o7mljYSCAk5wNIYS", - "RtHk4GL4mwwGvwZ0UAoXQ", - "2DXZGT0BJwjeij0IKXFa1", - "rU3ltf8eeXRUibpCkm9H-", - "Pf3dXiCCFxq7Rp3X1El7K", - "xnnAe8XzDqeKCQuqBQW8J", - "7axE7VR8JiDojluDdGLOw", - "RZJESxJSfjv0xxD8DYnZy" - ], - "seqColumnIds": [ - "JJri1o7mljYSCAk5wNIYS", - "RtHk4GL4mwwGvwZ0UAoXQ", - "2DXZGT0BJwjeij0IKXFa1", - "rU3ltf8eeXRUibpCkm9H-", - "Pf3dXiCCFxq7Rp3X1El7K", - "xnnAe8XzDqeKCQuqBQW8J", - "7axE7VR8JiDojluDdGLOw", - "RZJESxJSfjv0xxD8DYnZy" - ], - "ui": { - "x": 1187.9662, - "y": 2058.1851, - "zIndex": 428, - "widthName": 137, - "widthComment": 142, - "color": "" - }, - "meta": { - "updateAt": 1747285325750, - "createAt": 1746576203015 - } - }, "RMhrLs7bOaopKmKt9YKHQ": { "id": "RMhrLs7bOaopKmKt9YKHQ", "name": "partinfo", @@ -898,7 +748,6 @@ "-Vr-igaSkx5zEcVp0oUGN", "DC7TvFFpBT7vY0UKKHt-W", "dr0UoY8ebsS-TjcPyP4is", - "GnoGvT4HaG9kp-BvwZ4FQ", "wx8zTFviA4I8YQnn-MFpW", "3nwgqrQd_qDGdg6Fe3kEp", "mwVYv9PaJFpoxYvTRJ223" @@ -919,15 +768,15 @@ "mwVYv9PaJFpoxYvTRJ223" ], "ui": { - "x": 2445.6254, - "y": 2155.381, + "x": 2410.026, + "y": 2835.3911, "zIndex": 495, "widthName": 60, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1747379195341, + "updateAt": 1747631446772, "createAt": 1746783410914 } }, @@ -955,29 +804,29 @@ "VzuPW7xCYQCRJ5S3m5qU1" ], "ui": { - "x": 1180.3332, - "y": 2274.5767, + "x": 1182.4615, + "y": 2916.1046, "zIndex": 547, "widthName": 116, "widthComment": 94, "color": "" }, "meta": { - "updateAt": 1747375877524, + "updateAt": 1747631498746, "createAt": 1746783705263 } }, "M9XC2MNIJqyKe77s6znI7": { "id": "M9XC2MNIJqyKe77s6znI7", - "name": "invoiceinfo_detail", + "name": "billinginfo_detail", "comment": "청구서 상세정보", "columnIds": [ "zlUiG0OmBC3q6Z3V1dOKc", "XqPP8eaTMK9vWD9QQJkYy", - "ZeTOeaI1N5mWuBiB0tO1F", + "g41qCdbclynuoNo7zTUoC", + "4sOzBtwc60uLCkHDsc97O", "1rO0HpkAfirZmhaN1AfEp", "gj0lezIVbnpLT2mHo07Lt", - "M6x8wlvrCkm0FWL8umYC3", "ML125axlUAsBywUvRiZTr" ], "seqColumnIds": [ @@ -990,6 +839,8 @@ "ZeTOeaI1N5mWuBiB0tO1F", "GfFdPBERgldIUWf5bA_nZ", "cuyA-A5FkTXz_x0BD1Uld", + "g41qCdbclynuoNo7zTUoC", + "4sOzBtwc60uLCkHDsc97O", "1rO0HpkAfirZmhaN1AfEp", "gj0lezIVbnpLT2mHo07Lt", "M6x8wlvrCkm0FWL8umYC3", @@ -997,79 +848,18 @@ "761T13bs94ZLVeC2iJm13" ], "ui": { - "x": 202.4648, - "y": 1212.971, + "x": 2324.3826, + "y": 971.8752, "zIndex": 697, - "widthName": 94, + "widthName": 89, "widthComment": 89, "color": "" }, "meta": { - "updateAt": 1747379521765, + "updateAt": 1747627186617, "createAt": 1747281566137 } }, - "Jbg57aw6IK3Z4Fx7SqZdh": { - "id": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "serverinfos_partinfos", - "comment": "서버-부품 연결", - "columnIds": [ - "cGeAaXm_heE_1MxoPQZ6x", - "rv1LHZrU_9V_9PTrhJglL", - "iH6WMT-edRu71AXKHha-O", - "X0uYzbny1prISJa_gYnIt", - "lcvHWshW-AKfY3CHnmbiC" - ], - "seqColumnIds": [ - "0-PXIFE_CwDwDXvY_qlMC", - "cGeAaXm_heE_1MxoPQZ6x", - "rv1LHZrU_9V_9PTrhJglL", - "iH6WMT-edRu71AXKHha-O", - "X0uYzbny1prISJa_gYnIt", - "lcvHWshW-AKfY3CHnmbiC" - ], - "ui": { - "x": 3256.2456, - "y": 2541.8608, - "zIndex": 869, - "widthName": 111, - "widthComment": 82, - "color": "" - }, - "meta": { - "updateAt": 1747296246228, - "createAt": 1747287044236 - } - }, - "orLBU-C_XFowKM86b0lVB": { - "id": "orLBU-C_XFowKM86b0lVB", - "name": "serverinfos_ipinfos", - "comment": "서버-IP 연결", - "columnIds": [ - "mvErAzOO6dtDr2QBiSm6x", - "Ffs30ak5FXss4y4DrOM-9", - "mXoxwrkoKXV1WKzL_87_a", - "Km9hAV_kAnYMfhhyuQjU8" - ], - "seqColumnIds": [ - "mvErAzOO6dtDr2QBiSm6x", - "Ffs30ak5FXss4y4DrOM-9", - "mXoxwrkoKXV1WKzL_87_a", - "Km9hAV_kAnYMfhhyuQjU8" - ], - "ui": { - "x": 3272.9263, - "y": 1915.3903, - "zIndex": 900, - "widthName": 100, - "widthComment": 68, - "color": "" - }, - "meta": { - "updateAt": 1747287704410, - "createAt": 1747287241280 - } - }, "RTq5rHQupiXXJPXqpN8K5": { "id": "RTq5rHQupiXXJPXqpN8K5", "name": "defenceinfo", @@ -1097,49 +887,114 @@ "pzEFysMFfI2J8uB8YHXxA" ], "ui": { - "x": 2449.8927, - "y": 1742.4513, + "x": 2402.2093, + "y": 2002.2003, "zIndex": 796, "widthName": 64, "widthComment": 60, "color": "" }, "meta": { - "updateAt": 1747379835533, + "updateAt": 1747625578932, "createAt": 1747374666215 } }, - "q0nHqNHYRczLFnV35V_qc": { - "id": "q0nHqNHYRczLFnV35V_qc", + "3RJ8qxNNqL7eCvBmmqzpd": { + "id": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "serviceinfos_lineinfos", + "comment": "", + "columnIds": [ + "_oIE_aDPjyuwPZo2h8QUJ", + "i_tL8EWzsKz8Q6TjEkdFG", + "0rvNoG9MrbN-6-6iDdw3K", + "fGzuo5ZiUU8JjFLpx83H_", + "s2DxySreFcYw4F8pTrtik", + "NwGV49CLzr1A-dxD3tBmJ" + ], + "seqColumnIds": [ + "_oIE_aDPjyuwPZo2h8QUJ", + "i_tL8EWzsKz8Q6TjEkdFG", + "0rvNoG9MrbN-6-6iDdw3K", + "fGzuo5ZiUU8JjFLpx83H_", + "s2DxySreFcYw4F8pTrtik", + "NwGV49CLzr1A-dxD3tBmJ" + ], + "ui": { + "x": 1166.2223, + "y": 1698.7022, + "zIndex": 835, + "widthName": 113, + "widthComment": 60, + "color": "" + }, + "meta": { + "updateAt": 1747631850407, + "createAt": 1747625827836 + } + }, + "Btzrm5KCDr_59gZoXRXol": { + "id": "Btzrm5KCDr_59gZoXRXol", "name": "serviceinfos_serverinfos", "comment": "서비스-서버 연결", "columnIds": [ - "YHS-M0tbd3fsXWddxXjHh", - "gb59smF6KMFsvojjxwvuJ", - "ARlzuJPlNjSld6grPvPsA", - "dEsFAYW9ehgWZ4EEPMAX_", - "BAc1ONx63wWUDHDHNxk5v", - "3xpC59e170haRrVKuaiol" + "3RTWS2E2a-gW6e6wW3sgo", + "aVHpSwITyNUlzw2eRHocV", + "stEdaFSZ8RZorO2WI_W2Z", + "JGzjeoxB88aSopAejjl0M", + "4Y3UNdKcuOhQ3lY9-zjEm", + "UvgOUjhbSsKnhm7ks-2T7" ], "seqColumnIds": [ - "YHS-M0tbd3fsXWddxXjHh", - "gb59smF6KMFsvojjxwvuJ", - "ARlzuJPlNjSld6grPvPsA", - "dEsFAYW9ehgWZ4EEPMAX_", - "BAc1ONx63wWUDHDHNxk5v", - "3xpC59e170haRrVKuaiol" + "3RTWS2E2a-gW6e6wW3sgo", + "aVHpSwITyNUlzw2eRHocV", + "stEdaFSZ8RZorO2WI_W2Z", + "JGzjeoxB88aSopAejjl0M", + "4Y3UNdKcuOhQ3lY9-zjEm", + "UvgOUjhbSsKnhm7ks-2T7" ], "ui": { - "x": 1182.1226, - "y": 1685.7783, - "zIndex": 921, + "x": 1179.9799, + "y": 2663.9415, + "zIndex": 951, "widthName": 126, "widthComment": 94, "color": "" }, "meta": { - "updateAt": 1747379689011, - "createAt": 1747379543415 + "updateAt": 1747631676525, + "createAt": 1747631513876 + } + }, + "BoXnD7ITrjdXuJVzpiLoN": { + "id": "BoXnD7ITrjdXuJVzpiLoN", + "name": "serverinfos_partinfos", + "comment": "서버-부품 연결", + "columnIds": [ + "hvzap8WHQwxODmGohOVcN", + "LHHK0n71w3kZmkJRraK-4", + "Ba036rLR2vRLjGURehMqM", + "0QgnkM04w2SJ7Nf3MTfxM", + "TS6YN3ndjqITM6LWdVimX" + ], + "seqColumnIds": [ + "hvzap8WHQwxODmGohOVcN", + "xlUL3JSIoo2NQaae1bhJC", + "LHHK0n71w3kZmkJRraK-4", + "Ba036rLR2vRLjGURehMqM", + "0QgnkM04w2SJ7Nf3MTfxM", + "TS6YN3ndjqITM6LWdVimX" + ], + "ui": { + "x": 3036.1445, + "y": 2748.8727, + "zIndex": 995, + "widthName": 111, + "widthComment": 82, + "color": "" + }, + "meta": { + "updateAt": 1747632416616, + "createAt": 1747632275744 } } }, @@ -1760,7 +1615,7 @@ "widthDefault": 60 }, "meta": { - "updateAt": 1747378804079, + "updateAt": 1747632559724, "createAt": 1745819764138 } }, @@ -1924,106 +1779,6 @@ "createAt": 1745819764138 } }, - "iylHjtnqU_oLEYolQkQIM": { - "id": "iylHjtnqU_oLEYolQkQIM", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 3, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745819764138, - "createAt": 1745819764138 - } - }, - "pDILaJt_-vUo0fH_c6t2O": { - "id": "pDILaJt_-vUo0fH_c6t2O", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "serverinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 76, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745915831191, - "createAt": 1745819764138 - } - }, - "5kPFX9LYoh8iinAEpt3lm": { - "id": "5kPFX9LYoh8iinAEpt3lm", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "raminfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 65, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746783399667, - "createAt": 1745819764138 - } - }, - "wQnQfh-JJI9BSQGaahMFu": { - "id": "wQnQfh-JJI9BSQGaahMFu", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "softwareinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 89, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745819764138, - "createAt": 1745819764138 - } - }, - "NNGQ-RewVIApA1EISBQRS": { - "id": "NNGQ-RewVIApA1EISBQRS", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1745819764138, - "createAt": 1745819764138 - } - }, "2HB01q46-mugMjuOz85YG": { "id": "2HB01q46-mugMjuOz85YG", "tableId": "ZMGIWLFEswObjH2Sx0NlW", @@ -3153,7 +2908,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 60, "widthDataType": 60, @@ -3173,7 +2928,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 63, "widthComment": 60, "widthDataType": 60, @@ -3704,86 +3459,6 @@ "createAt": 1745820683602 } }, - "0VUfC7ZS0NaIcqAhZYWHV": { - "id": "0VUfC7ZS0NaIcqAhZYWHV", - "tableId": "h2unshrMDFXEq0pYzkkj1", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 10, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745820775209, - "createAt": 1745820772690 - } - }, - "eh3Ubc6NIftsQEbE3kq-v": { - "id": "eh3Ubc6NIftsQEbE3kq-v", - "tableId": "h2unshrMDFXEq0pYzkkj1", - "name": "serverinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 76, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745915809012, - "createAt": 1745820865007 - } - }, - "QZeSgl1hDBgLHn8iG-S4s": { - "id": "QZeSgl1hDBgLHn8iG-S4s", - "tableId": "h2unshrMDFXEq0pYzkkj1", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1745820895091, - "createAt": 1745820895091 - } - }, - "-VaB7wQ3cQKai3peK85u8": { - "id": "-VaB7wQ3cQKai3peK85u8", - "tableId": "h2unshrMDFXEq0pYzkkj1", - "name": "ipinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745820925711, - "createAt": 1745820911647 - } - }, "0ONL4QLQRyZ32MBJ7TN7u": { "id": "0ONL4QLQRyZ32MBJ7TN7u", "tableId": "ZLEpY5EjuZV21718zf-Y1", @@ -4204,186 +3879,6 @@ "createAt": 1745915055367 } }, - "r7fMKgeUcNq4FhYZPN3h8": { - "id": "r7fMKgeUcNq4FhYZPN3h8", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746764378743, - "createAt": 1745916389386 - } - }, - "GwdDytCn1l984Y6piavyi": { - "id": "GwdDytCn1l984Y6piavyi", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "type", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'L2'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747013928831, - "createAt": 1745916389386 - } - }, - "kpG1Udq4ON9Ohj4ociOCo": { - "id": "kpG1Udq4ON9Ohj4ociOCo", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "brand", - "comment": "", - "dataType": "VARCHAR(50)", - "default": "samsung", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746576395586, - "createAt": 1745916389386 - } - }, - "xGjZPy89motgc7RMZWhnl": { - "id": "xGjZPy89motgc7RMZWhnl", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "capacity", - "comment": "용량 (GB)", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745916389386, - "createAt": 1745916389386 - } - }, - "ZyOb1xK46x0-io64OuWOF": { - "id": "ZyOb1xK46x0-io64OuWOF", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "cost_price", - "comment": "", - "dataType": "INT", - "default": "0", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745916389386, - "createAt": 1745916389386 - } - }, - "B3NNhoIrKYGZrScx8XuuH": { - "id": "B3NNhoIrKYGZrScx8XuuH", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "price", - "comment": "", - "dataType": "INT", - "default": "0", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746576346474, - "createAt": 1745916389386 - } - }, - "06IXODaDZXY8cDIet15Im": { - "id": "06IXODaDZXY8cDIet15Im", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "description", - "comment": "", - "dataType": "TEXT", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 61, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745916389386, - "createAt": 1745916389386 - } - }, - "AtQmi9C4c5YlY8Brl9irr": { - "id": "AtQmi9C4c5YlY8Brl9irr", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "updated_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 62, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1745916389386, - "createAt": 1745916389386 - } - }, - "a0bnNatieTB5pr9jElQbS": { - "id": "a0bnNatieTB5pr9jElQbS", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1745916389386, - "createAt": 1745916389386 - } - }, "NVO-aO4GEW9DHdEV8XQq6": { "id": "NVO-aO4GEW9DHdEV8XQq6", "tableId": "6ajvOCaGuXU9pzV0Y9jEi", @@ -4424,26 +3919,6 @@ "createAt": 1746409047865 } }, - "0HPmN1faJk-KhZXILO2zx": { - "id": "0HPmN1faJk-KhZXILO2zx", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "status", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'use'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746603914004, - "createAt": 1746409116719 - } - }, "VycsOgeM1SXkcq_5XYUMS": { "id": "VycsOgeM1SXkcq_5XYUMS", "tableId": "ZMGIWLFEswObjH2Sx0NlW", @@ -4544,126 +4019,6 @@ "createAt": 1746409195694 } }, - "JJri1o7mljYSCAk5wNIYS": { - "id": "JJri1o7mljYSCAk5wNIYS", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746764375735, - "createAt": 1746576242360 - } - }, - "DvwDCnsNxrcfqx6nTsbP4": { - "id": "DvwDCnsNxrcfqx6nTsbP4", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "model", - "comment": "", - "dataType": "VARCHAR(50)", - "default": "", - "options": 12, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746609601447, - "createAt": 1746576689025 - } - }, - "RtHk4GL4mwwGvwZ0UAoXQ": { - "id": "RtHk4GL4mwwGvwZ0UAoXQ", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "serviceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 80, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746576814608, - "createAt": 1746576801535 - } - }, - "rU3ltf8eeXRUibpCkm9H-": { - "id": "rU3ltf8eeXRUibpCkm9H-", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "billing_type", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'month'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 63, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747278302555, - "createAt": 1746576948212 - } - }, - "Pf3dXiCCFxq7Rp3X1El7K": { - "id": "Pf3dXiCCFxq7Rp3X1El7K", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "amount", - "comment": "", - "dataType": "INT", - "default": "0", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747281867179, - "createAt": 1746576948212 - } - }, - "RZJESxJSfjv0xxD8DYnZy": { - "id": "RZJESxJSfjv0xxD8DYnZy", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1746576948212, - "createAt": 1746576948212 - } - }, "dkwDt8XZjnu1Hq3vX4Wta": { "id": "dkwDt8XZjnu1Hq3vX4Wta", "tableId": "doERb3lIVeBW_D0NtNYX8", @@ -4764,66 +4119,6 @@ "createAt": 1746595486404 } }, - "sfeekPFUxsfR1R3fpCkPO": { - "id": "sfeekPFUxsfR1R3fpCkPO", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746604351684, - "createAt": 1746604351684 - } - }, - "2rgItDTiBojLhyoJ4J-z-": { - "id": "2rgItDTiBojLhyoJ4J-z-", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746604389018, - "createAt": 1746604389018 - } - }, - "2DXZGT0BJwjeij0IKXFa1": { - "id": "2DXZGT0BJwjeij0IKXFa1", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "networkinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 87, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746604434513, - "createAt": 1746604423390 - } - }, "6QKQkCLEQNWLc1oF16LgN": { "id": "6QKQkCLEQNWLc1oF16LgN", "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", @@ -4844,46 +4139,6 @@ "createAt": 1746604787601 } }, - "cbdszvDa-AJcISTgkydfJ": { - "id": "cbdszvDa-AJcISTgkydfJ", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "code", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "", - "options": 12, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746609603639, - "createAt": 1746604989616 - } - }, - "dLOesaVz9GnwntiIyvxwW": { - "id": "dLOesaVz9GnwntiIyvxwW", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "softwareinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 89, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746605134374, - "createAt": 1746605122397 - } - }, "o0KMVEBZAnWRSsxx10HmA": { "id": "o0KMVEBZAnWRSsxx10HmA", "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", @@ -5224,66 +4479,6 @@ "createAt": 1746783511284 } }, - "D0lTirj9_pycie0SwZlUG": { - "id": "D0lTirj9_pycie0SwZlUG", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "", - "comment": "", - "dataType": "", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746783513869, - "createAt": 1746783513869 - } - }, - "7oTkP7etYsNgI6J6xQZVG": { - "id": "7oTkP7etYsNgI6J6xQZVG", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "partinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 66, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747119238434, - "createAt": 1746783631248 - } - }, - "qHwMDFU4dV5frDXsuW445": { - "id": "qHwMDFU4dV5frDXsuW445", - "tableId": "IhXnqMFBU_GmCvISNyaKj", - "name": "diskinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 65, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1746783672462, - "createAt": 1746783665163 - } - }, "TQwAGrd3jBQOImSKgfAZb": { "id": "TQwAGrd3jBQOImSKgfAZb", "tableId": "gYqhvNLZjWrQk8LNKH3il", @@ -5404,26 +4599,6 @@ "createAt": 1746783814940 } }, - "HlUwkGDQIzvSXKilnVmeR": { - "id": "HlUwkGDQIzvSXKilnVmeR", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "clientinfo_uid", - "comment": "소유자", - "dataType": "INT", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 73, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747118605268, - "createAt": 1747033067366 - } - }, "F6TXYV3uwRzb-aZYCmf5x": { "id": "F6TXYV3uwRzb-aZYCmf5x", "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", @@ -5504,26 +4679,6 @@ "createAt": 1747118813753 } }, - "vnQRLYgWHQ8AgJkfbs2a3": { - "id": "vnQRLYgWHQ8AgJkfbs2a3", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "manufactur_at", - "comment": "제조일", - "dataType": "TIMESTAMP", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 78, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747118911046, - "createAt": 1747118831111 - } - }, "C-iSSJV5sjbkmpIKBx4Km": { "id": "C-iSSJV5sjbkmpIKBx4Km", "tableId": "5AUwJum9FKPCoYRMBhLnF", @@ -5704,46 +4859,6 @@ "createAt": 1747277247161 } }, - "xnnAe8XzDqeKCQuqBQW8J": { - "id": "xnnAe8XzDqeKCQuqBQW8J", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "start_at", - "comment": "", - "dataType": "DATE", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747277262945, - "createAt": 1747277262945 - } - }, - "7axE7VR8JiDojluDdGLOw": { - "id": "7axE7VR8JiDojluDdGLOw", - "tableId": "CYHveKA03TPJiz6X5wq2L", - "name": "end_at", - "comment": "", - "dataType": "DATE", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747277262945, - "createAt": 1747277262945 - } - }, "pGf_WVtjQtrxr-p19k5G3": { "id": "pGf_WVtjQtrxr-p19k5G3", "tableId": "sgFc3Tg9sWiMm4hsEwKm9", @@ -5973,7 +5088,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 73, "widthComment": 60, "widthDataType": 60, @@ -5987,20 +5102,20 @@ "NzUNVP-O0U298m6bClqyd": { "id": "NzUNVP-O0U298m6bClqyd", "tableId": "R4reSshLxH3DQW6fUfSPa", - "name": "invoiced_at", + "name": "issue_at", "comment": "", "dataType": "DATE", "default": "", "options": 8, "ui": { "keys": 0, - "widthName": 61, + "widthName": 60, "widthComment": 60, "widthDataType": 60, "widthDefault": 60 }, "meta": { - "updateAt": 1747279371394, + "updateAt": 1747627020647, "createAt": 1747279159758 } }, @@ -6187,20 +5302,20 @@ "XqPP8eaTMK9vWD9QQJkYy": { "id": "XqPP8eaTMK9vWD9QQJkYy", "tableId": "M9XC2MNIJqyKe77s6znI7", - "name": "invoiceinfo_uid", + "name": "billinginfo_uid", "comment": "", "dataType": "INT", "default": "", "options": 8, "ui": { - "keys": 2, - "widthName": 81, + "keys": 0, + "widthName": 77, "widthComment": 60, "widthDataType": 60, "widthDefault": 60 }, "meta": { - "updateAt": 1747281924267, + "updateAt": 1747627122211, "createAt": 1747281724119 } }, @@ -6253,7 +5368,7 @@ "default": "", "options": 8, "ui": { - "keys": 2, + "keys": 0, "widthName": 80, "widthComment": 60, "widthDataType": 60, @@ -6324,26 +5439,6 @@ "createAt": 1747282736023 } }, - "QJ0gQxBMvgFftpj3p2koI": { - "id": "QJ0gQxBMvgFftpj3p2koI", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "code", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747283583386, - "createAt": 1747283505933 - } - }, "pY1RZgzuWBgRILX2XsMTt": { "id": "pY1RZgzuWBgRILX2XsMTt", "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", @@ -6384,26 +5479,6 @@ "createAt": 1747286811587 } }, - "qZSh2gBdoEMUq6j7FdhHg": { - "id": "qZSh2gBdoEMUq6j7FdhHg", - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747286857490, - "createAt": 1747286857490 - } - }, "yjaoHnd4nFaa-3REXvRfN": { "id": "yjaoHnd4nFaa-3REXvRfN", "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", @@ -6464,206 +5539,6 @@ "createAt": 1747286929609 } }, - "0-PXIFE_CwDwDXvY_qlMC": { - "id": "0-PXIFE_CwDwDXvY_qlMC", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "", - "comment": "", - "dataType": "", - "default": "", - "options": 0, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287115873, - "createAt": 1747287115873 - } - }, - "cGeAaXm_heE_1MxoPQZ6x": { - "id": "cGeAaXm_heE_1MxoPQZ6x", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 15, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287129605, - "createAt": 1747287126896 - } - }, - "lcvHWshW-AKfY3CHnmbiC": { - "id": "lcvHWshW-AKfY3CHnmbiC", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1747287126897, - "createAt": 1747287126897 - } - }, - "rv1LHZrU_9V_9PTrhJglL": { - "id": "rv1LHZrU_9V_9PTrhJglL", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "serverinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 76, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287149425, - "createAt": 1747287137183 - } - }, - "iH6WMT-edRu71AXKHha-O": { - "id": "iH6WMT-edRu71AXKHha-O", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "partinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 66, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287166620, - "createAt": 1747287159254 - } - }, - "mvErAzOO6dtDr2QBiSm6x": { - "id": "mvErAzOO6dtDr2QBiSm6x", - "tableId": "orLBU-C_XFowKM86b0lVB", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 15, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287274634, - "createAt": 1747287272762 - } - }, - "Km9hAV_kAnYMfhhyuQjU8": { - "id": "Km9hAV_kAnYMfhhyuQjU8", - "tableId": "orLBU-C_XFowKM86b0lVB", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1747287272762, - "createAt": 1747287272762 - } - }, - "mXoxwrkoKXV1WKzL_87_a": { - "id": "mXoxwrkoKXV1WKzL_87_a", - "tableId": "orLBU-C_XFowKM86b0lVB", - "name": "serverinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 76, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287290646, - "createAt": 1747287284659 - } - }, - "Ffs30ak5FXss4y4DrOM-9": { - "id": "Ffs30ak5FXss4y4DrOM-9", - "tableId": "orLBU-C_XFowKM86b0lVB", - "name": "ipinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747287314158, - "createAt": 1747287309255 - } - }, - "X0uYzbny1prISJa_gYnIt": { - "id": "X0uYzbny1prISJa_gYnIt", - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "name": "type", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'CPU'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747296244100, - "createAt": 1747296244099 - } - }, "SaTapKkBzVUluKTG_fsBy": { "id": "SaTapKkBzVUluKTG_fsBy", "tableId": "ZLEpY5EjuZV21718zf-Y1", @@ -7044,126 +5919,6 @@ "createAt": 1747378814732 } }, - "gb59smF6KMFsvojjxwvuJ": { - "id": "gb59smF6KMFsvojjxwvuJ", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "serviceinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 2, - "widthName": 80, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747379640347, - "createAt": 1747379584781 - } - }, - "YHS-M0tbd3fsXWddxXjHh": { - "id": "YHS-M0tbd3fsXWddxXjHh", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 11, - "ui": { - "keys": 1, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747379716004, - "createAt": 1747379627412 - } - }, - "dEsFAYW9ehgWZ4EEPMAX_": { - "id": "dEsFAYW9ehgWZ4EEPMAX_", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "billing_type", - "comment": "", - "dataType": "VARCHAR(20)", - "default": "'month'", - "options": 8, - "ui": { - "keys": 0, - "widthName": 63, - "widthComment": 60, - "widthDataType": 75, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747379627412, - "createAt": 1747379627412 - } - }, - "BAc1ONx63wWUDHDHNxk5v": { - "id": "BAc1ONx63wWUDHDHNxk5v", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "amount", - "comment": "", - "dataType": "INT", - "default": "0", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747379627412, - "createAt": 1747379627412 - } - }, - "3xpC59e170haRrVKuaiol": { - "id": "3xpC59e170haRrVKuaiol", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "created_at", - "comment": "", - "dataType": "TIMESTAMP", - "default": "CURRENT_TIMESTAMP", - "options": 8, - "ui": { - "keys": 0, - "widthName": 60, - "widthComment": 60, - "widthDataType": 65, - "widthDefault": 122 - }, - "meta": { - "updateAt": 1747379627412, - "createAt": 1747379627412 - } - }, - "ARlzuJPlNjSld6grPvPsA": { - "id": "ARlzuJPlNjSld6grPvPsA", - "tableId": "q0nHqNHYRczLFnV35V_qc", - "name": "serverinfo_uid", - "comment": "", - "dataType": "INT", - "default": "", - "options": 8, - "ui": { - "keys": 2, - "widthName": 76, - "widthComment": 60, - "widthDataType": 60, - "widthDefault": 60 - }, - "meta": { - "updateAt": 1747379694076, - "createAt": 1747379666902 - } - }, "UKMpq-uPW9JhNhwRMtBmC": { "id": "UKMpq-uPW9JhNhwRMtBmC", "tableId": "kc1EFvFhlBSc0B0bDgX28", @@ -7183,6 +5938,486 @@ "updateAt": 1747380826300, "createAt": 1747380826300 } + }, + "BaXSr0Zs4Yk5dCbD8X_lm": { + "id": "BaXSr0Zs4Yk5dCbD8X_lm", + "tableId": "doERb3lIVeBW_D0NtNYX8", + "name": "price", + "comment": "단가", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747620603412, + "createAt": 1747620566701 + } + }, + "CY-ZAs3Ns1YhoxL9UiCee": { + "id": "CY-ZAs3Ns1YhoxL9UiCee", + "tableId": "kc1EFvFhlBSc0B0bDgX28", + "name": "serverinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747621946921, + "createAt": 1747621930444 + } + }, + "_oIE_aDPjyuwPZo2h8QUJ": { + "id": "_oIE_aDPjyuwPZo2h8QUJ", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747625897775, + "createAt": 1747625895255 + } + }, + "fGzuo5ZiUU8JjFLpx83H_": { + "id": "fGzuo5ZiUU8JjFLpx83H_", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "billing_type", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'month'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 63, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747625895256, + "createAt": 1747625895256 + } + }, + "s2DxySreFcYw4F8pTrtik": { + "id": "s2DxySreFcYw4F8pTrtik", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "amount", + "comment": "", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747625895256, + "createAt": 1747625895256 + } + }, + "NwGV49CLzr1A-dxD3tBmJ": { + "id": "NwGV49CLzr1A-dxD3tBmJ", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1747625895256, + "createAt": 1747625895256 + } + }, + "i_tL8EWzsKz8Q6TjEkdFG": { + "id": "i_tL8EWzsKz8Q6TjEkdFG", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "serviceinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 80, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747625924136, + "createAt": 1747625914064 + } + }, + "0rvNoG9MrbN-6-6iDdw3K": { + "id": "0rvNoG9MrbN-6-6iDdw3K", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "name": "lineinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 63, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747625938005, + "createAt": 1747625932404 + } + }, + "uodvC_rgsnCqB65A3uZYW": { + "id": "uodvC_rgsnCqB65A3uZYW", + "tableId": "R4reSshLxH3DQW6fUfSPa", + "name": "serviceinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 80, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747626616365, + "createAt": 1747626605945 + } + }, + "g41qCdbclynuoNo7zTUoC": { + "id": "g41qCdbclynuoNo7zTUoC", + "tableId": "M9XC2MNIJqyKe77s6znI7", + "name": "serviceinofs_lineinfos_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 135, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747627136540, + "createAt": 1747627057149 + } + }, + "4sOzBtwc60uLCkHDsc97O": { + "id": "4sOzBtwc60uLCkHDsc97O", + "tableId": "M9XC2MNIJqyKe77s6znI7", + "name": "serviceinfos_ipinfos_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 126, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747627183882, + "createAt": 1747627168942 + } + }, + "3RTWS2E2a-gW6e6wW3sgo": { + "id": "3RTWS2E2a-gW6e6wW3sgo", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747631561974, + "createAt": 1747631559174 + } + }, + "JGzjeoxB88aSopAejjl0M": { + "id": "JGzjeoxB88aSopAejjl0M", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "billing_type", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'month'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 63, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747631559174, + "createAt": 1747631559174 + } + }, + "4Y3UNdKcuOhQ3lY9-zjEm": { + "id": "4Y3UNdKcuOhQ3lY9-zjEm", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "amount", + "comment": "", + "dataType": "INT", + "default": "0", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747631559174, + "createAt": 1747631559174 + } + }, + "UvgOUjhbSsKnhm7ks-2T7": { + "id": "UvgOUjhbSsKnhm7ks-2T7", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1747631559174, + "createAt": 1747631559174 + } + }, + "aVHpSwITyNUlzw2eRHocV": { + "id": "aVHpSwITyNUlzw2eRHocV", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "serviceinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 80, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747631645924, + "createAt": 1747631603772 + } + }, + "stEdaFSZ8RZorO2WI_W2Z": { + "id": "stEdaFSZ8RZorO2WI_W2Z", + "tableId": "Btzrm5KCDr_59gZoXRXol", + "name": "serverinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747631652735, + "createAt": 1747631627547 + } + }, + "hvzap8WHQwxODmGohOVcN": { + "id": "hvzap8WHQwxODmGohOVcN", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 11, + "ui": { + "keys": 1, + "widthName": 60, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747632315593, + "createAt": 1747632312971 + } + }, + "xlUL3JSIoo2NQaae1bhJC": { + "id": "xlUL3JSIoo2NQaae1bhJC", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "model", + "comment": "", + "dataType": "VARCHAR(50)", + "default": "", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747632312972, + "createAt": 1747632312972 + } + }, + "TS6YN3ndjqITM6LWdVimX": { + "id": "TS6YN3ndjqITM6LWdVimX", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "created_at", + "comment": "", + "dataType": "TIMESTAMP", + "default": "CURRENT_TIMESTAMP", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 65, + "widthDefault": 122 + }, + "meta": { + "updateAt": 1747632312972, + "createAt": 1747632312972 + } + }, + "LHHK0n71w3kZmkJRraK-4": { + "id": "LHHK0n71w3kZmkJRraK-4", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "serverinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 76, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747632339290, + "createAt": 1747632330202 + } + }, + "Ba036rLR2vRLjGURehMqM": { + "id": "Ba036rLR2vRLjGURehMqM", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "partinfo_uid", + "comment": "", + "dataType": "INT", + "default": "", + "options": 8, + "ui": { + "keys": 2, + "widthName": 66, + "widthComment": 60, + "widthDataType": 60, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747632360101, + "createAt": 1747632352018 + } + }, + "0QgnkM04w2SJ7Nf3MTfxM": { + "id": "0QgnkM04w2SJ7Nf3MTfxM", + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "name": "type", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "'CPU'", + "options": 8, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747632410788, + "createAt": 1747632410788 + } + }, + "GUAjQ-qFNvMHOaqY-rBXq": { + "id": "GUAjQ-qFNvMHOaqY-rBXq", + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "name": "code", + "comment": "", + "dataType": "VARCHAR(20)", + "default": "", + "options": 12, + "ui": { + "keys": 0, + "widthName": 60, + "widthComment": 60, + "widthDataType": 75, + "widthDefault": 60 + }, + "meta": { + "updateAt": 1747638862777, + "createAt": 1747632565731 + } } }, "relationshipEntities": { @@ -7197,7 +6432,7 @@ "_AcWUYKzNJd-V0fRHq8Cx" ], "x": 1170.0947, - "y": 897.4689333333332, + "y": 922.1356, "direction": 1 }, "end": { @@ -7225,7 +6460,7 @@ "_AcWUYKzNJd-V0fRHq8Cx" ], "x": 1170.0947, - "y": 1094.8022666666666, + "y": 1070.1356, "direction": 1 }, "end": { @@ -7233,8 +6468,8 @@ "columnIds": [ "sscrxOdwLlx94tx1j_MrH" ], - "x": 692.1378, - "y": 1680.2032428571429, + "x": 686.1378, + "y": 1674.3461, "direction": 2 }, "meta": { @@ -7252,8 +6487,8 @@ "columnIds": [ "nb5CGzskl3_LIRA0yyede" ], - "x": 692.1378, - "y": 1863.060385714286, + "x": 686.1378, + "y": 1810.3461, "direction": 2 }, "end": { @@ -7261,8 +6496,8 @@ "columnIds": [ "zG8_7CN0n4heTPXcS1V8e" ], - "x": 1185.2953, - "y": 2076.666, + "x": 1167.4791, + "y": 2250.4061, "direction": 1 }, "meta": { @@ -7280,8 +6515,8 @@ "columnIds": [ "nb5CGzskl3_LIRA0yyede" ], - "x": 692.1378, - "y": 1954.4889571428575, + "x": 686.1378, + "y": 1844.3461, "direction": 2 }, "end": { @@ -7289,8 +6524,8 @@ "columnIds": [ "CgGKx59wNvLpWcoBrEuvK" ], - "x": 1178.7675, - "y": 2663.8046, + "x": 1170.8023, + "y": 2482.9427, "direction": 1 }, "meta": { @@ -7308,8 +6543,8 @@ "columnIds": [ "2HB01q46-mugMjuOz85YG" ], - "x": 2457.4319, - "y": 2627.0816, + "x": 2400.1595, + "y": 2390.1189, "direction": 1 }, "end": { @@ -7317,8 +6552,8 @@ "columnIds": [ "AKpf8UbHiwRJll36PQR6f" ], - "x": 1702.7675, - "y": 2663.8046, + "x": 1694.8023, + "y": 2482.9427, "direction": 2 }, "meta": { @@ -7336,8 +6571,8 @@ "columnIds": [ "nb5CGzskl3_LIRA0yyede" ], - "x": 692.1378, - "y": 1771.6318142857144, + "x": 686.1378, + "y": 1776.3461, "direction": 2 }, "end": { @@ -7345,8 +6580,8 @@ "columnIds": [ "jw-RY9uJDPlANghUUPnJ4" ], - "x": 1180.4415, - "y": 1536.5532, + "x": 1169.2751, + "y": 2024.3199, "direction": 1 }, "meta": { @@ -7362,8 +6597,8 @@ "start": { "tableId": "ZLEpY5EjuZV21718zf-Y1", "columnIds": [], - "x": 2439.4932, - "y": 1232.3495, + "x": 2404.3581, + "y": 1880.9982, "direction": 1 }, "end": { @@ -7371,8 +6606,8 @@ "columnIds": [ "fdfaSp8HaDoxD96LL1tX4" ], - "x": 1695.4415, - "y": 1536.5532, + "x": 1684.2751, + "y": 2024.3199, "direction": 2 }, "meta": { @@ -7380,62 +6615,6 @@ "createAt": 1745819764143 } }, - "AckV69XB9r2m1VHP64gtd": { - "id": "AckV69XB9r2m1VHP64gtd", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "kc1EFvFhlBSc0B0bDgX28", - "columnIds": [ - "nb5CGzskl3_LIRA0yyede" - ], - "x": 692.1378, - "y": 1725.9175285714286, - "direction": 2 - }, - "end": { - "tableId": "F82-EcEv3fB4uzGzPrPla", - "columnIds": [ - "fDS7QeP4XnANQE_qEtGsY" - ], - "x": 1180.7967, - "y": 1296.9182, - "direction": 1 - }, - "meta": { - "updateAt": 1746604508898, - "createAt": 1745819764143 - } - }, - "6blFGW77QEOBG_yDwtFQq": { - "id": "6blFGW77QEOBG_yDwtFQq", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "doERb3lIVeBW_D0NtNYX8", - "columnIds": [ - "7B0zaLoZnOoMNW8OHZlrQ" - ], - "x": 2417.4558, - "y": 978.7781, - "direction": 1 - }, - "end": { - "tableId": "F82-EcEv3fB4uzGzPrPla", - "columnIds": [ - "dDoAacc03mr5Qr0bIwlN6" - ], - "x": 1695.7967, - "y": 1296.9182, - "direction": 2 - }, - "meta": { - "updateAt": 1746604489464, - "createAt": 1745819764143 - } - }, "95uRv2fz3rssNbkyuzkLh": { "id": "95uRv2fz3rssNbkyuzkLh", "identification": false, @@ -7456,7 +6635,7 @@ "DGl10GI58QwOHwpTu4Z1Y" ], "x": 1181.8279, - "y": 2969.3078, + "y": 3274.7872, "direction": 1 }, "meta": { @@ -7530,8 +6709,8 @@ "columnIds": [ "7B0zaLoZnOoMNW8OHZlrQ" ], - "x": 2675.4558, - "y": 1046.7781, + "x": 2607.9171, + "y": 1685.5552, "direction": 8 }, "end": { @@ -7539,8 +6718,8 @@ "columnIds": [ "f7_MGvRjkwL1xkCWrAgDR" ], - "x": 2688.4932, - "y": 1132.3495, + "x": 2653.3581, + "y": 1780.9982, "direction": 4 }, "meta": { @@ -7558,8 +6737,8 @@ "columnIds": [ "nb5CGzskl3_LIRA0yyede" ], - "x": 692.1378, - "y": 1908.7746714285718, + "x": 686.1378, + "y": 1912.3461, "direction": 2 }, "end": { @@ -7567,8 +6746,8 @@ "columnIds": [ "YKXKsIEJE-vmIMQd5ZUMC" ], - "x": 1180.3332, - "y": 2374.5767, + "x": 1182.4615, + "y": 3016.1046, "direction": 1 }, "meta": { @@ -7586,8 +6765,8 @@ "columnIds": [ "Jh6e_-9QYe1Tqve0PE3kT" ], - "x": 2445.6254, - "y": 2279.381, + "x": 2410.026, + "y": 2947.3911, "direction": 1 }, "end": { @@ -7595,8 +6774,8 @@ "columnIds": [ "ox7xu7XaYBZyB2alu2HcK" ], - "x": 1695.3332, - "y": 2374.5767, + "x": 1697.4615, + "y": 3016.1046, "direction": 2 }, "meta": { @@ -7604,202 +6783,6 @@ "createAt": 1746783814940 } }, - "STHM-pzaTO72SEkIGYTCA": { - "id": "STHM-pzaTO72SEkIGYTCA", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1435.5947, - "y": 1168.1356, - "direction": 8 - }, - "end": { - "tableId": "RMhrLs7bOaopKmKt9YKHQ", - "columnIds": [ - "ha72QbBWfvyRymsyFBov8" - ], - "x": 2223.1253, - "y": 2636.5239, - "direction": 1 - }, - "meta": { - "updateAt": 1747118545120, - "createAt": 1747118545120 - } - }, - "nqdOCB_VJIeTtmlv33rcm": { - "id": "nqdOCB_VJIeTtmlv33rcm", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1701.0947, - "y": 1088.1356, - "direction": 2 - }, - "end": { - "tableId": "doERb3lIVeBW_D0NtNYX8", - "columnIds": [ - "Ue1gt0C4DyjOQswV8LxkE" - ], - "x": 2205.6162, - "y": 1140.5589, - "direction": 1 - }, - "meta": { - "updateAt": 1747198681287, - "createAt": 1747198681287 - } - }, - "zH9SNavkYXAVRNXk4KF3w": { - "id": "zH9SNavkYXAVRNXk4KF3w", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1170.0947, - "y": 996.1355999999998, - "direction": 1 - }, - "end": { - "tableId": "R4reSshLxH3DQW6fUfSPa", - "columnIds": [ - "Mlq3l8ZyEkSzXldwOmRed" - ], - "x": 709.3262, - "y": 945.1988, - "direction": 2 - }, - "meta": { - "updateAt": 1747279114628, - "createAt": 1747279114628 - } - }, - "8v6Wmy4UTd5daxh1_kCH4": { - "id": "8v6Wmy4UTd5daxh1_kCH4", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "R4reSshLxH3DQW6fUfSPa", - "columnIds": [ - "fsAJySlXPbGQahV59hQgo" - ], - "x": 455.3262, - "y": 1057.1988000000001, - "direction": 8 - }, - "end": { - "tableId": "M9XC2MNIJqyKe77s6znI7", - "columnIds": [ - "XqPP8eaTMK9vWD9QQJkYy" - ], - "x": 460.46479999999997, - "y": 1212.971, - "direction": 4 - }, - "meta": { - "updateAt": 1747281724119, - "createAt": 1747281724119 - } - }, - "YDIkLS7KeNom6uC_nProR": { - "id": "YDIkLS7KeNom6uC_nProR", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "kc1EFvFhlBSc0B0bDgX28", - "columnIds": [ - "nb5CGzskl3_LIRA0yyede" - ], - "x": 435.13779999999997, - "y": 1657.3461, - "direction": 4 - }, - "end": { - "tableId": "M9XC2MNIJqyKe77s6znI7", - "columnIds": [ - "ZeTOeaI1N5mWuBiB0tO1F" - ], - "x": 460.46479999999997, - "y": 1436.971, - "direction": 8 - }, - "meta": { - "updateAt": 1747282258543, - "createAt": 1747282258543 - } - }, - "8Ulr6TphgoytgicjXwDqj": { - "id": "8Ulr6TphgoytgicjXwDqj", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "gYqhvNLZjWrQk8LNKH3il", - "columnIds": [ - "TQwAGrd3jBQOImSKgfAZb" - ], - "x": 1436.9646, - "y": 2311.9581, - "direction": 4 - }, - "end": { - "tableId": "M9XC2MNIJqyKe77s6znI7", - "columnIds": [ - "cuyA-A5FkTXz_x0BD1Uld" - ], - "x": 802.0584, - "y": 1305.1939, - "direction": 2 - }, - "meta": { - "updateAt": 1747282593370, - "createAt": 1747282593370 - } - }, - "OFCgrZzGLTIHAQEbHT_dj": { - "id": "OFCgrZzGLTIHAQEbHT_dj", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "RMhrLs7bOaopKmKt9YKHQ", - "columnIds": [ - "Jh6e_-9QYe1Tqve0PE3kT" - ], - "x": 2223.1253, - "y": 2630.5239, - "direction": 1 - }, - "end": { - "tableId": "M9XC2MNIJqyKe77s6znI7", - "columnIds": [ - "GfFdPBERgldIUWf5bA_nZ" - ], - "x": 802.0584, - "y": 1305.1939, - "direction": 2 - }, - "meta": { - "updateAt": 1747282736023, - "createAt": 1747282736023 - } - }, "rDaiOqjpenuTOWAB9GhA6": { "id": "rDaiOqjpenuTOWAB9GhA6", "identification": false, @@ -7819,8 +6802,8 @@ "columnIds": [ "5KRw8TtT2nLqpYfKFOBwe" ], - "x": 2417.4558, - "y": 842.7781, + "x": 2349.9171, + "y": 1481.5552, "direction": 1 }, "meta": { @@ -7828,314 +6811,6 @@ "createAt": 1747286811587 } }, - "qLQPXlDyy1hmEhoRUdANl": { - "id": "qLQPXlDyy1hmEhoRUdANl", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1699.0947, - "y": 1020.8022666666668, - "direction": 2 - }, - "end": { - "tableId": "xrgAG9Zc_whfxTeGQ2fqx", - "columnIds": [ - "qZSh2gBdoEMUq6j7FdhHg" - ], - "x": 2429.8024, - "y": 1874.7664, - "direction": 1 - }, - "meta": { - "updateAt": 1747286857490, - "createAt": 1747286857490 - } - }, - "cxg33av4banc6Ewrry-po": { - "id": "cxg33av4banc6Ewrry-po", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1701.0947, - "y": 1128.1356, - "direction": 2 - }, - "end": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "yjaoHnd4nFaa-3REXvRfN" - ], - "x": 2470.9788, - "y": 2190.0849, - "direction": 4 - }, - "meta": { - "updateAt": 1747286871487, - "createAt": 1747286871487 - } - }, - "oXc2VcEdry8DcoU1I86K4": { - "id": "oXc2VcEdry8DcoU1I86K4", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1699.0947, - "y": 1119.4689333333333, - "direction": 2 - }, - "end": { - "tableId": "RMhrLs7bOaopKmKt9YKHQ", - "columnIds": [ - "VxbbWBYPZdH63koVtdRuv" - ], - "x": 2679.6254, - "y": 2605.381, - "direction": 4 - }, - "meta": { - "updateAt": 1747286910519, - "createAt": 1747286910519 - } - }, - "GCXPkwOf_AhaOHOeh1_df": { - "id": "GCXPkwOf_AhaOHOeh1_df", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1699.0947, - "y": 1107.1356, - "direction": 2 - }, - "end": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "kyD7tU9kevxCDow7j2uHI" - ], - "x": 2430.9915, - "y": 2313.7822, - "direction": 1 - }, - "meta": { - "updateAt": 1747286929609, - "createAt": 1747286929609 - } - }, - "r8ucpCIm1MkBDOr0kvEl9": { - "id": "r8ucpCIm1MkBDOr0kvEl9", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 2943.9915, - "y": 2473.7822, - "direction": 2 - }, - "end": { - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "columnIds": [ - "rv1LHZrU_9V_9PTrhJglL" - ], - "x": 3256.2456, - "y": 2585.8608, - "direction": 1 - }, - "meta": { - "updateAt": 1747287137183, - "createAt": 1747287137183 - } - }, - "P_gL6Gh5661VM4MM9ucql": { - "id": "P_gL6Gh5661VM4MM9ucql", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "RMhrLs7bOaopKmKt9YKHQ", - "columnIds": [ - "Jh6e_-9QYe1Tqve0PE3kT" - ], - "x": 2936.1254, - "y": 2741.381, - "direction": 2 - }, - "end": { - "tableId": "Jbg57aw6IK3Z4Fx7SqZdh", - "columnIds": [ - "iH6WMT-edRu71AXKHha-O" - ], - "x": 3256.2456, - "y": 2673.8608, - "direction": 1 - }, - "meta": { - "updateAt": 1747287159254, - "createAt": 1747287159254 - } - }, - "lNJIUzLhDa6jVxnfEZLV0": { - "id": "lNJIUzLhDa6jVxnfEZLV0", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 2943.9915, - "y": 2313.7822, - "direction": 2 - }, - "end": { - "tableId": "orLBU-C_XFowKM86b0lVB", - "columnIds": [ - "mXoxwrkoKXV1WKzL_87_a" - ], - "x": 3272.9263, - "y": 2029.3903, - "direction": 1 - }, - "meta": { - "updateAt": 1747287284659, - "createAt": 1747287284659 - } - }, - "aRPqn8R_3I5F-dlxu1DbS": { - "id": "aRPqn8R_3I5F-dlxu1DbS", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "ZLEpY5EjuZV21718zf-Y1", - "columnIds": [ - "Id0h8QbOdlhPj9P1zTm5o" - ], - "x": 2950.1231, - "y": 1558.0484, - "direction": 2 - }, - "end": { - "tableId": "orLBU-C_XFowKM86b0lVB", - "columnIds": [ - "Ffs30ak5FXss4y4DrOM-9" - ], - "x": 3272.9263, - "y": 1953.3903, - "direction": 1 - }, - "meta": { - "updateAt": 1747287309255, - "createAt": 1747287309255 - } - }, - "LrJDhKK4xoCFS3lROJdmK": { - "id": "LrJDhKK4xoCFS3lROJdmK", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1699.0947, - "y": 1094.8022666666666, - "direction": 2 - }, - "end": { - "tableId": "ZLEpY5EjuZV21718zf-Y1", - "columnIds": [ - "SaTapKkBzVUluKTG_fsBy" - ], - "x": 2438.1231, - "y": 1502.0484, - "direction": 1 - }, - "meta": { - "updateAt": 1747297811324, - "createAt": 1747297811324 - } - }, - "o_2EhfpnhKfXejwWc2PZM": { - "id": "o_2EhfpnhKfXejwWc2PZM", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "6ajvOCaGuXU9pzV0Y9jEi", - "columnIds": [ - "_AcWUYKzNJd-V0fRHq8Cx" - ], - "x": 1699.0947, - "y": 953.8498857142858, - "direction": 2 - }, - "end": { - "tableId": "doERb3lIVeBW_D0NtNYX8", - "columnIds": [ - "B5P-XTPII39W_C1xsZEM-" - ], - "x": 2427.0448, - "y": 1226.5589, - "direction": 1 - }, - "meta": { - "updateAt": 1747297931757, - "createAt": 1747297931757 - } - }, - "Ze2IarmACVoT2vZUHxTJu": { - "id": "Ze2IarmACVoT2vZUHxTJu", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 1, - "start": { - "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", - "columnIds": [ - "F9EPb6nsDx6Tf3GG8rvP1" - ], - "x": 2446.3712, - "y": 1518.4445, - "direction": 1 - }, - "end": { - "tableId": "kc1EFvFhlBSc0B0bDgX28", - "columnIds": [ - "74hYN_2bj1ubH9fDJVRVz" - ], - "x": 695.1378, - "y": 1757.3461, - "direction": 2 - }, - "meta": { - "updateAt": 1747373947530, - "createAt": 1747373947530 - } - }, "rvhOgmNcWHmmWI1PYPjzk": { "id": "rvhOgmNcWHmmWI1PYPjzk", "identification": false, @@ -8146,8 +6821,8 @@ "columnIds": [ "zBz4vBOZSIA8vKmfqXckO" ], - "x": 2449.8927, - "y": 1866.4513, + "x": 2402.2093, + "y": 2126.2003, "direction": 1 }, "end": { @@ -8155,8 +6830,8 @@ "columnIds": [ "Ve6X-7qKKUxId0tll1Caz" ], - "x": 1706.2953, - "y": 2076.666, + "x": 1688.4791, + "y": 2250.4061, "direction": 2 }, "meta": { @@ -8164,36 +6839,8 @@ "createAt": 1747375452269 } }, - "gy8AYT4ifY9wU-1_ttgwO": { - "id": "gy8AYT4ifY9wU-1_ttgwO", - "identification": false, - "relationshipType": 16, - "startRelationshipType": 2, - "start": { - "tableId": "kc1EFvFhlBSc0B0bDgX28", - "columnIds": [ - "nb5CGzskl3_LIRA0yyede" - ], - "x": 692.1378, - "y": 1817.3461000000002, - "direction": 2 - }, - "end": { - "tableId": "q0nHqNHYRczLFnV35V_qc", - "columnIds": [ - "gb59smF6KMFsvojjxwvuJ" - ], - "x": 1182.1226, - "y": 1785.7783, - "direction": 1 - }, - "meta": { - "updateAt": 1747379584781, - "createAt": 1747379584781 - } - }, - "OfL_b7drVbtK_qtISBxwG": { - "id": "OfL_b7drVbtK_qtISBxwG", + "1aURvXuUxIJSq835rWUHk": { + "id": "1aURvXuUxIJSq835rWUHk", "identification": false, "relationshipType": 16, "startRelationshipType": 2, @@ -8202,22 +6849,274 @@ "columnIds": [ "F9EPb6nsDx6Tf3GG8rvP1" ], - "x": 2446.3712, - "y": 1518.4445, + "x": 424.9137, + "y": 1388.9145, + "direction": 8 + }, + "end": { + "tableId": "kc1EFvFhlBSc0B0bDgX28", + "columnIds": [ + "CY-ZAs3Ns1YhoxL9UiCee" + ], + "x": 436.63779999999997, + "y": 1657.3461, + "direction": 4 + }, + "meta": { + "updateAt": 1747621930445, + "createAt": 1747621930445 + } + }, + "6OXR3AW1sSxDJA2ITIz9i": { + "id": "6OXR3AW1sSxDJA2ITIz9i", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "kc1EFvFhlBSc0B0bDgX28", + "columnIds": [ + "nb5CGzskl3_LIRA0yyede" + ], + "x": 686.1378, + "y": 1742.3461, + "direction": 2 + }, + "end": { + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "columnIds": [ + "i_tL8EWzsKz8Q6TjEkdFG" + ], + "x": 1166.2223, + "y": 1798.7022, + "direction": 1 + }, + "meta": { + "updateAt": 1747625914065, + "createAt": 1747625914065 + } + }, + "QJHejLurUndA2vJMYRawK": { + "id": "QJHejLurUndA2vJMYRawK", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "doERb3lIVeBW_D0NtNYX8", + "columnIds": [ + "7B0zaLoZnOoMNW8OHZlrQ" + ], + "x": 2349.9171, + "y": 1617.5552, "direction": 1 }, "end": { - "tableId": "q0nHqNHYRczLFnV35V_qc", + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", "columnIds": [ - "ARlzuJPlNjSld6grPvPsA" + "0rvNoG9MrbN-6-6iDdw3K" ], - "x": 1697.1226, - "y": 1785.7783, + "x": 1681.2223, + "y": 1798.7022, "direction": 2 }, "meta": { - "updateAt": 1747379666902, - "createAt": 1747379666902 + "updateAt": 1747625932404, + "createAt": 1747625932404 + } + }, + "avEpCJt-x4kXYN5bcKxiG": { + "id": "avEpCJt-x4kXYN5bcKxiG", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "kc1EFvFhlBSc0B0bDgX28", + "columnIds": [ + "nb5CGzskl3_LIRA0yyede" + ], + "x": 686.1378, + "y": 1708.3461, + "direction": 2 + }, + "end": { + "tableId": "R4reSshLxH3DQW6fUfSPa", + "columnIds": [ + "uodvC_rgsnCqB65A3uZYW" + ], + "x": 1158.0459, + "y": 1442.7878, + "direction": 1 + }, + "meta": { + "updateAt": 1747626605945, + "createAt": 1747626605945 + } + }, + "MxsfrRz6sLqMRG7oWr1iC": { + "id": "MxsfrRz6sLqMRG7oWr1iC", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "3RJ8qxNNqL7eCvBmmqzpd", + "columnIds": [ + "_oIE_aDPjyuwPZo2h8QUJ" + ], + "x": 1678.4824, + "y": 1662.4008, + "direction": 2 + }, + "end": { + "tableId": "M9XC2MNIJqyKe77s6znI7", + "columnIds": [ + "g41qCdbclynuoNo7zTUoC" + ], + "x": 2324.3826, + "y": 1083.8752, + "direction": 1 + }, + "meta": { + "updateAt": 1747627057149, + "createAt": 1747627057149 + } + }, + "JJfgXbuwe3g8PggszRv6T": { + "id": "JJfgXbuwe3g8PggszRv6T", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "3tdV9J9ns8BWCGQeCXITI", + "columnIds": [ + "N9whwkJk3imEwSl_tqk7W" + ], + "x": 1684.2751, + "y": 1974.3199, + "direction": 2 + }, + "end": { + "tableId": "M9XC2MNIJqyKe77s6znI7", + "columnIds": [ + "4sOzBtwc60uLCkHDsc97O" + ], + "x": 2324.3826, + "y": 1158.5418666666667, + "direction": 1 + }, + "meta": { + "updateAt": 1747627168942, + "createAt": 1747627168942 + } + }, + "xnvl_tBcFrTl87jBGDW08": { + "id": "xnvl_tBcFrTl87jBGDW08", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "kc1EFvFhlBSc0B0bDgX28", + "columnIds": [ + "nb5CGzskl3_LIRA0yyede" + ], + "x": 686.1378, + "y": 1878.3461, + "direction": 2 + }, + "end": { + "tableId": "Btzrm5KCDr_59gZoXRXol", + "columnIds": [ + "aVHpSwITyNUlzw2eRHocV" + ], + "x": 1179.9799, + "y": 2763.9415, + "direction": 1 + }, + "meta": { + "updateAt": 1747631603773, + "createAt": 1747631603773 + } + }, + "xYyFwSIzfn3RPzA8eaJoV": { + "id": "xYyFwSIzfn3RPzA8eaJoV", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 2410.6602, + "y": 2683.435, + "direction": 1 + }, + "end": { + "tableId": "Btzrm5KCDr_59gZoXRXol", + "columnIds": [ + "stEdaFSZ8RZorO2WI_W2Z" + ], + "x": 1694.9799, + "y": 2763.9415, + "direction": 2 + }, + "meta": { + "updateAt": 1747631627547, + "createAt": 1747631627547 + } + }, + "KMa7J50RT1ImakceLy9iZ": { + "id": "KMa7J50RT1ImakceLy9iZ", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "B4qGh3KZsXHQ3_4EOgwJZ", + "columnIds": [ + "F9EPb6nsDx6Tf3GG8rvP1" + ], + "x": 2907.6602, + "y": 2683.435, + "direction": 2 + }, + "end": { + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "columnIds": [ + "LHHK0n71w3kZmkJRraK-4" + ], + "x": 3036.1445, + "y": 2792.8727, + "direction": 1 + }, + "meta": { + "updateAt": 1747632330203, + "createAt": 1747632330203 + } + }, + "bVmMQk7Qb5kh6yURDiOLx": { + "id": "bVmMQk7Qb5kh6yURDiOLx", + "identification": false, + "relationshipType": 16, + "startRelationshipType": 2, + "start": { + "tableId": "RMhrLs7bOaopKmKt9YKHQ", + "columnIds": [ + "Jh6e_-9QYe1Tqve0PE3kT" + ], + "x": 2907.026, + "y": 2947.3911, + "direction": 2 + }, + "end": { + "tableId": "BoXnD7ITrjdXuJVzpiLoN", + "columnIds": [ + "Ba036rLR2vRLjGURehMqM" + ], + "x": 3036.1445, + "y": 2880.8727, + "direction": 1 + }, + "meta": { + "updateAt": 1747632352018, + "createAt": 1747632352018 } } }, diff --git a/app/Entities/CommonEntity.php b/app/Entities/CommonEntity.php index ae45b2e..ee5a656 100644 --- a/app/Entities/CommonEntity.php +++ b/app/Entities/CommonEntity.php @@ -22,7 +22,7 @@ abstract class CommonEntity extends Entity $field = constant("static::PK"); return $this->attributes[$field]; } - final public function getTitle(): string + public function getTitle(): string { $field = constant("static::TITLE"); return $this->attributes[$field]; diff --git a/app/Entities/Customer/ServicePartEntity.php b/app/Entities/Customer/ServicePartEntity.php index 80b0e18..9c31136 100644 --- a/app/Entities/Customer/ServicePartEntity.php +++ b/app/Entities/Customer/ServicePartEntity.php @@ -8,4 +8,14 @@ class ServicePartEntity extends CustomerEntity { const PK = ServicePartModel::PK; const TITLE = ServicePartModel::TITLE; + + public function getServiceInfo() + { + return $this->attributes['erviceinfo_uid']; + } + + public function getPartInfo() + { + return $this->attributes['partinfo_uid']; + } } diff --git a/app/Entities/Equipment/DefenceEntity.php b/app/Entities/Equipment/DefenceEntity.php new file mode 100644 index 0000000..22b0bdb --- /dev/null +++ b/app/Entities/Equipment/DefenceEntity.php @@ -0,0 +1,11 @@ +attributes['type']; + } } diff --git a/app/Entities/Equipment/ServerEntity.php b/app/Entities/Equipment/ServerEntity.php index f67abd2..0aeafb2 100644 --- a/app/Entities/Equipment/ServerEntity.php +++ b/app/Entities/Equipment/ServerEntity.php @@ -6,6 +6,23 @@ use App\Models\Equipment\ServerModel; class ServerEntity extends EquipmentEntity { - const PK = ServerModel::PK; + const PK = ServerModel::PK; const TITLE = ServerModel::TITLE; + public function getTitle(): string + { + return parent::getTitle() . " [{$this->attributes['model']}]"; + } + public function getPartEntities(string $type): array + { + return $this->attributes[$type] ?? []; + } + + public function addPartEntity(string $type, PartEntity $partEntity): void + { + if (!isset($this->attributes[$type])) { + $this->attributes[$type] = []; + } + $this->attributes[$type][] = $partEntity; + // $this->attributes[$type] = array_unique($this->attributes[$type], SORT_REGULAR); + } } diff --git a/app/Entities/Equipment/ServerPartEntity.php b/app/Entities/Equipment/ServerPartEntity.php new file mode 100644 index 0000000..416eeda --- /dev/null +++ b/app/Entities/Equipment/ServerPartEntity.php @@ -0,0 +1,21 @@ +attributes['serverinfo_uid']; + } + + public function getPartInfo() + { + return $this->attributes['partinfo_uid']; + } +} diff --git a/app/Helpers/Customer/ServiceHelper.php b/app/Helpers/Customer/ServiceHelper.php index 414b00c..3843342 100644 --- a/app/Helpers/Customer/ServiceHelper.php +++ b/app/Helpers/Customer/ServiceHelper.php @@ -38,11 +38,12 @@ class ServiceHelper extends CustomerHelper $form .= ""; $form .= "
"; } else { + $extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field'; $formOptions = ["" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택']; foreach ($viewDatas['field_options'][$field] as $key => $label) { $formOptions[$key] = $label; } - $form = form_dropdown($field, $formOptions, $value, $extras); + $form = form_dropdown($field, $formOptions, $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); } break; default: diff --git a/app/Helpers/Equipment/DefenceHelper.php b/app/Helpers/Equipment/DefenceHelper.php new file mode 100644 index 0000000..56baadc --- /dev/null +++ b/app/Helpers/Equipment/DefenceHelper.php @@ -0,0 +1,16 @@ +setTitleField(field: DefenceModel::TITLE); + } +} diff --git a/app/Helpers/Equipment/EquipmentHelper.php b/app/Helpers/Equipment/EquipmentHelper.php index 0b6a54d..4289382 100644 --- a/app/Helpers/Equipment/EquipmentHelper.php +++ b/app/Helpers/Equipment/EquipmentHelper.php @@ -11,43 +11,4 @@ class EquipmentHelper extends CommonHelper { parent::__construct($request); } - public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string - { - if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; - } - switch ($field) { - case "serverinfo_uid": - if (!is_array($viewDatas['field_options'][$field])) { - throw new \Exception(__METHOD__ . "에서 {$field}의 field_options가 array형태가 아닙니다."); - } - $formOptions = array_merge( - ["" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택'], - $viewDatas['field_options'][$field] - ); - $form = form_dropdown($field, $formOptions, $value, $extras); - break; - case 'manufactur_at': - $extra_class = isset($extras['class']) ? $extras['class'] . ' calender' : 'calender'; - $form = form_input($field, $value ?? "", ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); - break; - default: - $form = parent::getFieldForm($field, $value, $viewDatas, $extras); - break; - } - return $form; - } // - public function getFieldView(string $field, array $viewDatas, array $extras = []): string - { - $value = $viewDatas['entity']->$field ?? ""; - switch ($field) { - case 'manufactur_at': - $value = $value ? date("Y-m-d", strtotime($value)) : ""; - break; - default: - $value = parent::getFieldView($field, $viewDatas, $extras); - break; - } - return $value; - } } diff --git a/app/Helpers/Equipment/ServerHelper.php b/app/Helpers/Equipment/ServerHelper.php index c05e7b0..bfbc275 100644 --- a/app/Helpers/Equipment/ServerHelper.php +++ b/app/Helpers/Equipment/ServerHelper.php @@ -13,4 +13,35 @@ class ServerHelper extends EquipmentHelper parent::__construct($request); $this->setTitleField(field: ServerModel::TITLE); } + + public function getFieldView(string $field, array $viewDatas, array $extras = []): string + { + $value = $viewDatas['entity']->$field ?? ""; + switch ($field) { + case "CPU": + case "RAM": + case "DISK": + $temps = []; + foreach ($viewDatas['entity']->getPartEntities($field) as $partEntity) { + $temps[] = "
" . $partEntity->getTitle() . "
"; + } + $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; + $temps[] = form_label( + '변경', + $field, + [ + "data-src" => "/admin/equipment/serverpart?type={$field}&serverinfo_uid={$viewDatas['entity']->getPK()}", + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + $value = implode("", $temps); + break; + default: + $value = parent::getFieldView($field, $viewDatas, $extras); + break; + } + return $value; + } } diff --git a/app/Helpers/Equipment/ServerPartHelper.php b/app/Helpers/Equipment/ServerPartHelper.php new file mode 100644 index 0000000..69ac4c3 --- /dev/null +++ b/app/Helpers/Equipment/ServerPartHelper.php @@ -0,0 +1,22 @@ +setTitleField(field: ServerPartModel::TITLE); + } + + public function getListRowColor(mixed $entity, string $field = 'status', string $value = 'use'): string + { + return ""; + // return $entity->isMatched($field, $value) ? "" : 'class="table-danger"'; + } +} diff --git a/app/Language/en/Equipment/Defence.php b/app/Language/en/Equipment/Defence.php new file mode 100644 index 0000000..326f739 --- /dev/null +++ b/app/Language/en/Equipment/Defence.php @@ -0,0 +1,28 @@ + "방어장비정보", + 'label' => [ + 'type' => "종류", + 'ip' => "IP", + 'accountid' => "계정ID", + 'domain' => "도메인", + 'price' => "금액", + 'description' => "설명", + 'status' => "상태", + 'updated_at' => "수정일", + 'created_at' => "작성일", + ], + 'DEFAULTS' => [ + 'type' => 'VPC-CS', + 'status' => "use" + ], + "TYPE" => [ + "VPC-CS" => "VPC-CS", + "KT-CS" => "KT-CS", + ], + "STATUS" => [ + "use" => "사용가능", + "pause" => "일시정지", + "occupied" => "사용중", + ], +]; diff --git a/app/Language/en/Equipment/Ip.php b/app/Language/en/Equipment/Ip.php index 31fd0a7..11c817c 100644 --- a/app/Language/en/Equipment/Ip.php +++ b/app/Language/en/Equipment/Ip.php @@ -4,6 +4,7 @@ return [ 'label' => [ 'lineinfo_uid' => '회선정보', 'ip' => "IP", + 'price' => "금액", 'status' => "상태", 'updated_at' => "수정일", 'created_at' => "작성일", diff --git a/app/Language/en/Equipment/Line.php b/app/Language/en/Equipment/Line.php index 06e52e8..28f52df 100644 --- a/app/Language/en/Equipment/Line.php +++ b/app/Language/en/Equipment/Line.php @@ -6,6 +6,7 @@ return [ 'title' => "제목", 'type' => "종류", 'bandwith' => "CIDR대역", + 'price' => "금액", 'status' => "상태", 'start_at' => "개통일", 'updated_at' => "수정일", diff --git a/app/Language/en/Equipment/Part.php b/app/Language/en/Equipment/Part.php index e0c07e8..1295769 100644 --- a/app/Language/en/Equipment/Part.php +++ b/app/Language/en/Equipment/Part.php @@ -4,9 +4,9 @@ return [ 'label' => [ 'type' => "종류", 'model' => "모델", + 'price' => "금액", 'description' => "설명", 'status' => "상태", - 'manufactur_at' => "입고일", 'updated_at' => "수정일", 'created_at' => "작성일", ], diff --git a/app/Language/en/Equipment/Server.php b/app/Language/en/Equipment/Server.php index 7f3d41a..add977e 100644 --- a/app/Language/en/Equipment/Server.php +++ b/app/Language/en/Equipment/Server.php @@ -1,29 +1,43 @@ "서버장비정보", - 'label' => [ - 'code' => "장비코드", - 'type' => "종류", - 'model' => "모델", - 'description' => "설명", - 'status' => "상태", - 'manufactur_at' => "입고일", - 'updated_at' => "수정일", - 'created_at' => "작성일", + 'title' => "서버장비정보", + 'label' => [ + 'code' => "장비코드", + 'type' => "종류", + 'model' => "모델", + 'price' => "금액", + 'description' => "설명", + 'status' => "상태", + 'updated_at' => "수정일", + 'created_at' => "작성일", + 'CPU' => "CPU", + 'RAM' => "RAM", + 'DISK' => "DISK", ], - 'DEFAULTS' => [ - 'type' => 'RacKMount', - 'status' => "use" + 'DEFAULTS' => [ + 'type' => 'RacKMount', + 'status' => "use", ], - "TYPE" => [ - "Rack" => "RacKMount", - "PC" => "조립PC", - "MiniPC" => "MiniPC", + "TYPE" => [ + "Rack" => "RacKMount", + "PC" => "조립PC", + "MiniPC" => "MiniPC", "colocation" => "코로케이션", ], - "STATUS" => [ - "use" => "사용가능", - "pause" => "일시정지", + "MODEL" => [ + "HP DL360 Gen 6" => "HP DL360 Gen 6", + "HP DL360 Gen 7" => "HP DL360 Gen 7", + "HP DL360 Gen 8" => "HP DL360 Gen 8", + "HP DL360 Gen 9" => "HP DL360 Gen 9", + "3,4,5세대 PC" => "3,4,5세대 PC", + "6,7,8세대 PC" => "6,7,8세대 PC", + "9,10,11세대 PC" => "9,10,11세대 PC", + "12,13,14세대 PC" => "12,13,14세대 PC", + "12,13,14세대 MiniPC" => "12,13,14세대 MiniPC", + ], + "STATUS" => [ + "use" => "사용가능", + "pause" => "일시정지", "occupied" => "사용중", ], ]; diff --git a/app/Language/en/Equipment/ServerPart.php b/app/Language/en/Equipment/ServerPart.php new file mode 100644 index 0000000..17468de --- /dev/null +++ b/app/Language/en/Equipment/ServerPart.php @@ -0,0 +1,18 @@ + "장비부품연결", + 'label' => [ + 'type' => "종류", + 'serverinfo_uid' => "서버", + 'partinfo_uid' => "부품", + 'created_at' => "작성일", + ], + 'DEFAULTS' => [ + 'type' => 'CPU', + ], + "TYPE" => [ + "CPU" => "CPU", + "RAM" => "RAM", + "DISK" => "DISK", + ], +]; diff --git a/app/Language/en/Equipment/Software.php b/app/Language/en/Equipment/Software.php index 8edf00e..5613571 100644 --- a/app/Language/en/Equipment/Software.php +++ b/app/Language/en/Equipment/Software.php @@ -4,6 +4,7 @@ return [ 'label' => [ 'type' => "종류", 'model' => "모델", + 'price' => "금액", 'description' => "설명", 'status' => "상태", 'updated_at' => "수정일", diff --git a/app/Models/Equipment/DefenceModel.php b/app/Models/Equipment/DefenceModel.php new file mode 100644 index 0000000..c395048 --- /dev/null +++ b/app/Models/Equipment/DefenceModel.php @@ -0,0 +1,47 @@ + field가 array 입니다.\n" . var_export($field, true)); + } + switch ($field) { + case "model": + case "type": + $rule = "required|trim|string"; + break; + case "ip": + $rule = "required|trim|valid_ip[both]"; //ipv4 , ipv6 , both(ipv4,ipv6) + break; + default: + $rule = parent::getFieldRule($action, $field); + break; + } + return $rule; + } +} diff --git a/app/Models/Equipment/IpModel.php b/app/Models/Equipment/IpModel.php index 8d20607..23dbb3c 100644 --- a/app/Models/Equipment/IpModel.php +++ b/app/Models/Equipment/IpModel.php @@ -34,9 +34,6 @@ class IpModel extends EquipmentModel case "ip": $rule = "required|trim|valid_ip[both]"; //ipv4 , ipv6 , both(ipv4,ipv6) break; - case "status": - $rule = "required|trim|string"; - break; default: $rule = parent::getFieldRule($action, $field); break; diff --git a/app/Models/Equipment/LineModel.php b/app/Models/Equipment/LineModel.php index 784be9f..fa7a190 100644 --- a/app/Models/Equipment/LineModel.php +++ b/app/Models/Equipment/LineModel.php @@ -37,7 +37,6 @@ class LineModel extends EquipmentModel case "title": case "bandwith": case "type": - case "status": $rule = "required|trim|string"; break; default: diff --git a/app/Models/Equipment/PartModel.php b/app/Models/Equipment/PartModel.php index ec32b2e..3380a4a 100644 --- a/app/Models/Equipment/PartModel.php +++ b/app/Models/Equipment/PartModel.php @@ -16,7 +16,6 @@ class PartModel extends EquipmentModel "type", "model", "description", - "manufactur_at", "status", "updated_at" ]; @@ -32,15 +31,8 @@ class PartModel extends EquipmentModel switch ($field) { case "model": case "type": - case "status": $rule = "required|trim|string"; break; - case "manufactur_at": - $rule = "required|valid_date"; - break; - case "description": - $rule = "if_exist|trim|string"; - break; default: $rule = parent::getFieldRule($action, $field); break; diff --git a/app/Models/Equipment/ServerModel.php b/app/Models/Equipment/ServerModel.php index 1ec40ff..fca9a2e 100644 --- a/app/Models/Equipment/ServerModel.php +++ b/app/Models/Equipment/ServerModel.php @@ -8,7 +8,7 @@ class ServerModel extends EquipmentModel { const TABLE = "serverinfo"; const PK = "uid"; - const TITLE = "model"; + const TITLE = "code"; protected $table = self::TABLE; protected $primaryKey = self::PK; protected $returnType = ServerEntity::class; @@ -17,7 +17,6 @@ class ServerModel extends EquipmentModel "type", "model", "description", - "manufactur_at", "status", "updated_at" ]; @@ -32,17 +31,10 @@ class ServerModel extends EquipmentModel } 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 "model": case "type": - case "manufactur_at": $rule = "required|trim|string"; break; - case "description": - $rule = "if_exist|trim|string"; - break; default: $rule = parent::getFieldRule($action, $field); break; diff --git a/app/Models/Equipment/ServerPartModel.php b/app/Models/Equipment/ServerPartModel.php new file mode 100644 index 0000000..cd8152f --- /dev/null +++ b/app/Models/Equipment/ServerPartModel.php @@ -0,0 +1,43 @@ + field가 array 입니다.\n" . var_export($field, true)); + } + switch ($field) { + case "serverinfo_uid": + case "partinfo_uid": + $rule = "required|numeric"; + break; + case "type": + $rule = "required|trim|string"; + break; + default: + $rule = parent::getFieldRule($action, $field); + break; + } + return $rule; + } +} diff --git a/app/Models/Equipment/SoftwareModel.php b/app/Models/Equipment/SoftwareModel.php index 690618c..fbad757 100644 --- a/app/Models/Equipment/SoftwareModel.php +++ b/app/Models/Equipment/SoftwareModel.php @@ -31,12 +31,8 @@ class SoftwareModel extends EquipmentModel switch ($field) { case "model": case "type": - case "status": $rule = "required|trim|string"; break; - case "description": - $rule = "if_exist|trim|string"; - break; default: $rule = parent::getFieldRule($action, $field); break; diff --git a/app/Services/Customer/ClientService.php b/app/Services/Customer/ClientService.php index 402e463..18662ee 100644 --- a/app/Services/Customer/ClientService.php +++ b/app/Services/Customer/ClientService.php @@ -27,6 +27,34 @@ class ClientService extends CustomerService { return new ClientEntity(); } + public function getFields(): array + { + return ['name', 'email', 'phone', 'role']; + } + public function getFilterFields(): array + { + return ['role', 'status']; + } + public function getBatchJobFields(): array + { + return ['status']; + } + public function getFormFieldOption(string $field, array $options = []): array + { + switch ($field) { + case 'clientinfo_uid': + foreach ($this->getEntities() as $entity) { + $options[$entity->getPK()] = $entity->getTitle(); + } + break; + default: + $options = parent::getFormFieldOption($field, $options); + break; + } + // dd($options); + return $options; + } + public function create(array $formDatas, mixed $entity = new ClientEntity()): ClientEntity { $formDatas['role'] = implode(DEFAULTS["DELIMITER_ROLE"], $formDatas['role']); @@ -42,16 +70,4 @@ class ClientService extends CustomerService // die(var_export($formDatas, true)); return parent::modify($entity, $formDatas); } - public function getFields(): array - { - return ['name', 'email', 'phone', 'role']; - } - public function getFilterFields(): array - { - return ['role', 'status']; - } - public function getBatchJobFields(): array - { - return ['status']; - } } diff --git a/app/Services/Customer/ServicePartService.php b/app/Services/Customer/ServicePartService.php new file mode 100644 index 0000000..5f79caf --- /dev/null +++ b/app/Services/Customer/ServicePartService.php @@ -0,0 +1,46 @@ +getEntities() as $entity) { $options[$entity->getPK()] = $entity->getTitle(); } diff --git a/app/Views/admin/customer/service/create_form.php b/app/Views/admin/customer/service/create_form.php deleted file mode 100644 index 2125294..0000000 --- a/app/Views/admin/customer/service/create_form.php +++ /dev/null @@ -1,31 +0,0 @@ -extend(LAYOUTS[$viewDatas['layout']]['path']) ?> -section('content') ?> -
- - - - - - - - - - -
- - - - - - - -
getFieldLabel($field, $viewDatas) ?> - getFieldForm($field, old($field), $viewDatas) ?> - -
-
"btn btn-outline btn-primary")); ?>
- -
- alert($error) ?> -
-endSection() ?> \ No newline at end of file diff --git a/app/Views/admin/customer/service/index.php b/app/Views/admin/customer/service/index.php deleted file mode 100644 index bb84911..0000000 --- a/app/Views/admin/customer/service/index.php +++ /dev/null @@ -1,63 +0,0 @@ -extend(LAYOUTS[$viewDatas['layout']]['path']) ?> -section('content') ?> -
include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?>
- - - - - - -
- - include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?> - - - - include("templates/{$viewDatas['layout']}/index_header"); ?> -
- -
- include("templates/{$viewDatas['layout']}/index_content_top"); ?> - 'batchjob_form', 'method' => "post"]) ?> - - - - - - - - - - - - - - getListRowColor($entity) ?>> - - - - - - - - - - - -
번호getListLabel($field, $viewDatas) ?>작업
getListButton('modify', $viewDatas) ?>getFieldView($field, $viewDatas) ?>getListButton('delete', $viewDatas) ?>
- include("templates/{$viewDatas['layout']}/index_content_batchjob"); ?> - -
-
-
include("templates/common/" . (isset($viewDatas['modal_type']) ? $viewDatas['modal_type'] : 'modal_fetch')); ?>
- -
- - -
-alert($error) ?> - -
- include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?> -
-endSection() ?> \ No newline at end of file diff --git a/app/Views/admin/customer/service/modify_form.php b/app/Views/admin/customer/service/modify_form.php deleted file mode 100644 index 6cd45be..0000000 --- a/app/Views/admin/customer/service/modify_form.php +++ /dev/null @@ -1,31 +0,0 @@ -extend(LAYOUTS[$viewDatas['layout']]['path']) ?> -section('content') ?> -
- - - - - - - - - - 'action_form', ...$viewDatas['forms']['attributes']], $viewDatas['forms']['hiddens']) ?> -
- - - - - - - -
getFieldLabel($field, $viewDatas) ?> - getFieldForm($field, old($field) ?? $viewDatas['entity']->$field, $viewDatas) ?> -
-
-
"btn btn-outline btn-primary"]) ?>
- -
- alert($error) ?> -
-endSection() ?> \ No newline at end of file diff --git a/app/Views/admin/customer/service/view.php b/app/Views/admin/customer/service/view.php deleted file mode 100644 index f709d5b..0000000 --- a/app/Views/admin/customer/service/view.php +++ /dev/null @@ -1,16 +0,0 @@ -extend(LAYOUTS[$viewDatas['layout']]['path']) ?> -section('content') ?> -
- -
- - - - - - - -
getFieldLabel($field, $viewDatas) ?>getFieldView($field, $viewDatas) ?>
-
-
-endSection() ?> \ No newline at end of file diff --git a/app/Views/admin/customer/service/welcome_message.php b/app/Views/admin/customer/service/welcome_message.php deleted file mode 100644 index 4b6614f..0000000 --- a/app/Views/admin/customer/service/welcome_message.php +++ /dev/null @@ -1,103 +0,0 @@ -extend(LAYOUTS[$viewDatas['layout']]['path']) ?> -section('content') ?> -
include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?>
- - - - - - -
- - include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?> - - - - include("templates/{$viewDatas['layout']}/index_header"); ?> -
- - -
- - -
- - -
- -
include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?>
-endSection() ?> \ No newline at end of file diff --git a/app/Views/admin/popup/index.php b/app/Views/admin/popup/index.php new file mode 100644 index 0000000..796ad53 --- /dev/null +++ b/app/Views/admin/popup/index.php @@ -0,0 +1,43 @@ +extend(LAYOUTS[$viewDatas['layout']]['path']) ?> +section('content') ?> + +
+ +
+ include("templates/{$viewDatas['layout']}/index_content_top"); ?> + 'batchjob_form', 'method' => "post"]) ?> + + + + + + + + + + + + + + getListRowColor($entity) ?>> + + + + + + + + + + + +
번호getListLabel($field, $viewDatas) ?>작업
getListButton('modify', $viewDatas) ?>getFieldView($field, $viewDatas) ?>getListButton('delete', $viewDatas) ?>
+ +
+
+
include("templates/common/" . (isset($viewDatas['modal_type']) ? $viewDatas['modal_type'] : 'modal_fetch')); ?>
+ +
+alert($error) ?> + +endSection() ?> \ No newline at end of file diff --git a/app/Views/layouts/admin/left_menu/equipment.php b/app/Views/layouts/admin/left_menu/equipment.php index 045707e..d824809 100644 --- a/app/Views/layouts/admin/left_menu/equipment.php +++ b/app/Views/layouts/admin/left_menu/equipment.php @@ -17,6 +17,9 @@
부품정보
+
+ 방어정보 +
Software정보
diff --git a/public/js/admin/server_partinfo.js b/public/js/admin/server_partinfo.js index 16b4068..5e2d8d2 100644 --- a/public/js/admin/server_partinfo.js +++ b/public/js/admin/server_partinfo.js @@ -37,3 +37,7 @@ function addComponentFromLabel(field, value, text) { listDiv.appendChild(wrapper); } + +function openPartPopup(field) { + window.open('/admin/equipment/part/popup?type=' + encodeURIComponent(field), 'PartPopup', 'width=800,height=500,scrollbars=yes'); +} \ No newline at end of file