-- phpMyAdmin SQL Dump
-- version 5.2.2
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Aug 28, 2026 at 09:20 AM
-- Server version: 8.4.3
-- PHP Version: 8.3.16

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `congviec.lvtglobal`
--

-- --------------------------------------------------------

--
-- Table structure for table `apps`
--

CREATE TABLE `apps` (
  `id` bigint UNSIGNED NOT NULL,
  `app_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Tên app',
  `st_app` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ST',
  `package` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Package name (vd: com.lvt.appname)',
  `status_id` tinyint UNSIGNED DEFAULT NULL COMMENT 'FK → app_statuses.id',
  `store_id` tinyint UNSIGNED DEFAULT NULL COMMENT 'FK → app_stores.id',
  `admob_id` smallint UNSIGNED DEFAULT NULL COMMENT 'FK → app_admobs.id',
  `has_test_case` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Test case: 0=Chưa có, 1=Có',
  `has_ads_script` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ads script: 0=Chưa có, 1=Có',
  `mkt_user_id` bigint UNSIGNED DEFAULT NULL COMMENT 'MKT phụ trách → users.id',
  `data_user_id` bigint UNSIGNED DEFAULT NULL COMMENT 'Data phụ trách → users.id',
  `designer_ids` json DEFAULT NULL COMMENT 'Danh sách User ID Designer (VD: [1,2])',
  `developer_ids` json DEFAULT NULL COMMENT 'Danh sách User ID Developer (VD: [3,4])',
  `tester_ids` json DEFAULT NULL COMMENT 'Danh sách User ID Tester (VD: [5,6])',
  `design_link` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Link Figma / thiết kế',
  `folder_link` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Link thư mục quản lý (Drive, ...)',
  `git_link` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Link Git repo',
  `store_link` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Link app trên store (CH Play, App Store)',
  `check_update` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=Chưa, 1=Đã check update',
  `last_updated_at` timestamp NULL DEFAULT NULL COMMENT 'Lần cuối check update',
  `note` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL COMMENT 'Người tạo → users.id',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL COMMENT 'Soft delete'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `apps`
--

INSERT INTO `apps` (`id`, `app_name`, `st_app`, `package`, `status_id`, `store_id`, `admob_id`, `has_test_case`, `has_ads_script`, `mkt_user_id`, `data_user_id`, `designer_ids`, `developer_ids`, `tester_ids`, `design_link`, `folder_link`, `git_link`, `store_link`, `check_update`, `last_updated_at`, `note`, `created_by`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 'Screen Mirroring & Cast to TV', 'ST01', 'com.lvt.screenmirroring.castto.tv', 5, 1, 3, 1, 0, 7, 2, '[\"2\", \"3\"]', '[\"1\"]', '[4, 6]', 'https://www.figma.com/file/sample-mirroring-design', 'https://drive.google.com/drive/folders/sample-st01-folder', 'https://github.com/lvtglobal/screen-mirroring', 'https://play.google.com/store/apps/details?id=com.oc.scificreator.alienmaker', 1, '2026-08-19 07:55:28', 'App đang trong giai đoạn test tính năng Cast TV và chuẩn bị đẩy store.', 9, '2026-08-19 07:55:28', '2026-08-22 09:38:40', NULL),
(2, 'AI Voice Changer & Effects', 'ST02', 'com.lvt.aivoicechanger.effects', 4, 3, 2, 1, 0, 7, 7, '[\"3\"]', NULL, NULL, 'https://www.figma.com/file/sample-voicechanger-design', 'https://drive.google.com/drive/folders/sample-st02-folder', 'https://github.com/lvtglobal/ai-voice-changer', 'https://play.google.com/store/apps/details?id=com.lvt.aivoicechanger.effects', 0, '2026-08-19 07:55:28', 'Đang hoàn thiện module biến đổi giọng nói AI.', 9, '2026-08-19 07:55:28', '2026-08-26 04:14:00', NULL),
(3, 'Alien OC Maker: Sci-Fi Creator', 'ST231', 'com.oc.scificreator.alienmaker', 5, 3, 2, 1, 0, 7, 7, '[\"3\"]', '[\"5\"]', '[\"6\"]', NULL, NULL, NULL, 'https://play.google.com/store/apps/details?id=com.oc.scificreator.alienmaker', 0, NULL, NULL, 9, '2026-08-19 09:44:42', '2026-08-22 08:31:17', NULL),
(4, 'Animal Character Maker', 'ST169', 'com.animal.avatar.charactor.maker', 4, 2, 1, 1, 0, 8, 8, '[\"3\", \"2\"]', '[\"5\"]', '[\"6\"]', NULL, NULL, NULL, 'https://play.google.com/store/apps/details?id=com.animal.avatar.charactor.maker', 0, NULL, NULL, 9, '2026-08-19 09:46:37', '2026-08-24 08:39:58', NULL),
(5, 'Anime Couple Avatar Creator', 'ST267', 'com.anime.couple.kiss.creator', 1, 2, 1, 1, 0, 7, 8, '[3]', '[1]', '[6]', NULL, NULL, NULL, 'https://play.google.com/store/apps/details?id=com.anime.couple.kiss.creator', 0, NULL, NULL, 9, '2026-08-19 09:59:14', '2026-08-24 08:55:53', NULL),
(6, 'ST999', 'ST999', 'com.lvt.aivoicechanger.effects', 1, 2, 2, 1, 1, NULL, NULL, '[\"2\"]', NULL, NULL, 'https://www.figma.com/file/sample-voicechanger-design', 'https://drive.google.com/drive/folders/sample-st02-folder', 'https://github.com/lvtglobal/ai-voice-changer', 'https://play.google.com/store/apps/details?id=com.lvt.aivoicechanger.effects', 1, NULL, 'f', 9, '2026-08-24 08:38:48', '2026-08-24 08:57:53', NULL);

-- --------------------------------------------------------

--
-- Table structure for table `app_activity_logs`
--

CREATE TABLE `app_activity_logs` (
  `id` bigint UNSIGNED NOT NULL,
  `app_id` bigint UNSIGNED NOT NULL,
  `app_name` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'snapshot tên app tại thời điểm log',
  `user_id` bigint UNSIGNED NOT NULL,
  `user_name` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'snapshot tên user',
  `action` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'create | update_status | update_field | update_detail | delete',
  `field_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'tên field thay đổi (nếu là update)',
  `old_value` text COLLATE utf8mb4_unicode_ci COMMENT 'giá trị cũ (human-readable)',
  `new_value` text COLLATE utf8mb4_unicode_ci COMMENT 'giá trị mới (human-readable)',
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `app_activity_logs`
--

INSERT INTO `app_activity_logs` (`id`, `app_id`, `app_name`, `user_id`, `user_name`, `action`, `field_name`, `old_value`, `new_value`, `ip_address`, `created_at`, `updated_at`) VALUES
(1, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'admob_id', 'Admob Andes', '223', '127.0.0.1', '2026-08-22 09:30:36', '2026-08-22 09:30:36'),
(2, 1, 'Screen Mirroring & Cast to TV', 1, 'Quangnv', 'update_field', 'developer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:38:17', '2026-08-22 09:38:17'),
(3, 1, 'Screen Mirroring & Cast to TV', 1, 'Quangnv', 'update_field', 'developer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:38:40', '2026-08-22 09:38:40'),
(4, 4, 'Animal Character Maker', 9, 'Admin', 'update_field', 'designer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:40:24', '2026-08-22 09:40:24'),
(5, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_status', 'status_id', 'Review', 'Queue', '127.0.0.1', '2026-08-22 09:40:35', '2026-08-22 09:40:35'),
(6, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'store_id', 'Google Play', 'App Store', '127.0.0.1', '2026-08-22 09:40:43', '2026-08-22 09:40:43'),
(7, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_test_case', '(trống)', 'Có', '127.0.0.1', '2026-08-22 09:40:48', '2026-08-22 09:40:48'),
(8, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'data_user_id', 'Ducnm', 'Admin', '127.0.0.1', '2026-08-22 09:40:58', '2026-08-22 09:40:58'),
(9, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'data_user_id', 'Admin', '(trống)', '127.0.0.1', '2026-08-22 09:41:01', '2026-08-22 09:41:01'),
(10, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'data_user_id', '(trống)', 'Loanhtb', '127.0.0.1', '2026-08-22 09:41:11', '2026-08-22 09:41:11'),
(11, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'developer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:41:19', '2026-08-22 09:41:19'),
(12, 4, 'Animal Character Maker', 9, 'Admin', 'update_field', 'designer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:41:29', '2026-08-22 09:41:29'),
(13, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'mkt_user_id', 'Loanhtb', 'Quochv', '127.0.0.1', '2026-08-22 09:41:38', '2026-08-22 09:41:38'),
(14, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'designer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:47:39', '2026-08-22 09:47:39'),
(15, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'designer_ids', '(trống)', '(trống)', '127.0.0.1', '2026-08-22 09:48:27', '2026-08-22 09:48:27'),
(16, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'designer_ids', 'Quyenvth, Yenlt', 'Yenlt', '127.0.0.1', '2026-08-22 09:58:49', '2026-08-22 09:58:49'),
(17, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'developer_ids', 'Quangnv, Ducnm', 'Quangnv', '127.0.0.1', '2026-08-22 09:58:57', '2026-08-22 09:58:57'),
(18, 4, 'Animal Character Maker', 9, 'Admin', 'update_field', 'has_test_case', '(trống)', 'Có', '127.0.0.1', '2026-08-24 07:40:29', '2026-08-24 07:40:29'),
(19, 2, 'AI Voice Changer & Effects', 9, 'Admin', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:26:58', '2026-08-24 08:26:58'),
(20, 2, 'AI Voice Changer & Effects', 9, 'Admin', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:26:58', '2026-08-24 08:26:58'),
(21, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:27:05', '2026-08-24 08:27:05'),
(22, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:27:06', '2026-08-24 08:27:06'),
(23, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:27:40', '2026-08-24 08:27:40'),
(24, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:27:48', '2026-08-24 08:27:48'),
(25, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:29:06', '2026-08-24 08:29:06'),
(26, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'check_update', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:29:07', '2026-08-24 08:29:07'),
(27, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_test_case', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:30:12', '2026-08-24 08:30:12'),
(28, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:30:21', '2026-08-24 08:30:21'),
(29, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_test_case', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:31:17', '2026-08-24 08:31:17'),
(30, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'tester_ids', 'Thuongtth, Trambtp', 'Trambtp', '127.0.0.1', '2026-08-24 08:33:58', '2026-08-24 08:33:58'),
(31, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_test_case', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:35:56', '2026-08-24 08:35:56'),
(32, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_test_case', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:36:02', '2026-08-24 08:36:02'),
(33, 5, 'Anime Couple Avatar Creator', 9, 'Admin', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:36:16', '2026-08-24 08:36:16'),
(34, 6, 'ST999', 9, 'Admin', 'create', NULL, NULL, NULL, '127.0.0.1', '2026-08-24 08:38:48', '2026-08-24 08:38:48'),
(35, 6, 'ST999', 9, 'Admin', 'update_field', 'check_update', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:39:12', '2026-08-24 08:39:12'),
(36, 4, 'Animal Character Maker', 9, 'Admin', 'update_status', 'status_id', 'Research', 'Development', '127.0.0.1', '2026-08-24 08:39:58', '2026-08-24 08:39:58'),
(37, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:55:45', '2026-08-24 08:55:45'),
(38, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'check_update', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:55:48', '2026-08-24 08:55:48'),
(39, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'has_ads_script', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:55:50', '2026-08-24 08:55:50'),
(40, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'check_update', 'Chưa có', 'Có', '127.0.0.1', '2026-08-24 08:55:51', '2026-08-24 08:55:51'),
(41, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'check_update', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:55:52', '2026-08-24 08:55:52'),
(42, 5, 'Anime Couple Avatar Creator', 1, 'Quangnv', 'update_field', 'has_ads_script', 'Có', 'Chưa có', '127.0.0.1', '2026-08-24 08:55:53', '2026-08-24 08:55:53'),
(43, 6, 'ST999', 9, 'Admin', 'update_detail', 'check_update', '(trống)', '1', '127.0.0.1', '2026-08-24 08:57:53', '2026-08-24 08:57:53'),
(44, 2, 'AI Voice Changer & Effects', 9, 'Admin', 'update_status', 'status_id', 'Research', 'Development', '127.0.0.1', '2026-08-26 04:14:00', '2026-08-26 04:14:00');

-- --------------------------------------------------------

--
-- Table structure for table `app_admobs`
--

CREATE TABLE `app_admobs` (
  `id` smallint UNSIGNED NOT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Tên tài khoản Admob',
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `app_admobs`
--

INSERT INTO `app_admobs` (`id`, `name`, `email`, `created_at`, `updated_at`) VALUES
(1, '223', 'thuha.pt23@gmail.com', NULL, '2026-08-20 04:19:36'),
(2, 'Admob Andes', 'ceo@andesgroup.app', NULL, NULL),
(3, 'DuongNguyen', 'duongpes1992@gmail.com', NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `app_members`
--

CREATE TABLE `app_members` (
  `id` bigint UNSIGNED NOT NULL,
  `app_id` bigint UNSIGNED NOT NULL,
  `user_id` bigint UNSIGNED NOT NULL,
  `role` enum('designer','developer','tester') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Vai trò trong app',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `app_statuses`
--

CREATE TABLE `app_statuses` (
  `id` tinyint UNSIGNED NOT NULL,
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Queue, Research, Design, Development, Testing, Published, Paused, Cancelled',
  `color` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '#6c757d' COMMENT 'Màu hiển thị badge',
  `background` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#000000',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `app_statuses`
--

INSERT INTO `app_statuses` (`id`, `name`, `color`, `background`, `created_at`, `updated_at`) VALUES
(1, 'Queue', '#f00000', '#008cff', NULL, '2026-08-21 09:58:16'),
(2, 'Research', '#0000FF ', '#FFFF00', NULL, NULL),
(3, 'Design', '#800080 ', '#ADFF2F', NULL, NULL),
(4, 'Development', '#0000FF', '#990099', NULL, NULL),
(5, 'Testing', '#FFA500', '#000080', NULL, NULL),
(6, 'Review', '#003300', '#996600', NULL, NULL),
(7, 'Published', '#00DD00', '#3300CC', NULL, NULL),
(8, 'Paused', '#ffffff', '#dc3545', NULL, NULL),
(9, 'Cancelled', '#336600', '#666633', NULL, '2026-08-20 08:14:04');

-- --------------------------------------------------------

--
-- Table structure for table `app_stores`
--

CREATE TABLE `app_stores` (
  `id` tinyint UNSIGNED NOT NULL,
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Google Play, App Store, ...',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `app_stores`
--

INSERT INTO `app_stores` (`id`, `name`, `created_at`, `updated_at`) VALUES
(1, 'Google Play', NULL, NULL),
(2, 'App Store', NULL, '2026-08-20 07:16:05'),
(3, 'Both', NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `cache`
--

CREATE TABLE `cache` (
  `key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `value` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
  `expiration` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `cache`
--

INSERT INTO `cache` (`key`, `value`, `expiration`) VALUES
('role_perm_Developer_app_create', 'b:0;', 1787737141),
('role_perm_Developer_app_delete', 'b:0;', 1787737141),
('role_perm_Developer_app_edit', 'b:0;', 1787737141),
('role_perm_Developer_edit_admob', 'b:0;', 1787737140),
('role_perm_Developer_edit_ads_script', 'b:1;', 1787737140),
('role_perm_Developer_edit_check_ads', 'b:1;', 1787737140),
('role_perm_Developer_edit_data', 'b:0;', 1787737141),
('role_perm_Developer_edit_designer', 'b:1;', 1787737140),
('role_perm_Developer_edit_developer', 'b:1;', 1787737141),
('role_perm_Developer_edit_mkt', 'b:0;', 1787737141),
('role_perm_Developer_edit_status', 'b:0;', 1787737139),
('role_perm_Developer_edit_store', 'b:0;', 1787737140),
('role_perm_Developer_edit_test_case', 'b:0;', 1787737140),
('role_perm_Developer_edit_tester', 'b:0;', 1787737141);

-- --------------------------------------------------------

--
-- Table structure for table `kanban_attachments`
--

CREATE TABLE `kanban_attachments` (
  `id` bigint UNSIGNED NOT NULL,
  `task_id` bigint UNSIGNED NOT NULL,
  `file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `file_path` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `file_size` bigint DEFAULT NULL,
  `mime_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `uploaded_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `kanban_comments`
--

CREATE TABLE `kanban_comments` (
  `id` bigint UNSIGNED NOT NULL,
  `task_id` bigint UNSIGNED NOT NULL,
  `user_id` bigint UNSIGNED NOT NULL,
  `content` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `kanban_folders`
--

CREATE TABLE `kanban_folders` (
  `id` bigint UNSIGNED NOT NULL,
  `space_id` bigint UNSIGNED NOT NULL,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `color` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#8B8B99',
  `position` int NOT NULL DEFAULT '0',
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_folders`
--

INSERT INTO `kanban_folders` (`id`, `space_id`, `name`, `color`, `position`, `created_by`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 1, 'App Ngân hàng số', '#6C5CE7', 1, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(2, 1, 'Landing Page SaaS', '#00B894', 2, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:14', '2026-08-26 10:57:14'),
(3, 1, 'Nhận diện Fuji', '#E17055', 3, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:18', '2026-08-26 10:57:18'),
(4, 1, 'App Đặt đồ ăn', '#FD79A8', 4, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:24', '2026-08-26 10:57:24'),
(5, 1, 'Quản lý kho', '#0984E3', 5, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:28', '2026-08-26 10:57:28'),
(6, 1, 'ST185', '#8B8B99', 6, 9, '2026-08-26 08:43:55', '2026-08-26 10:57:33', '2026-08-26 10:57:33'),
(7, 2, 'ád', '#8B8B99', 1, 9, '2026-08-26 10:51:59', '2026-08-26 10:52:16', '2026-08-26 10:52:16'),
(8, 2, 'dfgdfg', '#8B8B99', 2, 9, '2026-08-26 10:52:06', '2026-08-26 10:52:16', '2026-08-26 10:52:16'),
(9, 1, 'Product', '#8B8B99', 7, 9, '2026-08-26 10:55:43', '2026-08-26 10:55:43', NULL),
(10, 3, 'mkt 1', '#8B8B99', 1, 9, '2026-08-27 03:26:28', '2026-08-27 03:26:28', NULL),
(11, 11, 'task haha', '#8B8B99', 1, 9, '2026-08-28 03:57:30', '2026-08-28 03:57:30', NULL),
(12, 13, 'task huhu', '#8B8B99', 1, 9, '2026-08-28 03:58:29', '2026-08-28 03:58:29', NULL),
(13, 18, 'hihi', '#8B8B99', 1, 9, '2026-08-28 07:08:37', '2026-08-28 07:08:37', NULL);

-- --------------------------------------------------------

--
-- Table structure for table `kanban_lists`
--

CREATE TABLE `kanban_lists` (
  `id` bigint UNSIGNED NOT NULL,
  `space_id` bigint UNSIGNED NOT NULL,
  `folder_id` bigint UNSIGNED DEFAULT NULL,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `color` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `position` int NOT NULL DEFAULT '0',
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_lists`
--

INSERT INTO `kanban_lists` (`id`, `space_id`, `folder_id`, `name`, `color`, `position`, `created_by`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 1, 1, 'Thanh toán & chuyển khoản', '#6C5CE7', 1, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(2, 1, 1, 'Giao diện Dashboard', '#6C5CE7', 2, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(3, 1, 1, 'Đăng ký & Xác thực', '#6C5CE7', 3, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(4, 1, 2, 'Thiết kế UI/UX', '#00B894', 1, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:14', '2026-08-26 10:57:14'),
(5, 1, 2, 'Prototype tương tác', '#00B894', 2, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:14', '2026-08-26 10:57:14'),
(6, 1, 3, 'Bộ nhận diện thương hiệu', '#E17055', 1, 1, '2026-08-26 08:26:09', '2026-08-26 10:57:18', '2026-08-26 10:57:18'),
(7, 1, 3, 'Ấn phẩm truyền thông', '#E17055', 2, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:18', '2026-08-26 10:57:18'),
(8, 1, 4, 'Luồng đặt món', '#FD79A8', 1, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:24', '2026-08-26 10:57:24'),
(9, 1, 4, 'Trang chủ & Banner', '#FD79A8', 2, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:24', '2026-08-26 10:57:24'),
(10, 1, 5, 'Báo cáo nhập xuất', '#0984E3', 1, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:28', '2026-08-26 10:57:28'),
(11, 1, 5, 'Quản lý tồn kho', '#0984E3', 2, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:28', '2026-08-26 10:57:28'),
(12, 1, NULL, 'Công việc chung', NULL, 99, 1, '2026-08-26 08:26:10', '2026-08-26 08:26:10', NULL),
(14, 1, 6, 'hihi', NULL, 2, 9, '2026-08-26 08:44:26', '2026-08-26 10:57:33', '2026-08-26 10:57:33'),
(15, 1, 6, 'gaga', NULL, 3, 9, '2026-08-26 10:06:03', '2026-08-26 10:45:13', '2026-08-26 10:45:13'),
(16, 1, 6, 'gagsad', NULL, 3, 9, '2026-08-26 10:47:02', '2026-08-26 10:47:09', '2026-08-26 10:47:09'),
(17, 1, 6, 'dsfdsf', NULL, 3, 9, '2026-08-26 10:48:56', '2026-08-26 10:49:04', '2026-08-26 10:49:04'),
(18, 1, 9, 'DJ Music Mixer', NULL, 1, 9, '2026-08-26 10:55:49', '2026-08-26 10:58:08', NULL),
(19, 1, 9, 'Tatto Maker', NULL, 2, 9, '2026-08-26 10:58:14', '2026-08-26 10:58:14', NULL),
(20, 1, 9, 'Piano Keyboard', NULL, 3, 9, '2026-08-26 10:58:19', '2026-08-26 10:58:19', NULL),
(21, 1, 9, 'Cat Language', NULL, 4, 9, '2026-08-26 10:58:25', '2026-08-26 10:58:25', NULL),
(22, 11, 11, 'ST45', NULL, 1, 9, '2026-08-28 03:57:46', '2026-08-28 03:57:46', NULL),
(23, 13, 12, 'ST546', NULL, 1, 9, '2026-08-28 03:58:36', '2026-08-28 03:58:41', NULL),
(24, 18, 13, 'test 123', NULL, 1, 9, '2026-08-28 07:08:42', '2026-08-28 07:08:42', NULL);

-- --------------------------------------------------------

--
-- Table structure for table `kanban_priorities`
--

CREATE TABLE `kanban_priorities` (
  `id` bigint UNSIGNED NOT NULL,
  `key` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
  `label` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `color` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
  `bg_color` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
  `position` int NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_priorities`
--

INSERT INTO `kanban_priorities` (`id`, `key`, `label`, `color`, `bg_color`, `position`, `created_at`, `updated_at`) VALUES
(1, 'urgent', 'Khẩn cấp', '#E14B3F', '#FDEBEA', 1, '2026-08-26 08:26:05', '2026-08-26 08:26:05'),
(2, 'high', 'Cao', '#D97B14', '#FEF3E2', 2, '2026-08-26 08:26:06', '2026-08-26 08:26:06'),
(3, 'normal', 'Bình thường', '#3970D6', '#EAF1FE', 3, '2026-08-26 08:26:06', '2026-08-26 08:26:06'),
(4, 'low', 'Thấp', '#6B6B7A', '#F0EFEC', 4, '2026-08-26 08:26:06', '2026-08-26 08:26:06');

-- --------------------------------------------------------

--
-- Table structure for table `kanban_spaces`
--

CREATE TABLE `kanban_spaces` (
  `id` bigint UNSIGNED NOT NULL,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `color` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#6C5CE7',
  `icon` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `position` int NOT NULL DEFAULT '0',
  `is_private` tinyint(1) NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_spaces`
--

INSERT INTO `kanban_spaces` (`id`, `name`, `color`, `icon`, `created_by`, `position`, `is_private`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 'Lvtapp', '#6C5CE7', 'L', 1, 1, 0, '2026-08-26 08:26:06', '2026-08-26 08:26:06', NULL),
(2, 'Team Space 1', '#3AA0FF', 'T', 1, 2, 0, '2026-08-26 08:26:07', '2026-08-26 10:52:16', '2026-08-26 10:52:16'),
(3, 'mkt', '#9B6B43', 'M', 1, 3, 0, '2026-08-26 08:26:07', '2026-08-26 08:26:07', NULL),
(4, '123', '#3AA0FF', 'G', 9, 4, 0, '2026-08-26 09:05:14', '2026-08-26 10:51:31', '2026-08-26 10:51:31'),
(10, 'hihi', '#3AA0FF', 'H', 9, 4, 0, '2026-08-28 02:35:42', '2026-08-28 02:36:00', '2026-08-28 02:36:00'),
(11, 'haha', '#8B5CF6', 'H', 9, 4, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00', NULL),
(13, 'huhu', '#6C5CE7', 'H', 9, 5, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02', NULL),
(14, 'Test New Refactor', '#6C5CE7', 'T', 1, 999, 0, '2026-08-28 06:51:24', '2026-08-28 06:53:47', '2026-08-28 06:53:47'),
(15, 'Test New Refactor', '#6C5CE7', 'T', 1, 999, 0, '2026-08-28 06:51:41', '2026-08-28 06:53:52', '2026-08-28 06:53:52'),
(16, 'Test New Refactor', '#6C5CE7', 'T', 1, 999, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55', NULL),
(18, 'đì đai đơ', '#8B5CF6', 'đ', 9, 1000, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33', NULL);

--
-- Triggers `kanban_spaces`
--
DELIMITER $$
CREATE TRIGGER `after_kanban_space_insert` AFTER INSERT ON `kanban_spaces` FOR EACH ROW INSERT INTO kanban_statuses (space_id, `key`, label, color, bg_tint, category, position, is_default, created_at, updated_at) VALUES
(NEW.id, "backlog", "BACKLOG", "#9CA3AF", "#FAFAF8", "not_started", 1, 1, NOW(), NOW()),
(NEW.id, "todo", "TO DO", "#9CA3AF", "#FAFAF8", "not_started", 2, 0, NOW(), NOW()),
(NEW.id, "planned", "PLANNED", "#3970D6", "#EEF4FE", "active", 3, 0, NOW(), NOW()),
(NEW.id, "review", "REVIEW", "#8B5CF6", "#F4F1FE", "active", 4, 0, NOW(), NOW()),
(NEW.id, "inprogress", "IN PROGRESS", "#2563AE", "#EAF2FE", "active", 5, 0, NOW(), NOW()),
(NEW.id, "blocked", "BLOCKED", "#E14B3F", "#FFFFFF", "blocked", 6, 0, NOW(), NOW()),
(NEW.id, "done", "DONE", "#21A192", "#EAF9F4", "done", 7, 0, NOW(), NOW())
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Table structure for table `kanban_space_members`
--

CREATE TABLE `kanban_space_members` (
  `space_id` bigint UNSIGNED NOT NULL,
  `user_id` bigint UNSIGNED NOT NULL,
  `role` enum('owner','admin','member') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'member',
  `joined_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_space_members`
--

INSERT INTO `kanban_space_members` (`space_id`, `user_id`, `role`, `joined_at`) VALUES
(1, 1, 'member', '2026-08-26 08:26:06'),
(1, 2, 'member', '2026-08-26 08:26:06'),
(1, 3, 'member', '2026-08-26 08:26:06'),
(1, 4, 'member', '2026-08-26 08:26:06'),
(1, 5, 'member', '2026-08-26 08:26:06'),
(1, 6, 'member', '2026-08-26 08:26:06'),
(1, 7, 'member', '2026-08-26 08:26:06'),
(1, 8, 'member', '2026-08-26 08:26:06'),
(1, 9, 'member', '2026-08-26 08:26:06'),
(2, 1, 'member', '2026-08-26 08:26:07'),
(2, 2, 'member', '2026-08-26 08:26:07'),
(2, 3, 'member', '2026-08-26 08:26:07'),
(2, 4, 'member', '2026-08-26 08:26:07'),
(2, 5, 'member', '2026-08-26 08:26:07'),
(2, 6, 'member', '2026-08-26 08:26:07'),
(2, 7, 'member', '2026-08-26 08:26:07'),
(2, 8, 'member', '2026-08-26 08:26:07'),
(2, 9, 'member', '2026-08-26 08:26:07'),
(3, 1, 'member', '2026-08-26 08:26:07'),
(3, 2, 'member', '2026-08-26 08:26:07'),
(3, 3, 'member', '2026-08-26 08:26:07'),
(3, 4, 'member', '2026-08-26 08:26:07'),
(3, 5, 'member', '2026-08-26 08:26:08'),
(3, 6, 'member', '2026-08-26 08:26:08'),
(3, 7, 'member', '2026-08-26 08:26:08'),
(3, 8, 'member', '2026-08-26 08:26:08'),
(3, 9, 'member', '2026-08-26 08:26:08');

-- --------------------------------------------------------

--
-- Table structure for table `kanban_statuses`
--

CREATE TABLE `kanban_statuses` (
  `id` bigint UNSIGNED NOT NULL,
  `space_id` bigint UNSIGNED DEFAULT NULL,
  `key` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `label` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `color` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '#9CA3AF',
  `bg_tint` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '#FAFAF8',
  `category` enum('not_started','active','blocked','done') COLLATE utf8mb4_unicode_ci DEFAULT 'active',
  `position` int NOT NULL DEFAULT '0',
  `is_default` tinyint(1) DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_statuses`
--

INSERT INTO `kanban_statuses` (`id`, `space_id`, `key`, `label`, `color`, `bg_tint`, `category`, `position`, `is_default`, `created_at`, `updated_at`) VALUES
(1, 1, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(2, 1, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(3, 1, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(4, 1, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(5, 1, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(6, 1, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(7, 1, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-26 08:26:08', '2026-08-26 08:26:08'),
(15, 3, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(16, 3, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(17, 3, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(18, 3, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(19, 3, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(20, 3, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(21, 3, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-26 08:26:09', '2026-08-26 08:26:09'),
(79, 11, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(80, 11, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(81, 11, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(82, 11, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(83, 11, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(84, 11, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(85, 11, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(86, 11, 'update code', 'UPDATE CODE', '#21A192', '#EAF9F4', 'active', 8, 0, '2026-08-28 02:37:00', '2026-08-28 02:37:00'),
(109, 13, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(110, 13, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(111, 13, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(112, 13, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(113, 13, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(114, 13, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(115, 13, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(116, 13, 'update code', 'UPDATE CODE', '#21A192', '#EAF9F4', 'active', 8, 0, '2026-08-28 03:45:02', '2026-08-28 03:45:02'),
(124, 13, 'test_group', 'test group', '#21A192', '#EAF9F4', 'active', 8, 0, '2026-08-28 04:19:32', '2026-08-28 04:19:32'),
(139, 16, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(140, 16, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(141, 16, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(142, 16, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(143, 16, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(144, 16, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(145, 16, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-28 06:51:55', '2026-08-28 06:51:55'),
(153, 1, 'gaga', 'gaga', '#3AA0FF', '#FAFAF8', 'active', 8, 0, '2026-08-28 06:57:17', '2026-08-28 06:57:17'),
(155, 18, 'backlog', 'BACKLOG', '#9CA3AF', '#FAFAF8', 'not_started', 1, 1, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(156, 18, 'todo', 'TO DO', '#9CA3AF', '#FAFAF8', 'not_started', 2, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(157, 18, 'planned', 'PLANNED', '#3970D6', '#EEF4FE', 'active', 3, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(158, 18, 'review', 'REVIEW', '#8B5CF6', '#F4F1FE', 'active', 4, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(159, 18, 'inprogress', 'IN PROGRESS', '#2563AE', '#EAF2FE', 'active', 5, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(160, 18, 'blocked', 'BLOCKED', '#E14B3F', '#FFFFFF', 'blocked', 6, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(161, 18, 'done', 'DONE', '#21A192', '#EAF9F4', 'done', 7, 0, '2026-08-28 07:08:33', '2026-08-28 07:08:33'),
(162, 18, 'hihi', 'hihi', '#00ff33', '#FAFAF8', 'active', 8, 0, '2026-08-28 07:09:06', '2026-08-28 07:09:06'),
(163, 18, 'ga', 'ga', '#0b9ef9', '#FAFAF8', 'active', 9, 0, '2026-08-28 07:10:13', '2026-08-28 07:10:13'),
(164, 18, 'gt', 'gt', '#ff0080', '#FFEBF5', 'active', 10, 0, '2026-08-28 07:14:49', '2026-08-28 07:14:49');

-- --------------------------------------------------------

--
-- Table structure for table `kanban_subtasks`
--

CREATE TABLE `kanban_subtasks` (
  `id` bigint UNSIGNED NOT NULL,
  `task_id` bigint UNSIGNED NOT NULL,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `is_done` tinyint(1) NOT NULL DEFAULT '0',
  `position` int NOT NULL DEFAULT '0',
  `due_date` date DEFAULT NULL,
  `assignee_id` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_subtasks`
--

INSERT INTO `kanban_subtasks` (`id`, `task_id`, `title`, `is_done`, `position`, `due_date`, `assignee_id`, `created_at`, `updated_at`) VALUES
(1, 5, 'Đầu việc con 1 cho Thiết kế dashboard số dư', 0, 1, NULL, NULL, '2026-08-26 08:26:11', '2026-08-26 08:26:11'),
(2, 5, 'Đầu việc con 2 cho Thiết kế dashboard số dư', 1, 2, NULL, NULL, '2026-08-26 08:26:11', '2026-08-26 08:26:11'),
(3, 7, 'Đầu việc con 1 cho Thiết kế màn hình Checkout', 0, 1, NULL, NULL, '2026-08-26 08:26:11', '2026-08-26 08:26:11'),
(4, 7, 'Đầu việc con 2 cho Thiết kế màn hình Checkout', 1, 2, NULL, NULL, '2026-08-26 08:26:12', '2026-08-26 08:26:12'),
(5, 12, 'Đầu việc con 1 cho Prototype tương tác Figma', 0, 1, NULL, NULL, '2026-08-26 08:26:13', '2026-08-26 08:26:13'),
(6, 12, 'Đầu việc con 2 cho Prototype tương tác Figma', 1, 2, NULL, NULL, '2026-08-26 08:26:13', '2026-08-26 08:26:13'),
(7, 12, 'Đầu việc con 3 cho Prototype tương tác Figma', 0, 3, NULL, NULL, '2026-08-26 08:26:13', '2026-08-26 08:26:13'),
(8, 15, 'Đầu việc con 1 cho Thiết kế Dashboard tồn kho', 0, 1, NULL, NULL, '2026-08-26 08:26:13', '2026-08-26 08:26:13'),
(9, 15, 'Đầu việc con 2 cho Thiết kế Dashboard tồn kho', 1, 2, NULL, NULL, '2026-08-26 08:26:13', '2026-08-26 08:26:13');

-- --------------------------------------------------------

--
-- Table structure for table `kanban_tasks`
--

CREATE TABLE `kanban_tasks` (
  `id` bigint UNSIGNED NOT NULL,
  `list_id` bigint UNSIGNED NOT NULL,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` longtext COLLATE utf8mb4_unicode_ci,
  `status_id` bigint UNSIGNED NOT NULL,
  `priority_id` bigint UNSIGNED DEFAULT NULL,
  `start_date` date DEFAULT NULL,
  `due_date` date DEFAULT NULL,
  `time_estimate_minutes` int DEFAULT NULL,
  `position` double NOT NULL DEFAULT '0',
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_tasks`
--

INSERT INTO `kanban_tasks` (`id`, `list_id`, `title`, `description`, `status_id`, `priority_id`, `start_date`, `due_date`, `time_estimate_minutes`, `position`, `created_by`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 1, 'Icon set cho tính năng mới', NULL, 2, 4, '2026-08-26', '2026-08-31', NULL, 1, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(2, 1, 'Bộ icon thương hiệu Fuji', NULL, 2, 4, '2026-08-26', '2026-09-01', NULL, 2, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(3, 1, 'Biểu đồ nhập - xuất kho', NULL, 2, 3, '2026-08-26', '2026-09-03', NULL, 3, 1, '2026-08-26 08:26:10', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(4, 1, 'Responsive mobile cho kho', NULL, 2, 3, '2026-08-26', '2026-09-01', NULL, 4, 1, '2026-08-26 08:26:11', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(5, 1, 'Thiết kế dashboard số dư', NULL, 3, 3, '2026-08-26', '2026-08-31', NULL, 5, 1, '2026-08-26 08:26:11', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(6, 1, 'Name card & letterhead Fuji', NULL, 3, 3, '2026-08-26', '2026-08-30', NULL, 1, 1, '2026-08-26 08:26:11', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(7, 1, 'Thiết kế màn hình Checkout', NULL, 4, 1, '2026-08-26', '2026-08-26', NULL, 7, 1, '2026-08-26 08:26:11', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(8, 1, 'User flow thanh toán', NULL, 4, 1, '2026-08-26', '2026-08-25', NULL, 8, 1, '2026-08-26 08:26:12', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(9, 1, 'Logo bộ nhận diện Fuji', NULL, 4, 2, '2026-08-26', '2026-08-22', NULL, 9, 1, '2026-08-26 08:26:12', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(10, 1, 'Icon animation loading', NULL, 4, 3, '2026-08-26', '2026-08-27', NULL, 10, 1, '2026-08-26 08:26:12', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(11, 1, 'Wireframe luồng đăng ký', NULL, 5, 3, '2026-08-26', '2026-08-28', NULL, 11, 1, '2026-08-26 08:26:12', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(12, 1, 'Prototype tương tác Figma', NULL, 5, 1, '2026-08-26', '2026-09-02', NULL, 12, 1, '2026-08-26 08:26:12', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(13, 1, 'Landing Page chính SaaS', NULL, 5, 2, '2026-08-26', '2026-08-27', NULL, 13, 1, '2026-08-26 08:26:13', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(14, 1, 'Animation mở app đặt đồ ăn', NULL, 5, 3, '2026-08-26', '2026-08-29', NULL, 14, 1, '2026-08-26 08:26:13', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(15, 1, 'Thiết kế Dashboard tồn kho', NULL, 6, 1, '2026-08-26', '2026-08-20', NULL, 15, 1, '2026-08-26 08:26:13', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(16, 1, 'Banner mạng xã hội - chờ nội dung', NULL, 6, 2, '2026-08-26', '2026-08-30', NULL, 16, 1, '2026-08-26 08:26:13', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(17, 1, 'Empty state tài khoản mới', NULL, 7, 4, '2026-08-26', '2026-08-10', NULL, 17, 1, '2026-08-26 08:26:14', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(18, 1, 'Empty state & error state', NULL, 7, 4, '2026-08-26', '2026-08-12', NULL, 18, 1, '2026-08-26 08:26:14', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(19, 1, 'Banner quảng cáo mùa hè', NULL, 7, 4, '2026-08-26', '2026-08-18', NULL, 19, 1, '2026-08-26 08:26:14', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(20, 1, 'Style guide màu & typography', NULL, 7, 3, '2026-08-26', '2026-08-15', NULL, 20, 1, '2026-08-26 08:26:14', '2026-08-26 10:57:08', '2026-08-26 10:57:08'),
(21, 18, 'test 185', 'test 185', 3, NULL, NULL, NULL, NULL, 1, 9, '2026-08-26 10:56:17', '2026-08-28 07:06:53', NULL),
(22, 18, 'dj', 'dj', 1, 2, NULL, NULL, NULL, 1, 9, '2026-08-27 03:08:16', '2026-08-28 07:06:56', NULL),
(23, 21, 'cat', 'cat', 2, 3, NULL, NULL, NULL, 2, 9, '2026-08-27 03:22:54', '2026-08-27 10:36:11', NULL),
(24, 18, 'à', 'ád', 2, 1, '2026-08-27', '2026-08-30', NULL, 2, 9, '2026-08-27 04:37:45', '2026-08-27 10:30:43', NULL),
(25, 18, 'àg', 'gfsđ', 2, 3, '2026-08-27', '2026-09-01', NULL, 2, 9, '2026-08-27 04:50:00', '2026-08-27 10:30:43', NULL),
(26, 19, 'taatatata', 'âttatata', 2, 1, '2026-08-27', '2026-08-28', NULL, 1, 9, '2026-08-27 07:01:12', '2026-08-27 10:33:15', NULL),
(27, 18, 'gagaga', 'agagag', 2, 2, '2026-08-29', '2026-09-01', NULL, 3, 9, '2026-08-27 07:19:35', '2026-08-27 10:26:14', NULL),
(28, 18, 'test', 'test', 2, 3, '2026-08-27', '2026-08-29', NULL, 2, 9, '2026-08-27 07:42:12', '2026-08-27 10:30:45', NULL),
(29, 18, 'Accept: application/json thiếuAccept: application/json thiếuAccept: application/json thiếu', 'Accept: application/json thiếu', 2, 2, '2026-08-27', '2026-08-28', NULL, 2, 9, '2026-08-27 07:43:17', '2026-08-27 10:30:42', NULL),
(30, 18, 'fa', 'à', 2, 3, NULL, NULL, NULL, 3, 9, '2026-08-27 08:09:41', '2026-08-27 08:09:41', NULL),
(31, 18, 'ád', 'ád', 2, 3, NULL, NULL, NULL, 4, 9, '2026-08-27 08:10:02', '2026-08-27 08:10:02', NULL),
(32, 22, 'task haha', 'task haha', 7, 1, '2026-08-28', '2026-08-29', NULL, 1, 9, '2026-08-28 03:58:11', '2026-08-28 04:00:25', NULL),
(33, 23, 'task huhuh', 'task huhuh', 116, 1, NULL, '2026-08-29', NULL, 1, 9, '2026-08-28 03:59:03', '2026-08-28 04:37:23', NULL),
(34, 22, 'agagag', 'gag', 153, 3, NULL, NULL, NULL, 1, 9, '2026-08-28 06:58:42', '2026-08-28 06:58:42', '2026-08-19 07:02:37'),
(35, 22, 'update code', 'update code', 86, 3, NULL, NULL, NULL, 1, 9, '2026-08-28 07:03:50', '2026-08-28 07:03:50', NULL);

-- --------------------------------------------------------

--
-- Table structure for table `kanban_task_activities`
--

CREATE TABLE `kanban_task_activities` (
  `id` bigint UNSIGNED NOT NULL,
  `task_id` bigint UNSIGNED NOT NULL,
  `user_id` bigint UNSIGNED DEFAULT NULL,
  `action_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `old_value` text COLLATE utf8mb4_unicode_ci,
  `new_value` text COLLATE utf8mb4_unicode_ci,
  `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_task_activities`
--

INSERT INTO `kanban_task_activities` (`id`, `task_id`, `user_id`, `action_type`, `old_value`, `new_value`, `description`, `created_at`) VALUES
(1, 6, 9, 'status_changed', 'PLANNED', 'REVIEW', 'Đã chuyển trạng thái sang REVIEW', '2026-08-26 08:28:15'),
(2, 6, 9, 'status_changed', 'REVIEW', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-26 08:28:18'),
(3, 21, 9, 'created', NULL, NULL, 'Đã tạo công việc \"test 185\"', '2026-08-26 10:56:17'),
(4, 22, 9, 'created', NULL, NULL, 'Đã tạo công việc \"dj\"', '2026-08-27 03:08:17'),
(5, 23, 9, 'created', NULL, NULL, 'Đã tạo công việc \"cat\"', '2026-08-27 03:22:54'),
(6, 24, 9, 'created', NULL, NULL, 'Đã tạo công việc \"à\"', '2026-08-27 04:37:45'),
(7, 24, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 04:44:19'),
(8, 25, 9, 'created', NULL, NULL, 'Đã tạo công việc \"àg\"', '2026-08-27 04:50:00'),
(9, 26, 9, 'created', NULL, NULL, 'Đã tạo công việc \"taatatata\"', '2026-08-27 07:01:12'),
(10, 27, 9, 'created', NULL, NULL, 'Đã tạo công việc \"gagaga\"', '2026-08-27 07:19:35'),
(11, 28, 9, 'created', NULL, NULL, 'Đã tạo công việc \"test\"', '2026-08-27 07:42:12'),
(12, 29, 9, 'created', NULL, NULL, 'Đã tạo công việc \"Accept: application/json thiếuAccept: application/json thiếuAccept: application/json thiếu\"', '2026-08-27 07:43:17'),
(13, 22, 9, 'status_changed', 'PLANNED', 'REVIEW', 'Đã chuyển trạng thái sang REVIEW', '2026-08-27 07:44:56'),
(14, 28, 9, 'status_changed', 'BACKLOG', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 07:45:10'),
(15, 23, 9, 'status_changed', 'TO DO', 'BACKLOG', 'Đã chuyển trạng thái sang BACKLOG', '2026-08-27 07:57:34'),
(16, 29, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:34'),
(17, 25, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:34'),
(18, 23, 9, 'status_changed', 'BACKLOG', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:38'),
(19, 21, 9, 'status_changed', 'BACKLOG', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:39'),
(20, 22, 9, 'status_changed', 'REVIEW', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:41'),
(21, 26, 9, 'status_changed', 'IN PROGRESS', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 08:01:42'),
(22, 22, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 08:02:00'),
(23, 24, 9, 'status_changed', 'PLANNED', 'REVIEW', 'Đã chuyển trạng thái sang REVIEW', '2026-08-27 08:02:00'),
(24, 26, 9, 'status_changed', 'PLANNED', 'BACKLOG', 'Đã chuyển trạng thái sang BACKLOG', '2026-08-27 08:02:01'),
(25, 28, 9, 'status_changed', 'PLANNED', 'IN PROGRESS', 'Đã chuyển trạng thái sang IN PROGRESS', '2026-08-27 08:02:02'),
(26, 23, 9, 'status_changed', 'PLANNED', 'BLOCKED', 'Đã chuyển trạng thái sang BLOCKED', '2026-08-27 08:02:03'),
(27, 29, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 08:02:04'),
(28, 25, 9, 'status_changed', 'PLANNED', 'REVIEW', 'Đã chuyển trạng thái sang REVIEW', '2026-08-27 08:02:06'),
(29, 30, 9, 'created', NULL, NULL, 'Đã tạo công việc \"fa\"', '2026-08-27 08:09:41'),
(30, 31, 9, 'created', NULL, NULL, 'Đã tạo công việc \"ád\"', '2026-08-27 08:10:02'),
(31, 25, 9, 'status_changed', 'REVIEW', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 09:08:56'),
(32, 25, 9, 'status_changed', 'PLANNED', 'REVIEW', 'Đã chuyển trạng thái sang REVIEW', '2026-08-27 09:08:57'),
(33, 26, 9, 'status_changed', 'BACKLOG', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 09:21:31'),
(34, 26, 9, 'status_changed', 'TO DO', 'BACKLOG', 'Đã chuyển trạng thái sang BACKLOG', '2026-08-27 09:21:39'),
(35, 27, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:26:14'),
(36, 29, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 10:26:19'),
(37, 21, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:30:41'),
(38, 29, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:30:42'),
(39, 24, 9, 'status_changed', 'REVIEW', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:30:43'),
(40, 25, 9, 'status_changed', 'REVIEW', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:30:44'),
(41, 28, 9, 'status_changed', 'IN PROGRESS', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:30:45'),
(42, 21, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-27 10:32:13'),
(43, 21, 9, 'status_changed', 'PLANNED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:33:14'),
(44, 26, 9, 'status_changed', 'BACKLOG', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:33:15'),
(45, 23, 9, 'status_changed', 'BLOCKED', 'TO DO', 'Đã chuyển trạng thái sang TO DO', '2026-08-27 10:36:11'),
(46, 32, 9, 'created', NULL, NULL, 'Đã tạo công việc \"task haha\"', '2026-08-28 03:58:11'),
(47, 33, 9, 'created', NULL, NULL, 'Đã tạo công việc \"task huhuh\"', '2026-08-28 03:59:03'),
(48, 32, 9, 'status_changed', 'UPDATE CODE', 'DONE', 'Đã chuyển trạng thái sang DONE', '2026-08-28 04:00:25'),
(49, 33, 9, 'status_changed', 'UPDATE CODE', 'test group', 'Đã chuyển trạng thái sang test group', '2026-08-28 04:37:11'),
(50, 33, 9, 'status_changed', 'test group', 'UPDATE CODE', 'Đã chuyển trạng thái sang UPDATE CODE', '2026-08-28 04:37:18'),
(51, 33, 9, 'status_changed', 'UPDATE CODE', 'test group', 'Đã chuyển trạng thái sang test group', '2026-08-28 04:37:20'),
(52, 33, 9, 'status_changed', 'test group', 'UPDATE CODE', 'Đã chuyển trạng thái sang UPDATE CODE', '2026-08-28 04:37:23'),
(53, 34, 9, 'created', NULL, NULL, 'Đã tạo công việc \"agagag\"', '2026-08-28 06:58:42'),
(54, 35, 9, 'created', NULL, NULL, 'Đã tạo công việc \"update code\"', '2026-08-28 07:03:50'),
(55, 21, 9, 'status_changed', 'TO DO', 'PLANNED', 'Đã chuyển trạng thái sang PLANNED', '2026-08-28 07:06:53'),
(56, 22, 9, 'status_changed', 'TO DO', 'BACKLOG', 'Đã chuyển trạng thái sang BACKLOG', '2026-08-28 07:06:56');

-- --------------------------------------------------------

--
-- Table structure for table `kanban_task_assignees`
--

CREATE TABLE `kanban_task_assignees` (
  `task_id` bigint UNSIGNED NOT NULL,
  `user_id` bigint UNSIGNED NOT NULL,
  `assigned_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `kanban_task_assignees`
--

INSERT INTO `kanban_task_assignees` (`task_id`, `user_id`, `assigned_at`) VALUES
(1, 1, '2026-08-26 08:26:10'),
(1, 2, '2026-08-26 08:26:10'),
(2, 1, '2026-08-26 08:26:10'),
(2, 4, '2026-08-26 08:26:10'),
(3, 4, '2026-08-26 08:26:10'),
(3, 7, '2026-08-26 08:26:11'),
(4, 6, '2026-08-26 08:26:11'),
(4, 9, '2026-08-26 08:26:11'),
(5, 5, '2026-08-26 08:26:11'),
(5, 6, '2026-08-26 08:26:11'),
(6, 1, '2026-08-26 08:26:11'),
(6, 4, '2026-08-26 08:26:11'),
(7, 1, '2026-08-26 08:26:11'),
(7, 5, '2026-08-26 08:26:11'),
(8, 1, '2026-08-26 08:26:12'),
(8, 7, '2026-08-26 08:26:12'),
(9, 2, '2026-08-26 08:26:12'),
(9, 5, '2026-08-26 08:26:12'),
(10, 3, '2026-08-26 08:26:12'),
(10, 7, '2026-08-26 08:26:12'),
(11, 2, '2026-08-26 08:26:12'),
(11, 9, '2026-08-26 08:26:12'),
(12, 7, '2026-08-26 08:26:13'),
(12, 8, '2026-08-26 08:26:13'),
(13, 1, '2026-08-26 08:26:13'),
(13, 9, '2026-08-26 08:26:13'),
(14, 3, '2026-08-26 08:26:13'),
(14, 7, '2026-08-26 08:26:13'),
(15, 3, '2026-08-26 08:26:13'),
(15, 6, '2026-08-26 08:26:13'),
(16, 2, '2026-08-26 08:26:14'),
(16, 8, '2026-08-26 08:26:13'),
(17, 4, '2026-08-26 08:26:14'),
(17, 6, '2026-08-26 08:26:14'),
(18, 1, '2026-08-26 08:26:14'),
(18, 6, '2026-08-26 08:26:14'),
(19, 1, '2026-08-26 08:26:14'),
(19, 5, '2026-08-26 08:26:14'),
(20, 4, '2026-08-26 08:26:14'),
(20, 9, '2026-08-26 08:26:14'),
(22, 1, '2026-08-27 03:08:17'),
(26, 3, '2026-08-27 07:01:12'),
(27, 2, '2026-08-27 07:19:35'),
(28, 1, '2026-08-27 07:42:12'),
(28, 3, '2026-08-27 07:42:12'),
(28, 4, '2026-08-27 07:42:12'),
(29, 1, '2026-08-27 07:43:17'),
(31, 8, '2026-08-27 09:44:59'),
(32, 1, '2026-08-28 03:58:11'),
(33, 4, '2026-08-28 03:59:03'),
(35, 1, '2026-08-28 07:04:37');

-- --------------------------------------------------------

--
-- Table structure for table `migrations`
--

CREATE TABLE `migrations` (
  `id` int UNSIGNED NOT NULL,
  `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `batch` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `migrations`
--

INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES
(1, '2026_08_22_000001_create_role_permissions_table', 1),
(2, '2026_08_26_100000_create_kanban_board_tables', 2);

-- --------------------------------------------------------

--
-- Table structure for table `role_permissions`
--

CREATE TABLE `role_permissions` (
  `id` bigint UNSIGNED NOT NULL,
  `role` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `permission_key` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `is_allowed` tinyint(1) NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `role_permissions`
--

INSERT INTO `role_permissions` (`id`, `role`, `permission_key`, `is_allowed`, `created_at`, `updated_at`) VALUES
(1, 'Admin', 'edit_status', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(2, 'Admin', 'edit_store', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(3, 'Admin', 'edit_admob', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(4, 'Admin', 'edit_test_case', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(5, 'Admin', 'edit_designer', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(6, 'Admin', 'edit_developer', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(7, 'Admin', 'edit_tester', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(8, 'Admin', 'edit_mkt', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(9, 'Admin', 'edit_data', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(10, 'Admin', 'app_create', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(11, 'Admin', 'app_edit', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(12, 'Admin', 'app_delete', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(13, 'Developer', 'edit_status', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(14, 'Developer', 'edit_store', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(15, 'Developer', 'edit_admob', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(16, 'Developer', 'edit_test_case', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(17, 'Developer', 'edit_designer', 1, '2026-08-22 08:48:10', '2026-08-24 08:56:07'),
(18, 'Developer', 'edit_developer', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(19, 'Developer', 'edit_tester', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(20, 'Developer', 'edit_mkt', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(21, 'Developer', 'edit_data', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(22, 'Developer', 'app_create', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(23, 'Developer', 'app_edit', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(24, 'Developer', 'app_delete', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(25, 'Designer', 'edit_status', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(26, 'Designer', 'edit_store', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(27, 'Designer', 'edit_admob', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(28, 'Designer', 'edit_test_case', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(29, 'Designer', 'edit_designer', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(30, 'Designer', 'edit_developer', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(31, 'Designer', 'edit_tester', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(32, 'Designer', 'edit_mkt', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(33, 'Designer', 'edit_data', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(34, 'Designer', 'app_create', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(35, 'Designer', 'app_edit', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(36, 'Designer', 'app_delete', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(37, 'Tester', 'edit_status', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(38, 'Tester', 'edit_store', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(39, 'Tester', 'edit_admob', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(40, 'Tester', 'edit_test_case', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(41, 'Tester', 'edit_designer', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(42, 'Tester', 'edit_developer', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(43, 'Tester', 'edit_tester', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(44, 'Tester', 'edit_mkt', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(45, 'Tester', 'edit_data', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(46, 'Tester', 'app_create', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(47, 'Tester', 'app_edit', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(48, 'Tester', 'app_delete', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(49, 'Marketing', 'edit_status', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(50, 'Marketing', 'edit_store', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(51, 'Marketing', 'edit_admob', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(52, 'Marketing', 'edit_test_case', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(53, 'Marketing', 'edit_designer', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(54, 'Marketing', 'edit_developer', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(55, 'Marketing', 'edit_tester', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(56, 'Marketing', 'edit_mkt', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(57, 'Marketing', 'edit_data', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(58, 'Marketing', 'app_create', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(59, 'Marketing', 'app_edit', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(60, 'Marketing', 'app_delete', 0, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(61, 'Admin', 'edit_check_ads', 1, '2026-08-22 08:48:10', '2026-08-22 08:48:10'),
(62, 'Admin', 'edit_ads_script', 1, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(63, 'Developer', 'edit_ads_script', 1, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(64, 'Developer', 'edit_check_ads', 1, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(65, 'Designer', 'edit_ads_script', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(66, 'Designer', 'edit_check_ads', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(67, 'Tester', 'edit_ads_script', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(68, 'Tester', 'edit_check_ads', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(69, 'Marketing', 'edit_ads_script', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37'),
(70, 'Marketing', 'edit_check_ads', 0, '2026-08-24 08:55:37', '2026-08-24 08:55:37');

-- --------------------------------------------------------

--
-- Table structure for table `sessions`
--

CREATE TABLE `sessions` (
  `id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `user_id` bigint UNSIGNED DEFAULT NULL,
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent` text COLLATE utf8mb4_unicode_ci,
  `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_activity` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sessions`
--

INSERT INTO `sessions` (`id`, `user_id`, `ip_address`, `user_agent`, `payload`, `last_activity`) VALUES
('62MKzFaHPzcxKzX884FOzbcfVemrlqYPn6lVJOXo', 9, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36', 'YTo1OntzOjY6Il90b2tlbiI7czo0MDoiQTBta2lCaVF0MlRJSEtnM0ZlZXd2V1UzalZWcnRQbnVxWWRaNEQ1UCI7czozOiJ1cmwiO2E6MTp7czo4OiJpbnRlbmRlZCI7czozNToiaHR0cDovL2Nvbmd2aWVjLmx2dGdsb2JhbC52bi9rYW5iYW4iO31zOjk6Il9wcmV2aW91cyI7YToxOntzOjM6InVybCI7czo0MzoiaHR0cDovL2Nvbmd2aWVjLmx2dGdsb2JhbC52bi9hcHAvYXBwX2ZvbGxvdyI7fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fXM6NTA6ImxvZ2luX3dlYl81OWJhMzZhZGRjMmIyZjk0MDE1ODBmMDE0YzdmNThlYTRlMzA5ODlkIjtpOjk7fQ==', 1787902137),
('fy0bWBz6H7Lp56nMnS8pyFDnHEH8cWcVbMKZOBus', 9, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36', 'YTo1OntzOjY6Il90b2tlbiI7czo0MDoiTXNybUY4R0hEaFdRNjBYMmVrRUVaeXhzcXVES1licm1OZlphbExjQiI7czozOiJ1cmwiO2E6MTp7czo4OiJpbnRlbmRlZCI7czozNToiaHR0cDovL2Nvbmd2aWVjLmx2dGdsb2JhbC52bi9rYW5iYW4iO31zOjk6Il9wcmV2aW91cyI7YToxOntzOjM6InVybCI7czozODoiaHR0cDovL2Nvbmd2aWVjLmx2dGdsb2JhbC52bi9kYXNoYm9hcmQiO31zOjY6Il9mbGFzaCI7YToyOntzOjM6Im9sZCI7YTowOnt9czozOiJuZXciO2E6MDp7fX1zOjUwOiJsb2dpbl93ZWJfNTliYTM2YWRkYzJiMmY5NDAxNTgwZjAxNGM3ZjU4ZWE0ZTMwOTg5ZCI7aTo5O30=', 1787908811);

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` bigint UNSIGNED NOT NULL,
  `nhansu_user_id` bigint UNSIGNED NOT NULL COMMENT 'ID user bên hệ thống Nhân sự (để khớp)',
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Tên hiển thị (đồng bộ từ Nhân sự)',
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Email (đồng bộ từ Nhân sự)',
  `role` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'other',
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email_verified_at` timestamp NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `nhansu_user_id`, `name`, `email`, `role`, `remember_token`, `email_verified_at`, `created_at`, `updated_at`, `deleted_at`) VALUES
(1, 18, 'Quangnv', 'quangnv@lvtapp.com', 'Developer', NULL, '2026-08-26 09:33:38', '2026-08-19 04:18:41', '2026-08-26 09:33:38', NULL),
(2, 2, 'Quyenvth', 'quyenvth@lvtapp.com', 'Designer', NULL, '2026-08-19 07:40:55', '2026-08-19 07:40:55', '2026-08-19 07:40:55', NULL),
(3, 3, 'Yenlt', 'yenlt@lvtapp.com', 'Designer', NULL, '2026-08-19 07:42:37', '2026-08-19 07:42:37', '2026-08-19 07:42:37', NULL),
(4, 4, 'Thuongtth', 'thuongtth@lvtapp.com', 'Tester', NULL, '2026-08-19 07:45:27', '2026-08-19 07:45:27', '2026-08-19 07:45:27', NULL),
(5, 7, 'Ducnm', 'ducnm@lvtapp.com', 'Developer', NULL, '2026-08-19 07:48:15', '2026-08-19 07:48:15', '2026-08-19 07:48:15', NULL),
(6, 5, 'Trambtp', 'trambtp@lvtapp.com', 'Tester', NULL, '2026-08-19 07:50:23', '2026-08-19 07:50:23', '2026-08-19 07:50:23', NULL),
(7, 15, 'Quochv', 'quochv@lvtapp.com', 'Marketing', NULL, '2026-08-19 07:58:04', '2026-08-19 07:58:04', '2026-08-19 07:58:04', NULL),
(8, 21, 'Loanhtb', 'loanhtb@lvtapp.com', 'Marketing', NULL, '2026-08-19 08:00:08', NULL, NULL, NULL),
(9, 8000, 'Admin', 'admin@lvtapp.com', 'Admin', NULL, '2026-08-28 09:20:09', '2026-08-19 09:07:45', '2026-08-28 09:20:09', NULL);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `apps`
--
ALTER TABLE `apps`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_status` (`status_id`),
  ADD KEY `idx_store` (`store_id`),
  ADD KEY `idx_admob` (`admob_id`),
  ADD KEY `idx_mkt` (`mkt_user_id`),
  ADD KEY `idx_data` (`data_user_id`),
  ADD KEY `idx_package` (`package`),
  ADD KEY `idx_deleted` (`deleted_at`);

--
-- Indexes for table `app_activity_logs`
--
ALTER TABLE `app_activity_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `app_activity_logs_app_id_created_at_index` (`app_id`,`created_at`),
  ADD KEY `app_activity_logs_user_id_created_at_index` (`user_id`,`created_at`),
  ADD KEY `app_activity_logs_action_index` (`action`);

--
-- Indexes for table `app_admobs`
--
ALTER TABLE `app_admobs`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `app_members`
--
ALTER TABLE `app_members`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_app_member_role` (`app_id`,`user_id`,`role`),
  ADD KEY `idx_app` (`app_id`),
  ADD KEY `idx_user` (`user_id`),
  ADD KEY `idx_role` (`role`);

--
-- Indexes for table `app_statuses`
--
ALTER TABLE `app_statuses`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `app_stores`
--
ALTER TABLE `app_stores`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `cache`
--
ALTER TABLE `cache`
  ADD PRIMARY KEY (`key`),
  ADD KEY `cache_expiration_index` (`expiration`);

--
-- Indexes for table `kanban_attachments`
--
ALTER TABLE `kanban_attachments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_attachments_task_id_foreign` (`task_id`),
  ADD KEY `kanban_attachments_uploaded_by_foreign` (`uploaded_by`);

--
-- Indexes for table `kanban_comments`
--
ALTER TABLE `kanban_comments`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_comments_task_id_foreign` (`task_id`),
  ADD KEY `kanban_comments_user_id_foreign` (`user_id`);

--
-- Indexes for table `kanban_folders`
--
ALTER TABLE `kanban_folders`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_folders_space_id_foreign` (`space_id`),
  ADD KEY `kanban_folders_created_by_foreign` (`created_by`);

--
-- Indexes for table `kanban_lists`
--
ALTER TABLE `kanban_lists`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_lists_space_id_foreign` (`space_id`),
  ADD KEY `kanban_lists_folder_id_foreign` (`folder_id`),
  ADD KEY `kanban_lists_created_by_foreign` (`created_by`);

--
-- Indexes for table `kanban_priorities`
--
ALTER TABLE `kanban_priorities`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `kanban_priorities_key_unique` (`key`);

--
-- Indexes for table `kanban_spaces`
--
ALTER TABLE `kanban_spaces`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_spaces_created_by_foreign` (`created_by`);

--
-- Indexes for table `kanban_space_members`
--
ALTER TABLE `kanban_space_members`
  ADD PRIMARY KEY (`space_id`,`user_id`),
  ADD KEY `kanban_space_members_user_id_foreign` (`user_id`);

--
-- Indexes for table `kanban_statuses`
--
ALTER TABLE `kanban_statuses`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_statuses_space_id_foreign` (`space_id`);

--
-- Indexes for table `kanban_subtasks`
--
ALTER TABLE `kanban_subtasks`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_subtasks_task_id_foreign` (`task_id`),
  ADD KEY `kanban_subtasks_assignee_id_foreign` (`assignee_id`);

--
-- Indexes for table `kanban_tasks`
--
ALTER TABLE `kanban_tasks`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_tasks_status_id_foreign` (`status_id`),
  ADD KEY `kanban_tasks_priority_id_foreign` (`priority_id`),
  ADD KEY `kanban_tasks_created_by_foreign` (`created_by`),
  ADD KEY `kanban_tasks_list_id_status_id_index` (`list_id`,`status_id`),
  ADD KEY `kanban_tasks_due_date_index` (`due_date`);

--
-- Indexes for table `kanban_task_activities`
--
ALTER TABLE `kanban_task_activities`
  ADD PRIMARY KEY (`id`),
  ADD KEY `kanban_task_activities_task_id_foreign` (`task_id`),
  ADD KEY `kanban_task_activities_user_id_foreign` (`user_id`);

--
-- Indexes for table `kanban_task_assignees`
--
ALTER TABLE `kanban_task_assignees`
  ADD PRIMARY KEY (`task_id`,`user_id`),
  ADD KEY `kanban_task_assignees_user_id_foreign` (`user_id`);

--
-- Indexes for table `migrations`
--
ALTER TABLE `migrations`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `role_permissions`
--
ALTER TABLE `role_permissions`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `role_permissions_role_permission_key_unique` (`role`,`permission_key`);

--
-- Indexes for table `sessions`
--
ALTER TABLE `sessions`
  ADD PRIMARY KEY (`id`),
  ADD KEY `sessions_user_id_index` (`user_id`),
  ADD KEY `sessions_last_activity_index` (`last_activity`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `nhansu_user_id` (`nhansu_user_id`),
  ADD UNIQUE KEY `email` (`email`),
  ADD KEY `idx_nhansu_id` (`nhansu_user_id`),
  ADD KEY `idx_role` (`role`),
  ADD KEY `idx_email` (`email`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `apps`
--
ALTER TABLE `apps`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `app_activity_logs`
--
ALTER TABLE `app_activity_logs`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=45;

--
-- AUTO_INCREMENT for table `app_admobs`
--
ALTER TABLE `app_admobs`
  MODIFY `id` smallint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `app_members`
--
ALTER TABLE `app_members`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `app_statuses`
--
ALTER TABLE `app_statuses`
  MODIFY `id` tinyint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

--
-- AUTO_INCREMENT for table `app_stores`
--
ALTER TABLE `app_stores`
  MODIFY `id` tinyint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `kanban_attachments`
--
ALTER TABLE `kanban_attachments`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `kanban_comments`
--
ALTER TABLE `kanban_comments`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `kanban_folders`
--
ALTER TABLE `kanban_folders`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;

--
-- AUTO_INCREMENT for table `kanban_lists`
--
ALTER TABLE `kanban_lists`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;

--
-- AUTO_INCREMENT for table `kanban_priorities`
--
ALTER TABLE `kanban_priorities`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT for table `kanban_spaces`
--
ALTER TABLE `kanban_spaces`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;

--
-- AUTO_INCREMENT for table `kanban_statuses`
--
ALTER TABLE `kanban_statuses`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=165;

--
-- AUTO_INCREMENT for table `kanban_subtasks`
--
ALTER TABLE `kanban_subtasks`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `kanban_tasks`
--
ALTER TABLE `kanban_tasks`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=36;

--
-- AUTO_INCREMENT for table `kanban_task_activities`
--
ALTER TABLE `kanban_task_activities`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=57;

--
-- AUTO_INCREMENT for table `migrations`
--
ALTER TABLE `migrations`
  MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `role_permissions`
--
ALTER TABLE `role_permissions`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=71;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `apps`
--
ALTER TABLE `apps`
  ADD CONSTRAINT `apps_ibfk_1` FOREIGN KEY (`status_id`) REFERENCES `app_statuses` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `apps_ibfk_2` FOREIGN KEY (`store_id`) REFERENCES `app_stores` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `apps_ibfk_3` FOREIGN KEY (`admob_id`) REFERENCES `app_admobs` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `app_members`
--
ALTER TABLE `app_members`
  ADD CONSTRAINT `app_members_ibfk_1` FOREIGN KEY (`app_id`) REFERENCES `apps` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_attachments`
--
ALTER TABLE `kanban_attachments`
  ADD CONSTRAINT `kanban_attachments_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `kanban_tasks` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_attachments_uploaded_by_foreign` FOREIGN KEY (`uploaded_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `kanban_comments`
--
ALTER TABLE `kanban_comments`
  ADD CONSTRAINT `kanban_comments_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `kanban_tasks` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_comments_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_folders`
--
ALTER TABLE `kanban_folders`
  ADD CONSTRAINT `kanban_folders_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_folders_space_id_foreign` FOREIGN KEY (`space_id`) REFERENCES `kanban_spaces` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_lists`
--
ALTER TABLE `kanban_lists`
  ADD CONSTRAINT `kanban_lists_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_lists_folder_id_foreign` FOREIGN KEY (`folder_id`) REFERENCES `kanban_folders` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_lists_space_id_foreign` FOREIGN KEY (`space_id`) REFERENCES `kanban_spaces` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_spaces`
--
ALTER TABLE `kanban_spaces`
  ADD CONSTRAINT `kanban_spaces_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `kanban_space_members`
--
ALTER TABLE `kanban_space_members`
  ADD CONSTRAINT `kanban_space_members_space_id_foreign` FOREIGN KEY (`space_id`) REFERENCES `kanban_spaces` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_space_members_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_statuses`
--
ALTER TABLE `kanban_statuses`
  ADD CONSTRAINT `kanban_statuses_space_id_foreign` FOREIGN KEY (`space_id`) REFERENCES `kanban_spaces` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_subtasks`
--
ALTER TABLE `kanban_subtasks`
  ADD CONSTRAINT `kanban_subtasks_assignee_id_foreign` FOREIGN KEY (`assignee_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_subtasks_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `kanban_tasks` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_tasks`
--
ALTER TABLE `kanban_tasks`
  ADD CONSTRAINT `kanban_tasks_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_tasks_list_id_foreign` FOREIGN KEY (`list_id`) REFERENCES `kanban_lists` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_tasks_priority_id_foreign` FOREIGN KEY (`priority_id`) REFERENCES `kanban_priorities` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `kanban_tasks_status_id_foreign` FOREIGN KEY (`status_id`) REFERENCES `kanban_statuses` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `kanban_task_activities`
--
ALTER TABLE `kanban_task_activities`
  ADD CONSTRAINT `kanban_task_activities_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `kanban_tasks` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_task_activities_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `kanban_task_assignees`
--
ALTER TABLE `kanban_task_assignees`
  ADD CONSTRAINT `kanban_task_assignees_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `kanban_tasks` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `kanban_task_assignees_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
