- 删除 15 个旧迁移,合并为单一 0_baseline(37 表,utf8mb4_general_ci) - 现有库 migrate resolve --applied 0_baseline,数据保留 - 干净回放验证通过(仅 Prisma 内部 _prisma_migrations 为 unicode_ci) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
760 lines
27 KiB
SQL
760 lines
27 KiB
SQL
-- 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;
|
|
|