-- =============================================================
-- PJT / CERT 요소 테이블 (AI 커리큘럼 생성용 콘텐츠 풀)
-- =============================================================

USE `C_DB`;
SET NAMES utf8mb4;

-- --------------------------
-- 1. PJT 요소 테이블
-- --------------------------
DROP TABLE IF EXISTS `pjt_elements`;
CREATE TABLE `pjt_elements` (
  `element_id`  INT AUTO_INCREMENT PRIMARY KEY,
  `name`        VARCHAR(200) NOT NULL COMMENT '학습 항목 이름',
  `tech_stack`  VARCHAR(50)  NOT NULL COMMENT '기술 스택 (Python, MySQL, FastAPI, JavaScript, AWS, MCP, Project)',
  `item_type`   ENUM('THEORY','PRACTICE','TEST') NOT NULL COMMENT '항목 유형',
  `difficulty`  INT NOT NULL DEFAULT 1 COMMENT '난이도 1~10',
  `description` TEXT DEFAULT NULL COMMENT 'AI 참고용 설명',
  `month_hint`  INT DEFAULT NULL COMMENT '권장 월 (1~6, 강제 아님)',
  `is_active`   TINYINT(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `pjt_elements` (`name`, `tech_stack`, `item_type`, `difficulty`, `description`, `month_hint`) VALUES
-- ===== Month 1: Python 기초 =====
('Python環境構築（インストール・IDE設定・仮想環境）', 'Python', 'THEORY', 1, 'Python開発環境のセットアップ方法', 1),
('Python環境構築 実践（Hello World・スクリプト実行）', 'Python', 'PRACTICE', 1, '環境構築の実践演習', 1),
('変数とデータ型（int, float, str, bool, type()）', 'Python', 'THEORY', 2, '基本データ型と変数の使い方', 1),
('変数とデータ型 実践（型変換・入出力）', 'Python', 'PRACTICE', 2, '変数操作の実践演習', 1),
('文字列操作（スライス・split・join・format）', 'Python', 'THEORY', 2, '文字列の操作方法', 1),
('文字列操作 実践（文字列処理課題）', 'Python', 'PRACTICE', 2, '文字列操作の実践演習', 1),
('演算子（算術・比較・論理・代入演算子）', 'Python', 'THEORY', 2, '各種演算子の使い方', 1),
('演算子 実践（計算プログラム）', 'Python', 'PRACTICE', 2, '演算子の実践演習', 1),
('条件分岐 if/elif/else（基本構文・ネスト）', 'Python', 'THEORY', 3, '条件分岐の基本構文', 1),
('条件分岐 実践（判定プログラム）', 'Python', 'PRACTICE', 3, '条件分岐の実践演習', 1),
-- ===== Month 2: Python 심화 =====
('リスト（作成・CRUD・スライス・リスト内包表記）', 'Python', 'THEORY', 3, 'リストの操作方法', 2),
('リスト 実践（データ処理課題）', 'Python', 'PRACTICE', 3, 'リスト操作の実践演習', 2),
('辞書とタプル（dict・tuple・keys/values/items）', 'Python', 'THEORY', 3, '辞書とタプルの使い方', 2),
('辞書とタプル 実践（データ管理課題）', 'Python', 'PRACTICE', 3, '辞書操作の実践演習', 2),
('繰り返し for/while（range・enumerate・break/continue）', 'Python', 'THEORY', 3, 'ループ処理の基本', 2),
('繰り返し 実践（反復処理課題）', 'Python', 'PRACTICE', 3, 'ループの実践演習', 2),
('関数の基礎（def・引数・戻り値・スコープ）', 'Python', 'THEORY', 4, '関数の定義と使い方', 2),
('関数の基礎 実践（関数設計課題）', 'Python', 'PRACTICE', 4, '関数の実践演習', 2),
('関数の応用（デコレータ・ラムダ・*args/**kwargs）', 'Python', 'THEORY', 5, '関数の高度な使い方', 2),
('関数の応用 実践（高階関数課題）', 'Python', 'PRACTICE', 5, '高階関数の実践演習', 2),
-- ===== Month 3: Python OOP + MySQL + FastAPI =====
('クラスとオブジェクト（class・self・__init__・継承）', 'Python', 'THEORY', 5, 'OOPの基本', 3),
('クラス 実践（クラス設計課題）', 'Python', 'PRACTICE', 5, 'OOPの実践演習', 3),
('ファイルI/O（open・read・write・with文・CSV/JSON）', 'Python', 'THEORY', 4, 'ファイル操作の基本', 3),
('ファイルI/O 実践（データファイル処理課題）', 'Python', 'PRACTICE', 4, 'ファイル操作の実践演習', 3),
('MySQL基礎（DB・テーブル・CRUD・SELECT/JOIN）', 'MySQL', 'THEORY', 5, 'MySQL基本操作', 3),
('MySQL基礎 実践（SQL課題）', 'MySQL', 'PRACTICE', 5, 'SQL実践演習', 3),
('FastAPI入門（ルーティング・リクエスト/レスポンス）', 'FastAPI', 'THEORY', 6, 'FastAPI基本概念', 3),
('FastAPI入門 実践（REST API構築）', 'FastAPI', 'PRACTICE', 6, 'FastAPI実践演習', 3),
('FastAPI + MySQL CRUD API', 'FastAPI', 'THEORY', 7, 'FastAPIとMySQLの連携', 3),
('FastAPI + MySQL CRUD API 実践', 'FastAPI', 'PRACTICE', 7, 'CRUD API実践演習', 3),
-- ===== Month 4: JavaScript + DOM =====
('JavaScript基礎（変数・型・演算子・制御文）', 'JavaScript', 'THEORY', 4, 'JavaScript基本文法', 4),
('JavaScript基礎 実践（基礎コーディング）', 'JavaScript', 'PRACTICE', 4, 'JS基礎の実践演習', 4),
('DOM操作（querySelector・イベント・要素操作）', 'JavaScript', 'THEORY', 5, 'DOM操作の基本', 4),
('DOM操作 実践（インタラクティブUI）', 'JavaScript', 'PRACTICE', 5, 'DOM操作の実践演習', 4),
('非同期処理（Promise・async/await・fetch API）', 'JavaScript', 'THEORY', 6, '非同期処理の基本', 4),
('非同期処理 実践（API連携）', 'JavaScript', 'PRACTICE', 6, '非同期処理の実践演習', 4),
('フロントエンドとバックエンドの連携（API設計・CORS）', 'JavaScript', 'THEORY', 7, 'フルスタック連携', 4),
('フロント-バック連携 実践（統合課題）', 'JavaScript', 'PRACTICE', 7, '統合課題の実践演習', 4),
('総合復習（Python-JS-FastAPI-MySQL）', 'JavaScript', 'TEST', 6, 'Month1-4の総合復習テスト', 4),
('総合復習テスト 実践', 'JavaScript', 'PRACTICE', 6, '総合復習の実践演習', 4),
-- ===== Month 5: AWS + MCP + PJT設計 =====
('クラウド（AWS）入門（EC2・S3・概念）', 'AWS', 'THEORY', 6, 'AWS基本サービス', 5),
('AWS入門 実践（EC2セットアップ）', 'AWS', 'PRACTICE', 6, 'AWS実践演習', 5),
('AWS応用（RDS・IAM・セキュリティ）', 'AWS', 'THEORY', 7, 'AWSセキュリティとDB', 5),
('AWS応用 実践（デプロイ課題）', 'AWS', 'PRACTICE', 7, 'AWS応用の実践演習', 5),
('MCP入門（概念・ツール・サーバー構築）', 'MCP', 'THEORY', 7, 'MCP基本概念', 5),
('MCP入門 実践（MCPサーバー構築）', 'MCP', 'PRACTICE', 7, 'MCP実践演習', 5),
('プロジェクト設計（要件定義・設計書・WBS）', 'Project', 'THEORY', 7, 'プロジェクト設計方法', 5),
('プロジェクト設計 実践（設計書作成）', 'Project', 'PRACTICE', 7, '設計書作成の実践演習', 5),
('プロジェクト計画（スケジュール・タスク分割）', 'Project', 'THEORY', 7, '計画策定方法', 5),
('プロジェクト計画 実践（計画書作成）', 'Project', 'PRACTICE', 7, '計画書作成の実践演習', 5),
-- ===== Month 6: PJT 개발 + 테스트 =====
('プロジェクト開発①（バックエンド実装）', 'Project', 'THEORY', 8, 'バックエンド開発', 6),
('プロジェクト開発① 実践', 'Project', 'PRACTICE', 8, 'バックエンド実装の実践', 6),
('プロジェクト開発②（フロントエンド実装）', 'Project', 'THEORY', 8, 'フロントエンド開発', 6),
('プロジェクト開発② 実践', 'Project', 'PRACTICE', 8, 'フロントエンド実装の実践', 6),
('プロジェクト開発③（統合・デバッグ）', 'Project', 'THEORY', 8, '統合とデバッグ', 6),
('プロジェクト開発③ 実践', 'Project', 'PRACTICE', 8, '統合テストの実践', 6),
('テスト・デプロイ（単体/結合テスト・AWS公開）', 'Project', 'THEORY', 9, 'テストとデプロイ方法', 6),
('テスト・デプロイ 実践', 'Project', 'PRACTICE', 9, 'テスト・デプロイの実践', 6),
('発表準備・プレゼン（成果物まとめ・発表練習）', 'Project', 'THEORY', 8, '発表準備と練習', 6),
('模擬発表（プレゼン実践）', 'Project', 'TEST', 8, 'プレゼンテーション実践', 6);


-- --------------------------
-- 2. CERT 요소 테이블
-- --------------------------
DROP TABLE IF EXISTS `cert_elements`;
CREATE TABLE `cert_elements` (
  `element_id`        INT AUTO_INCREMENT PRIMARY KEY,
  `section_num`       INT NOT NULL COMMENT '章 번호 (1~22)',
  `unit_order`        INT NOT NULL COMMENT '장 내 학습 순서',
  `theory_sub_start`  INT NOT NULL COMMENT '이론 서브챕터 시작 번호',
  `theory_sub_end`    INT NOT NULL COMMENT '이론 서브챕터 끝 번호',
  `problem_start`     INT NOT NULL COMMENT '문제 시작 번호',
  `problem_end`       INT NOT NULL COMMENT '문제 끝 번호',
  `difficulty`        INT NOT NULL DEFAULT 1 COMMENT '난이도 1~10',
  `description`       TEXT DEFAULT NULL COMMENT 'AI 참고용 설명',
  `is_active`         TINYINT(1) DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `cert_elements` (`section_num`, `unit_order`, `theory_sub_start`, `theory_sub_end`, `problem_start`, `problem_end`, `difficulty`, `description`) VALUES
-- 第1章 基礎理論① (2 units)
(1, 1, 1, 4, 1, 6, 2, 'データの単位・基数変換'),
(1, 2, 5, 6, 7, 8, 3, '2進数の演算・シフト演算'),
-- 第2章 基礎理論② (4 units)
(2, 1, 1, 1, 1, 3, 3, '集合と論理演算'),
(2, 2, 2, 2, 4, 7, 3, '論理回路'),
(2, 3, 3, 4, 8, 9, 4, '計算式・オートマトン'),
(2, 4, 5, 5, 11, 14, 3, 'AI（人工知能）'),
-- 第3章 アルゴリズムとプログラミング (4 units)
(3, 1, 1, 1, 1, 5, 4, 'スタック・キュー・リスト・木構造'),
(3, 2, 2, 2, 6, 9, 5, '探索・整列アルゴリズム'),
(3, 3, 3, 3, 10, 14, 5, 'ハッシュ法・再帰'),
(3, 4, 4, 5, 15, 22, 4, 'プログラム言語・マークアップ言語'),
-- 第4章 コンピュータの構成要素 (3 units)
(4, 1, 1, 2, 1, 9, 4, 'プロセッサ・アドレス指定・MIPS'),
(4, 2, 3, 3, 10, 14, 5, 'キャッシュメモリ・メモリインタリーブ'),
(4, 3, 4, 5, 15, 19, 4, 'USB・入出力インタフェース・3Dプリンター'),
-- 第5章 システムの構成要素 (2 units)
(5, 1, 1, 3, 1, 10, 5, 'クライアントサーバ・冗長構成・RAID'),
(5, 2, 4, 4, 11, 13, 5, 'スループット・稼働率・MTBF/MTTR'),
-- 第6章 ソフトウェア (3 units)
(6, 1, 1, 1, 1, 13, 5, 'ジョブ管理・スプーリング・バッファ・割込み'),
(6, 2, 2, 3, 14, 17, 5, 'タスク管理・スケジューリング・仮想記憶'),
(6, 3, 4, 5, 18, 22, 4, 'ファイル管理・開発ツール・OSS'),
-- 第7章 ハードウェア (1 unit)
(7, 1, 1, 2, 1, 7, 4, '半導体メモリ・論理回路'),
-- 第8章 UI/マルチメディア (1 unit)
(8, 1, 1, 3, 1, 11, 3, 'ユーザーインタフェース・マルチメディア'),
-- 第9章 データベース (3 units)
(9, 1, 1, 3, 1, 7, 5, 'データベースの基本・関係DB・正規化'),
(9, 2, 4, 4, 8, 15, 6, 'SQL・データベース操作'),
(9, 3, 5, 6, 16, 22, 6, 'トランザクション管理・排他制御'),
-- 第10章 ネットワーク (4 units)
(10, 1, 1, 1, 1, 6, 5, '伝送速度・回線利用率・パリティ'),
(10, 2, 2, 4, 7, 12, 6, 'IPアドレス・サブネットマスク・IPv6'),
(10, 3, 5, 6, 13, 18, 6, 'DHCP・NAT/NAPT・DNS'),
(10, 4, 7, 8, 19, 28, 5, '中継装置・プロトコル・メール関連'),
-- 第11章 情報セキュリティ (5 units)
(11, 1, 1, 1, 1, 14, 6, '脅威・攻撃手法・マルウェア'),
(11, 2, 2, 2, 15, 20, 7, '暗号化・公開鍵/共通鍵・デジタル署名'),
(11, 3, 3, 3, 21, 25, 7, 'PKI・認証技術'),
(11, 4, 4, 5, 26, 30, 6, 'リスクマネジメント・セキュリティポリシー'),
(11, 5, 6, 6, 31, 42, 6, 'ファイアウォール・セキュリティ対策'),
-- 第12章 システム開発 (3 units)
(12, 1, 1, 3, 1, 6, 5, '開発手法・外部/内部設計・テスト'),
(12, 2, 4, 4, 7, 14, 6, 'テスト技法・レビュー'),
(12, 3, 5, 5, 15, 24, 5, '運用・保守'),
-- 第13章 ソフトウェア開発手法 (1 unit)
(13, 1, 1, 1, 1, 6, 5, 'アジャイル・DevOps・UML'),
-- 第14章 プロジェクトマネジメント (1 unit)
(14, 1, 1, 6, 1, 18, 5, 'PM基礎・WBS・EVM・品質管理'),
-- 第15章 サービスマネジメント (2 units)
(15, 1, 1, 4, 1, 9, 5, 'ITIL・SLA・障害管理'),
(15, 2, 5, 6, 10, 19, 5, 'システム監査・内部統制'),
-- 第16章 システム戦略 (2 units)
(16, 1, 1, 2, 1, 8, 4, '情報システム戦略・BPR'),
(16, 2, 3, 4, 9, 15, 4, 'ソリューションビジネス・クラウド'),
-- 第17章 システム企画 (1 unit)
(17, 1, 1, 2, 1, 10, 4, 'システム企画・要件定義・RFP'),
-- 第18章 経営戦略マネジメント (3 units)
(18, 1, 1, 2, 1, 9, 4, '経営戦略・SWOT・PPM'),
(18, 2, 3, 4, 10, 16, 5, 'マーケティング・技術戦略'),
(18, 3, 5, 6, 17, 23, 4, 'ビジネス戦略・イノベーション'),
-- 第19章 ビジネスインダストリ (2 units)
(19, 1, 1, 2, 1, 9, 4, 'e-ビジネス・EC・IoT'),
(19, 2, 3, 4, 10, 21, 4, 'エンジニアリング・AIビジネス'),
-- 第20章 企業活動 (3 units)
(20, 1, 1, 2, 1, 7, 4, '企業活動・経営組織'),
(20, 2, 2, 2, 8, 12, 4, '会計・財務・損益分岐点'),
(20, 3, 4, 6, 13, 21, 4, 'QC手法・OR・統計'),
-- 第21章 法務 (1 unit)
(21, 1, 1, 4, 1, 12, 4, '知的財産権・セキュリティ法規・労働法'),
-- 第22章 科目Bの合格戦略 (1 unit)
(22, 1, 1, 3, 1, 6, 5, '科目Bアルゴリズム・擬似言語対策');
