liuyun 766d8c7218 feat(c2): plan/plan_item/order/elder_svc 数据模型
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 22:08:40 +08:00

103 lines
3.8 KiB
SQL

-- 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;