📑 목차
등록 폼 개요 폼 섹션 구성 (5단계) 필수·선택 필드 AJAX 저장 플로우 클라이언트 유효성 검증 서버 저장 API

✏️ 새 개선 항목 등록하기

admin_source_improvements_form.php 페이지에서 새 개선 항목을 등록합니다. 총 23개 컬럼 중 17개 입력 필드가 폼에 노출됩니다.

페이지 모드: id 파라미터 유무로 결정 — 없으면 create (신규등록), 있으면 edit (수정)

폼 섹션 구성 (5단계)

📌 1. 기본 정보
  • 작업 날짜 (date, 필수)
  • 프로젝트 (select, 필수)
  • 카테고리 (select, 필수)
  • 상태 (select, 필수)
  • 제목 (text, 필수, 200자)
  • 상세 설명 (textarea)
🔧 2. 기술 상세
  • 수정 파일 수 (number)
  • 추가 라인 수 (number)
  • 삭제 라인 수 (number)
🌍 3. 배포 환경
  • DEV / TEST / PROD 체크박스 (복수 선택, 쉼표 구분)
📦 4. 배포 정보
  • 배포 일시 (datetime-local)
  • 배포자 (text)
⚡ 5. 영향도
  • 영향도 (select, 필수: 낮음/중간/높음/긴급)
  • 테스트 결과 (select: PASS/FAIL/SKIP)
  • 추가 메모 (textarea)

필수 항목 vs 선택 항목

필드구분타입
date필수date
project필수select (5개)
category필수select (6개)
status필수select (5개)
title필수text (200자)
impact_level필수select (4개)
description선택textarea
files_changed선택number
lines_added선택number
lines_deleted선택number
environments선택checkbox group → CSV
deployed_date선택datetime-local
deployed_by선택text
test_result선택select (3개)
notes선택textarea

AJAX 저장 플로우

submit event → e.preventDefault() → 유효성 검증(6개 필수 체크)
  → FormData 수집 → fetch POST → loading spinner 표시
  → /admin/ajax/source_improvements_save.php 호출
  → JSON 응답 {success: true/false, message: "..."}
  → 성공: alert(message) → admin_source_improvements.php 리다이렉트
  → 실패: alert('오류: ' + data.message)

클라이언트 유효성 검증 로직

const date = document.getElementById('date').value;
const project = document.getElementById('project').value;
const category = document.getElementById('category').value;
const status = document.getElementById('status').value;
const title = document.getElementById('title').value;
const impactLevel = document.getElementById('impact_level').value;

if (!date)        { alert('작업 날짜를 선택하세요.'); return; }
if (!project)     { alert('프로젝트를 선택하세요.'); return; }
if (!category)    { alert('카테고리를 선택하세요.'); return; }
if (!status)      { alert('상태를 선택하세요.'); return; }
if (!title)       { alert('제목을 입력하세요.'); return; }
if (!impactLevel) { alert('영향도를 선택하세요.'); return; }

서버 저장 API 상세

저장 엔드포인트: /admin/ajax/source_improvements_save.php

수신 데이터: FormData (multipart/form-data)

응답 형식: JSON {success: bool, message: string}

성공 시: window.location.href = 'admin_source_improvements.php' 로 리다이렉트

💡 팁: 등록 즉시 목록 페이지로 돌아가므로, 방금 등록한 항목이 최상단에 표시됩니다. 날짜가 오늘이면 「오늘 개선」 KPI 카드에 집계됩니다.