🔍 개선 항목 조회 및 필터링
대시보드 아래에 위치한 필터 패널과 결과 테이블로, 등록된 모든 개선 항목을 다양한 조건으로 검색하고 조회할 수 있습니다.
필터 UI 구성
위치: 대시보드 차트 패널과 결과 테이블 사이
필터 패널은 5개의 입력 컨트롤로 구성된 2단 구조입니다:
- 1단 (가로 배치, grid 5열): 시작날짜 / 종료날짜 / 프로젝트 선택 / 상태 선택 / 검색 버튼
- 2단 (전체 폭): 제목·설명 키워드 검색 입력창
필터 유형별 상세 설명
📅 날짜 필터
$filter_date_from = $_GET['date_from'] ?? date('Y-m-d', strtotime('-30 days'));
$filter_date_to = $_GET['date_to'] ?? date('Y-m-d');
기본값은 최근 30일입니다. 시작일과 종료일을 각각 선택할 수 있습니다.
📁 프로젝트 필터
5개 프로젝트 중 선택: 아이엠플랫폼 SMS ainote nalara 기타
🔄 상태 필터
5가지 상태 중 선택: 개발중 완료 테스트중 배포됨 롤백
🔎 키워드 검색
WHERE (title LIKE '%{$filter_search}%'
OR description LIKE '%{$filter_search}%')
제목과 상세 설명 모두에서 키워드를 검색합니다.
결과 테이블 (8개 컬럼)
| 컬럼 | 출력 내용 | 비고 |
|---|---|---|
| 날짜 | substr($row['date'], 5) | MM-DD 형식 |
| 제목 | substr($row['title'], 0, 30) | 최대 30자까지 |
| 프로젝트 | 원문 그대로 | |
| 카테고리 | 원문 그대로 | 버그수정/기능추가/성능개선/보안/리팩토링/문서화 |
| 상태 | 색상 뱃지 | 개발중(파랑)/완료(초록)/테스트중(노랑)/배포됨(초록)/롤백(빨강) |
| 영향도 | 색상 뱃지 | 낮음(초록)/중간(노랑)/높음(빨강)/긴급(진한빨강) |
| 파일 | $row['files_changed'] . '개' | 수정된 파일 수 |
| 액션 | 버튼 3종 | 보기 / 수정 / 공지 |
액션 버튼
🔵 보기
admin_source_improvements_form.php?id=X&action=view → 읽기 전용 상세 페이지
🟡 수정
admin_source_improvements_form.php?id=X&action=edit → 편집 모드로 열기
🟢 공지
notice_ai-write.php?source_id=X → 공지사항으로 발행 (notice_id 없을 때만 표시)
페이지네이션
페이지당 20건씩 표시됩니다.
$per_page = 20;
$offset = ($page - 1) * $per_page;
$list_sql = "SELECT SQL_CALC_FOUND_ROWS *
FROM source_improvements {$where}
ORDER BY date DESC, id DESC
LIMIT {$offset}, {$per_page}";
페이지네이션 UI: 「처음」「이전」 [현재±2 숫자] 「다음」「마지막」
하단 요약: "총 N건 (현재페이지/전체페이지)"
전체 SQL 쿼리 구조
// WHERE 절 동적 구성
$where = "WHERE 1=1";
if ($filter_date_from) $where .= " AND date >= '{$filter_date_from}'";
if ($filter_date_to) $where .= " AND date <= '{$filter_date_to}'";
if ($filter_project) $where .= " AND project = '{$filter_project}'";
if ($filter_status) $where .= " AND status = '{$filter_status}'";
if ($filter_search) $where .= " AND (title LIKE '%{$filter_search}%'
OR description LIKE '%{$filter_search}%')";
// 총 건수
$count_sql = "SELECT COUNT(*) as cnt
FROM source_improvements {$where}";
// 목록 (최신순)
$list_sql = "SELECT SQL_CALC_FOUND_ROWS *
FROM source_improvements {$where}
ORDER BY date DESC, id DESC
LIMIT {$offset}, {$per_page}";