-- 020_project_groups.sql -- 신규 프로젝트 그룹 — 종류 · 예정노선 연도 구간 · 지정 업체 · 산림청 회사 (요구 345 · 347-8) -- -- 추가만 함 — 기존 행 = ROAD(임도설계) · 기존 칸 · 동작 그대로. -- 예정노선 시작 · 종료 누가거리는 기존 route_start_m · route_end_m 을 씀. USE aislo_db; ALTER TABLE projects ADD COLUMN IF NOT EXISTS project_kind VARCHAR(20) NOT NULL DEFAULT 'ROAD' COMMENT 'ROAD 임도설계 · PLAN 예정노선 · EROSION 사방설계 · STABILITY 안정성평가' AFTER road_type, ADD COLUMN IF NOT EXISTS project_year_end INT NULL COMMENT '사업연도 범위 끝(예정노선) — 시작은 project_year' AFTER project_year, ADD COLUMN IF NOT EXISTS design_speed_kph INT NULL COMMENT '설계속도(km/h · 예정노선 등록값)' AFTER project_year_end, ADD COLUMN IF NOT EXISTS source_project_id CHAR(36) NULL COMMENT '원본 프로젝트(E = 임도 · 임도 = 예정노선)', ADD COLUMN IF NOT EXISTS source_copied_at DATETIME NULL COMMENT '원본 복사 시각', ADD COLUMN IF NOT EXISTS source_fingerprint CHAR(40) NULL COMMENT '복사 때 원본 지문(sha1)'; CREATE TABLE IF NOT EXISTS plan_route_years ( project_id CHAR(36) NOT NULL COMMENT 'projects.id (PLAN)', year INT NOT NULL, start_x DOUBLE NULL, start_y DOUBLE NULL, end_x DOUBLE NULL, end_y DOUBLE NULL, epsg INT NULL, route_json JSON NULL COMMENT '분석 결과 노선', fingerprint CHAR(40) NULL COMMENT '노선 내용 지문(sha1)', confirmed_at DATETIME NULL, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (project_id, year), CONSTRAINT fk_plan_route_years_project FOREIGN KEY (project_id) REFERENCES projects (id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='예정노선 연도 구간'; CREATE TABLE IF NOT EXISTS plan_route_assignees ( id INT AUTO_INCREMENT PRIMARY KEY, project_id CHAR(36) NOT NULL COMMENT 'projects.id (PLAN)', year INT NOT NULL, company_id INT NULL COMMENT '등록 회사 — NULL 이면 수기 업체', company_name VARCHAR(255) NULL, email VARCHAR(255) NULL, notified_at DATETIME NULL, linked_project_id CHAR(36) NULL COMMENT '업체가 연결한 임도 프로젝트', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_plan_route_assignees_project (project_id, year), KEY idx_plan_route_assignees_company (company_id), CONSTRAINT fk_plan_route_assignees_project FOREIGN KEY (project_id) REFERENCES projects (id) ON DELETE CASCADE, CONSTRAINT fk_plan_route_assignees_company FOREIGN KEY (company_id) REFERENCES companies (id) ON DELETE SET NULL, CONSTRAINT fk_plan_route_assignees_linked FOREIGN KEY (linked_project_id) REFERENCES projects (id) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='예정노선 연도별 지정 업체'; -- 산림청 회사 — 메일 *.go.kr 가입자가 자동으로 붙음. INSERT IGNORE INTO companies (name, company_code, status) VALUES ('산림청', 'FOREST', 'ACTIVE');