liuyun 29fc5e9432 fix(db): 迁移链 squash 到 0_baseline(修复 c1_elder RENAME INDEX 早于表重命名导致的干净回放失败)
- 删除 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>
2026-10-21 11:52:10 +08:00

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;