Files
plates-server/sql-scripts/goal-tasks-table-create.sql
richarjiang 3530d123fc feat: 新增目标子任务管理功能模块
- 实现目标子任务的完整功能,包括数据库表设计、API接口、业务逻辑和文档说明。
- 支持用户创建、管理和跟踪目标子任务,提供增删改查操作及任务完成记录功能。
- 引入惰性任务生成机制,优化任务管理体验,提升系统性能和用户交互。
2025-08-22 16:01:12 +08:00

50 lines
2.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 创建目标子任务表
CREATE TABLE IF NOT EXISTS `t_goal_tasks` (
`id` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '任务ID',
`goal_id` CHAR(36) NOT NULL COMMENT '目标ID',
`user_id` VARCHAR(255) NOT NULL COMMENT '用户ID',
`title` VARCHAR(255) NOT NULL COMMENT '任务标题',
`description` TEXT COMMENT '任务描述',
`start_date` DATE NOT NULL COMMENT '任务开始日期',
`end_date` DATE NOT NULL COMMENT '任务结束日期',
`target_count` INT NOT NULL DEFAULT 1 COMMENT '任务目标次数如喝水8次',
`current_count` INT NOT NULL DEFAULT 0 COMMENT '任务当前完成次数',
`status` ENUM('pending', 'in_progress', 'completed', 'overdue', 'skipped') NOT NULL DEFAULT 'pending' COMMENT '任务状态',
`progress_percentage` INT NOT NULL DEFAULT 0 COMMENT '完成进度百分比 (0-100)',
`completed_at` DATETIME COMMENT '任务完成时间',
`notes` TEXT COMMENT '任务备注',
`metadata` JSON COMMENT '任务额外数据',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否删除',
PRIMARY KEY (`id`),
INDEX `idx_goal_id` (`goal_id`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_status` (`status`),
INDEX `idx_start_date` (`start_date`),
INDEX `idx_end_date` (`end_date`),
INDEX `idx_deleted` (`deleted`),
INDEX `idx_user_goal` (`user_id`, `goal_id`),
INDEX `idx_user_status` (`user_id`, `status`),
INDEX `idx_user_date_range` (`user_id`, `start_date`, `end_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='目标子任务表';
-- 添加外键约束
ALTER TABLE `t_goal_tasks`
ADD CONSTRAINT `fk_goal_tasks_goal_id`
FOREIGN KEY (`goal_id`) REFERENCES `t_goals` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE;
-- 添加检查约束MySQL 8.0+
-- ALTER TABLE `t_goal_tasks`
-- ADD CONSTRAINT `chk_target_count_positive` CHECK (`target_count` > 0);
--
-- ALTER TABLE `t_goal_tasks`
-- ADD CONSTRAINT `chk_current_count_non_negative` CHECK (`current_count` >= 0);
--
-- ALTER TABLE `t_goal_tasks`
-- ADD CONSTRAINT `chk_progress_percentage_range` CHECK (`progress_percentage` >= 0 AND `progress_percentage` <= 100);
--
-- ALTER TABLE `t_goal_tasks`
-- ADD CONSTRAINT `chk_date_range` CHECK (`end_date` >= `start_date`);