-- CreateTable CREATE TABLE `sys_tenant` ( `id` VARCHAR(36) NOT NULL, `code` VARCHAR(64) NOT NULL, `name` VARCHAR(128) NOT NULL, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `remark` VARCHAR(255) NULL, `brand_name` VARCHAR(64) NULL, `logo_url` VARCHAR(255) NULL, `theme_color` VARCHAR(16) NULL, `copyright` VARCHAR(255) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, UNIQUE INDEX `sys_tenant_code_key`(`code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_user` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `username` VARCHAR(64) NOT NULL, `password_hash` VARCHAR(255) NOT NULL, `nickname` VARCHAR(64) NULL, `email` VARCHAR(128) NULL, `phone` VARCHAR(32) NULL, `avatar` VARCHAR(255) NULL, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `token_version` INTEGER NOT NULL DEFAULT 0, `locked_at` DATETIME(3) NULL, `lock_reason` VARCHAR(255) NULL, `must_change_password` BOOLEAN NOT NULL DEFAULT false, `org_code` VARCHAR(64) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_user_tenant_code_idx`(`tenant_code`), INDEX `sys_user_org_code_idx`(`org_code`), UNIQUE INDEX `sys_user_tenant_code_username_key`(`tenant_code`, `username`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_role` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `code` VARCHAR(64) NOT NULL, `name` VARCHAR(64) NOT NULL, `data_scope` VARCHAR(16) NOT NULL DEFAULT 'all', `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `remark` VARCHAR(255) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_role_tenant_code_idx`(`tenant_code`), UNIQUE INDEX `sys_role_tenant_code_code_key`(`tenant_code`, `code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_resource` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `parent_code` VARCHAR(64) NULL, `type` VARCHAR(16) NOT NULL, `code` VARCHAR(128) NOT NULL, `name` VARCHAR(64) NOT NULL, `path` VARCHAR(255) NULL, `component` VARCHAR(255) NULL, `method` VARCHAR(8) NULL, `api_path` VARCHAR(255) NULL, `icon` VARCHAR(64) NULL, `sort` INTEGER NOT NULL DEFAULT 0, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_resource_tenant_code_idx`(`tenant_code`), INDEX `sys_resource_parent_code_idx`(`parent_code`), UNIQUE INDEX `sys_resource_tenant_code_code_key`(`tenant_code`, `code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_org` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `parent_code` VARCHAR(64) NULL, `code` VARCHAR(64) NOT NULL, `name` VARCHAR(64) NOT NULL, `leader` VARCHAR(64) NULL, `sort` INTEGER NOT NULL DEFAULT 0, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_org_tenant_code_idx`(`tenant_code`), INDEX `sys_org_parent_code_idx`(`parent_code`), UNIQUE INDEX `sys_org_tenant_code_code_key`(`tenant_code`, `code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_dict_type` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `code` VARCHAR(64) NOT NULL, `name` VARCHAR(64) NOT NULL, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `built_in` BOOLEAN NOT NULL DEFAULT false, `remark` VARCHAR(255) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_dict_type_tenant_code_idx`(`tenant_code`), UNIQUE INDEX `sys_dict_type_tenant_code_code_key`(`tenant_code`, `code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_dict_item` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `dict_type_code` VARCHAR(64) NOT NULL, `label` VARCHAR(64) NOT NULL, `value` VARCHAR(64) NOT NULL, `sort` INTEGER NOT NULL DEFAULT 0, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `built_in` BOOLEAN NOT NULL DEFAULT false, `color_type` VARCHAR(16) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_dict_item_tenant_code_dict_type_code_idx`(`tenant_code`, `dict_type_code`), UNIQUE INDEX `sys_dict_item_tenant_code_dict_type_code_value_key`(`tenant_code`, `dict_type_code`, `value`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_config` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `key` VARCHAR(128) NOT NULL, `value` TEXT NULL, `remark` VARCHAR(255) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, UNIQUE INDEX `sys_config_tenant_code_key_key`(`tenant_code`, `key`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_audit_log` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `user_id` VARCHAR(36) NULL, `username` VARCHAR(64) NULL, `module` VARCHAR(64) NULL, `action` VARCHAR(64) NULL, `method` VARCHAR(8) NULL, `path` VARCHAR(255) NULL, `params` TEXT NULL, `result` TEXT NULL, `status` VARCHAR(16) NULL, `error_message` TEXT NULL, `ip` VARCHAR(64) NULL, `user_agent` VARCHAR(255) NULL, `duration_ms` INTEGER NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `sys_audit_log_tenant_code_created_at_idx`(`tenant_code`, `created_at`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_login_log` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `username` VARCHAR(64) NULL, `ip` VARCHAR(64) NULL, `user_agent` VARCHAR(255) NULL, `status` VARCHAR(16) NOT NULL DEFAULT 'success', `message` VARCHAR(255) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `sys_login_log_tenant_code_created_at_idx`(`tenant_code`, `created_at`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_refresh_token` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `user_id` VARCHAR(36) NOT NULL, `sid` VARCHAR(36) NULL, `jti` VARCHAR(64) NOT NULL, `token_hash` VARCHAR(255) NOT NULL, `ip` VARCHAR(64) NULL, `user_agent` VARCHAR(255) NULL, `login_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `expire_at` DATETIME(3) NOT NULL, `revoked_at` DATETIME(3) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), UNIQUE INDEX `sys_refresh_token_jti_key`(`jti`), INDEX `sys_refresh_token_tenant_code_user_id_idx`(`tenant_code`, `user_id`), INDEX `sys_refresh_token_sid_idx`(`sid`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_notice` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `title` VARCHAR(128) NOT NULL, `content` TEXT NOT NULL, `status` VARCHAR(16) NOT NULL DEFAULT 'enabled', `created_by` VARCHAR(36) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `sys_notice_tenant_code_idx`(`tenant_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_notice_read` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `notice_id` VARCHAR(36) NOT NULL, `user_id` VARCHAR(36) NOT NULL, `read_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `sys_notice_read_tenant_code_user_id_idx`(`tenant_code`, `user_id`), UNIQUE INDEX `sys_notice_read_tenant_code_notice_id_user_id_key`(`tenant_code`, `notice_id`, `user_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_user_role` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `user_id` VARCHAR(36) NOT NULL, `role_code` VARCHAR(64) NOT NULL, INDEX `sys_user_role_tenant_code_user_id_idx`(`tenant_code`, `user_id`), UNIQUE INDEX `sys_user_role_tenant_code_user_id_role_code_key`(`tenant_code`, `user_id`, `role_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_role_resource` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `role_code` VARCHAR(64) NOT NULL, `resource_code` VARCHAR(128) NOT NULL, INDEX `sys_role_resource_tenant_code_role_code_idx`(`tenant_code`, `role_code`), UNIQUE INDEX `sys_role_resource_tenant_code_role_code_resource_code_key`(`tenant_code`, `role_code`, `resource_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `sys_role_org` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `role_code` VARCHAR(64) NOT NULL, `org_code` VARCHAR(64) NOT NULL, UNIQUE INDEX `sys_role_org_tenant_code_role_code_org_code_key`(`tenant_code`, `role_code`, `org_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ltc_agency` ( `code` VARCHAR(64) NOT NULL, `org_name` VARCHAR(100) NOT NULL, `org_type` VARCHAR(20) NOT NULL, `credit_code` VARCHAR(18) NOT NULL, `loc_code` VARCHAR(12) NOT NULL, `loc_name` VARCHAR(50) NOT NULL, `svc_source` VARCHAR(10) NOT NULL, `license_no` VARCHAR(50) NULL, `address` VARCHAR(200) NOT NULL, `contact_name` VARCHAR(30) NOT NULL, `contact_phone` VARCHAR(15) NOT NULL, `bed_count` INTEGER NULL, `sign_date` DATE NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, `qc_threshold` INTEGER NOT NULL DEFAULT 24, `docking_tier` VARCHAR(10) NOT NULL DEFAULT 'B', `new_national_notify` BOOLEAN NOT NULL DEFAULT true, PRIMARY KEY (`code`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ltc_staff` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `user_id` VARCHAR(36) NULL, `name` VARCHAR(30) NOT NULL, `id_card_no` VARCHAR(255) NOT NULL, `person_code` VARCHAR(20) NULL, `phone` VARCHAR(15) NOT NULL, `job_type` VARCHAR(20) NOT NULL, `work_type` VARCHAR(10) NOT NULL, `entry_date` DATE NULL, `leave_date` DATE NULL, `employ_status` VARCHAR(10) NOT NULL, `cert_type` VARCHAR(20) NULL, `cert_no` VARCHAR(50) NULL, `cert_level` VARCHAR(20) NULL, `cert_expire` DATE NULL, `cert_status` VARCHAR(20) NULL, `cert_verify_url` VARCHAR(200) NULL, `group_leader_id` VARCHAR(36) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, UNIQUE INDEX `ltc_staff_user_id_key`(`user_id`), INDEX `ltc_staff_tenant_code_name_idx`(`tenant_code`, `name`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_national` ( `id` VARCHAR(36) NOT NULL, `nat_code` VARCHAR(20) NOT NULL, `nat_name` VARCHAR(100) NOT NULL, `nat_category` VARCHAR(20) NOT NULL, `nat_sub_category` VARCHAR(50) NULL, `recommend_staff` VARCHAR(50) NULL, `recommend_duration` VARCHAR(50) NULL, `is_medical` BOOLEAN NOT NULL DEFAULT false, `version` INTEGER NOT NULL DEFAULT 1, UNIQUE INDEX `svc_national_nat_code_key`(`nat_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_local` ( `id` VARCHAR(36) NOT NULL, `loc_code` VARCHAR(12) NOT NULL, `local_item_name` VARCHAR(100) NOT NULL, `local_category` VARCHAR(20) NULL, `svc_time` VARCHAR(50) NULL, `min_freq` VARCHAR(50) NULL, `staff_qual` VARCHAR(50) NULL, `is_medical` BOOLEAN NOT NULL DEFAULT false, `source_doc` VARCHAR(200) NULL, `map_status` VARCHAR(20) NOT NULL DEFAULT 'mapped', INDEX `svc_local_loc_code_idx`(`loc_code`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_mapping` ( `id` VARCHAR(36) NOT NULL, `loc_id` VARCHAR(36) NOT NULL, `nat_id` VARCHAR(36) NULL, `map_type` VARCHAR(20) NOT NULL, `map_note` VARCHAR(200) NULL, `status` VARCHAR(20) NOT NULL DEFAULT 'confirmed', INDEX `svc_mapping_loc_id_idx`(`loc_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_org` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `src_type` VARCHAR(10) NOT NULL, `src_id` VARCHAR(36) NOT NULL, `is_enabled` BOOLEAN NOT NULL DEFAULT true, `price` VARCHAR(50) NULL, `price_effective` DATETIME(3) NULL, `is_new_national` BOOLEAN NOT NULL DEFAULT false, `photo_tier` VARCHAR(10) NOT NULL DEFAULT 'free', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `svc_org_tenant_code_src_type_idx`(`tenant_code`, `src_type`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `loc_config` ( `loc_code` VARCHAR(12) NOT NULL, `loc_name` VARCHAR(50) NOT NULL, `svc_source` VARCHAR(10) NOT NULL, `item_count_rule` VARCHAR(100) NULL, PRIMARY KEY (`loc_code`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ltc_elder` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `loc_code` VARCHAR(12) NOT NULL, `prev_loc_code` VARCHAR(12) NULL, `transfer_confirm_at` DATETIME(3) NULL, `name` VARCHAR(30) NOT NULL, `gender` CHAR(1) NOT NULL, `birth_date` DATE NOT NULL, `id_card_no` VARCHAR(255) NOT NULL, `phone` VARCHAR(15) NULL, `address` VARCHAR(200) NOT NULL, `guardian_name` VARCHAR(30) NULL, `guardian_phone` VARCHAR(15) NULL, `insur_no` VARCHAR(30) NOT NULL, `insur_type` VARCHAR(10) NOT NULL, `insur_years` INTEGER NULL, `insur_verify_status` VARCHAR(20) NULL, `insur_verify_date` DATE NULL, `assess_level` VARCHAR(20) NULL, `care_level` VARCHAR(20) NULL, `assess_date` DATE NULL, `assess_org` VARCHAR(100) NULL, `assess_evidence_file` VARCHAR(255) NULL, `benefit_start` DATE NULL, `benefit_end` DATE NULL, `treat_status` VARCHAR(20) NOT NULL DEFAULT 'pending_file', `status_source` VARCHAR(10) NOT NULL DEFAULT 'manual', `status_change_date` DATE NULL, `hosp_start` DATE NULL, `hosp_end` DATE NULL, `photo_tier_override` JSON NULL, `need_assess` JSON NULL, `note` TEXT NULL, `biz_line` VARCHAR(20) NOT NULL DEFAULT 'ltci', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `ltc_elder_tenant_code_name_idx`(`tenant_code`, `name`), UNIQUE INDEX `ltc_elder_tenant_code_id_card_no_key`(`tenant_code`, `id_card_no`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ltc_elder_status_log` ( `id` VARCHAR(36) NOT NULL, `elder_id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `from_status` VARCHAR(20) NOT NULL, `to_status` VARCHAR(20) NOT NULL, `change_reason` VARCHAR(200) NOT NULL, `source` VARCHAR(10) NOT NULL DEFAULT 'manual', `operator_id` VARCHAR(36) NOT NULL, `evidence_file` VARCHAR(255) NULL, `changed_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `ltc_elder_status_log_elder_id_idx`(`elder_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_plan` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `elder_id` VARCHAR(36) NOT NULL, `plan_period_start` DATE NOT NULL, `plan_period_end` DATE NOT NULL, `care_level` VARCHAR(20) NOT NULL, `care_mode` VARCHAR(20) NOT NULL, `item_count` INTEGER NOT NULL DEFAULT 0, `item_count_rule` VARCHAR(100) NULL, `extra_item_count` INTEGER NOT NULL DEFAULT 0, `week_freq` INTEGER NULL, `month_hours` INTEGER NULL, `plan_status` VARCHAR(20) NOT NULL DEFAULT 'draft', `confirm_elder` BOOLEAN NOT NULL DEFAULT false, `confirm_guardian` BOOLEAN NOT NULL DEFAULT false, `confirm_time` DATETIME(3) NULL, `plan_basis` JSON NULL, `change_from_plan_id` VARCHAR(36) NULL, `biz_line` VARCHAR(20) NOT NULL DEFAULT 'ltci', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `svc_plan_tenant_code_elder_id_idx`(`tenant_code`, `elder_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_plan_item` ( `id` VARCHAR(36) NOT NULL, `plan_id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `svc_id` VARCHAR(36) NOT NULL, `svc_name_snapshot` VARCHAR(100) NOT NULL, `svc_code_snapshot` VARCHAR(20) NULL, `freq_type` VARCHAR(20) NULL, `freq_value` INTEGER NULL, `duration_min` INTEGER NULL, `photo_tier` VARCHAR(10) NOT NULL DEFAULT 'free', `caution_note` TEXT NULL, `is_medical` BOOLEAN NOT NULL DEFAULT false, `need_cert` BOOLEAN NOT NULL DEFAULT false, INDEX `svc_plan_item_plan_id_idx`(`plan_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `svc_order` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `elder_id` VARCHAR(36) NOT NULL, `plan_id` VARCHAR(36) NOT NULL, `service_date` DATE NOT NULL, `time_slot_start` DATETIME(3) NOT NULL, `time_slot_end` DATETIME(3) NOT NULL, `assignee_id` VARCHAR(36) NULL, `assign_time` DATETIME(3) NULL, `assign_mode` VARCHAR(20) NULL, `order_status` VARCHAR(20) NOT NULL DEFAULT 'to_assign', `item_list` JSON NOT NULL, `need_photo` BOOLEAN NOT NULL DEFAULT false, `cancel_reason` VARCHAR(200) NULL, `reschedule_log` JSON NULL, `qualification_check` VARCHAR(20) NULL, `billable` BOOLEAN NOT NULL DEFAULT true, `price_snapshot` JSON NULL, `settle_period` VARCHAR(20) NULL, `not_met_reason` VARCHAR(50) NULL, `not_met_at` DATETIME(3) NULL, `biz_line` VARCHAR(20) NOT NULL DEFAULT 'ltci', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `svc_order_tenant_code_assignee_id_service_date_idx`(`tenant_code`, `assignee_id`, `service_date`), INDEX `svc_order_tenant_code_elder_id_idx`(`tenant_code`, `elder_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ltc_elder_svc` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `elder_id` VARCHAR(36) NOT NULL, `svc_id` VARCHAR(36) NOT NULL, `svc_name_snapshot` VARCHAR(100) NOT NULL, `svc_code_snapshot` VARCHAR(20) NULL, `care_mode` VARCHAR(20) NOT NULL, `is_active` BOOLEAN NOT NULL DEFAULT true, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `ltc_elder_svc_tenant_code_elder_id_idx`(`tenant_code`, `elder_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ho_record` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `order_id` VARCHAR(36) NOT NULL, `elder_id` VARCHAR(36) NOT NULL, `assignee_id` VARCHAR(36) NOT NULL, `checkin_time` DATETIME(3) NULL, `checkout_time` DATETIME(3) NULL, `duration_min` INTEGER NULL, `checkin_lat` DECIMAL(10, 6) NULL, `checkin_lng` DECIMAL(10, 6) NULL, `locate_status` VARCHAR(20) NOT NULL DEFAULT 'ok', `record_status` VARCHAR(20) NOT NULL DEFAULT 'serving', `voice_file` VARCHAR(200) NULL, `offline_flag` BOOLEAN NOT NULL DEFAULT false, `client_md5` VARCHAR(32) NULL, `submit_time` DATETIME(3) NULL, `actual_duration_tier` VARCHAR(10) NULL, `biz_line` VARCHAR(20) NOT NULL DEFAULT 'ltci', `is_prepaid` BOOLEAN NOT NULL DEFAULT false, `billable` BOOLEAN NOT NULL DEFAULT true, `source_prepaid_of` VARCHAR(36) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `ho_record_tenant_code_order_id_idx`(`tenant_code`, `order_id`), INDEX `ho_record_tenant_code_elder_id_idx`(`tenant_code`, `elder_id`), INDEX `ho_record_tenant_code_assignee_id_checkin_time_idx`(`tenant_code`, `assignee_id`, `checkin_time`), UNIQUE INDEX `ho_record_tenant_code_client_md5_key`(`tenant_code`, `client_md5`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ho_record_item` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NOT NULL, `svc_id` VARCHAR(36) NOT NULL, `svc_name_snapshot` VARCHAR(100) NOT NULL, `exec_result` VARCHAR(20) NOT NULL, `undo_reason` VARCHAR(200) NULL, `extra_flag` BOOLEAN NOT NULL DEFAULT false, `photo_required` BOOLEAN NOT NULL DEFAULT false, `is_refused_photo` BOOLEAN NOT NULL DEFAULT false, `refuse_reason` VARCHAR(200) NULL, INDEX `ho_record_item_record_id_idx`(`record_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ho_record_photo` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NOT NULL, `svc_id` VARCHAR(36) NULL, `file_path` VARCHAR(255) NOT NULL, `file_size` INTEGER NOT NULL, `visible_to_family` BOOLEAN NOT NULL DEFAULT false, `upload_batch` VARCHAR(36) NULL, `keep_until` DATETIME(3) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `ho_record_photo_record_id_idx`(`record_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ho_record_abnormal` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NULL, `order_id` VARCHAR(36) NULL, `elder_id` VARCHAR(36) NOT NULL, `reporter_id` VARCHAR(36) NOT NULL, `abnormal_type` VARCHAR(20) NOT NULL, `abnormal_desc` TEXT NULL, `voice_file` VARCHAR(200) NULL, `has_photo` BOOLEAN NOT NULL DEFAULT false, `visit_time` DATETIME(3) NULL, `visit_lat` DECIMAL(10, 6) NULL, `visit_lng` DECIMAL(10, 6) NULL, `notify_status` VARCHAR(20) NOT NULL DEFAULT 'pending', `handle_status` VARCHAR(20) NOT NULL DEFAULT 'open', `handle_result` VARCHAR(200) NULL, `link_plan_change` BOOLEAN NOT NULL DEFAULT false, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, INDEX `ho_record_abnormal_tenant_code_elder_id_idx`(`tenant_code`, `elder_id`), INDEX `ho_record_abnormal_tenant_code_notify_status_idx`(`tenant_code`, `notify_status`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `settlement` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `settle_period` VARCHAR(20) NOT NULL, `amount_total` DECIMAL(12, 2) NULL, `amount_passed` DECIMAL(12, 2) NULL, `amount_rejected` DECIMAL(12, 2) NULL, `amount_fund` DECIMAL(12, 2) NULL, `amount_self_pay` DECIMAL(12, 2) NULL, `submit_date` DATE NULL, `pay_date` DATE NULL, `exception_reason` VARCHAR(200) NULL, `handle_deadline` DATE NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `report` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NOT NULL, `order_id` VARCHAR(36) NOT NULL, `report_status` VARCHAR(20) NOT NULL DEFAULT 'pending', `report_time` DATETIME(3) NULL, `official_no` VARCHAR(50) NULL, `loc_code` VARCHAR(12) NOT NULL, `nat_code_snapshot` JSON NULL, `adapter_result` VARCHAR(200) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `qc` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NOT NULL, `qc_type` VARCHAR(20) NOT NULL DEFAULT 'normal', `qc_result` VARCHAR(20) NOT NULL DEFAULT 'pending', `qc_note` VARCHAR(200) NULL, `qc_staff_id` VARCHAR(36) NULL, `qc_time` DATETIME(3) NULL, `pass_time` DATETIME(3) NULL, `first_qc_id` VARCHAR(36) NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `created_by` VARCHAR(36) NULL, `updated_at` DATETIME(3) NOT NULL, `deleted_at` DATETIME(3) NULL, INDEX `qc_tenant_code_record_id_idx`(`tenant_code`, `record_id`), INDEX `qc_tenant_code_qc_result_idx`(`tenant_code`, `qc_result`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- CreateTable CREATE TABLE `ho_record_correction` ( `id` VARCHAR(36) NOT NULL, `tenant_code` VARCHAR(64) NOT NULL, `record_id` VARCHAR(36) NOT NULL, `qc_id` VARCHAR(36) NULL, `correction_note` VARCHAR(200) NOT NULL, `corrected_by` VARCHAR(36) NOT NULL, `corrected_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `ho_record_correction_record_id_idx`(`record_id`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;