메뉴 표시를 켜도 분류가 열리지 않은 이유: 세 설정값의 진단 기록
카테고리 두 곳에서 활성 상태만 빠진 중간 백업을 확인했습니다. 메뉴·홈 표시와 직접 주소 조회의 조건을 비교하고, 0/0/0→0/1/1→1/1/1 상태 변화를 실제 프로젝트 기록으로 설명합니다.
실제 프로젝트 기록 기반 · AI 작성·검수 · 익명화 자료 포함 · 검수·수정 내용 보기
작성 방식과 자료 확인 기록
- 작성
- Startup Korea 편집팀
- 최초 발행
- 2026.09.12
- 최종 수정
- 2026.09.12
- 자료 검토
- Codex AI 검수 · 2026.09.12
- 재확인 권장일
- 2026.12.11
- 정정 요청
- 오류와 근거 자료 보내기
익명 콘텐츠 서비스 A의 2026년 9월 9일 공개 전환에는 카테고리 설정을 보완하는 후속 작업이 필요했습니다. 메뉴와 홈 노출 값을 켰지만 카테고리 활성 값이 빠져 있었기 때문입니다. 두 대상 분류의 최초 백업, 보정 직전 백업과 9월 12일 상태를 대조하면 이 차이가 드러납니다. Codex AI가 실제 코드·백업·작업 기록을 읽어 작성한 사례이며, 사람 인터뷰나 독립 감사, 사업 성과 분석은 아닙니다.
문제: ‘보이게 한다’는 설정이 세 곳에 있었습니다
이 서비스에는 카테고리를 활성화하는 값, 메뉴에 표시하는 값, 홈에 표시하는 값이 따로 있습니다. 최초 변경 전에는 대상 두 분류 모두 세 값이 0이었습니다. 공개 전환 후의 중간 백업에는 메뉴와 홈 값이 1로 바뀌었지만 활성 값은 0으로 남아 있었습니다. 두 노출 위치의 설정만 맞춰서는 카테고리 조회 조건이 충족되지 않았습니다.
당시 작업 기록에는 카테고리 주소가 404를 반환해 활성 상태를 보정한 내용이 있습니다. 다만 이 중간 404의 HTTP 원시 응답 파일은 보존돼 있지 않습니다. 따라서 ‘당시 응답을 이번에 다시 확인했다’고 쓰지 않습니다. 중간 설정값 0/1/1은 보존 백업에서 확인한 사실이고, 중간 404는 당시 작업 기록에 근거한 설명입니다.
판단: 저장된 값에서 화면과 주소의 조건까지 따라갔습니다
현재 코드에서 카테고리 주소 조회는 주소 문자열과 언어뿐 아니라 category_status=1을 요구합니다. 메뉴는 이 활성 값에 show_on_menu=1을 더해 대상을 고릅니다. 홈의 주제 목록은 활성 값과 show_on_homepage=1을 함께 확인합니다. 메뉴와 홈은 상위 분류인지, 현재 언어인지도 검사하므로 세 값만으로 모든 화면 노출이 결정되는 것은 아닙니다.
| 확인할 곳 | 이 프로젝트에서 확인한 주요 조건 | 빠질 때의 영향 |
|---|---|---|
| 카테고리 주소 조회 | 주소·언어 일치, category_status=1 | 분류 행이 있어도 조회 결과에서 제외 |
| 메뉴 | 활성 상태, show_on_menu=1, 상위 분류·언어 | 분류 링크가 메뉴 목록에서 제외 |
| 홈 주제 목록 | 활성 상태, show_on_homepage=1, 상위 분류·언어 | 홈의 주제 목록에서 제외 |
CodeIgniter Query Builder 문서는 여러 where() 호출이 AND 조건으로 연결됨을 설명합니다. 여기서는 활성 값 한 개가 0이면 다른 조건이 맞아도 해당 조회를 통과하지 못한다는 코드 해석에 사용했습니다. 세 필드의 이름과 역할 자체는 이 프로젝트가 정한 설계입니다.
과정: 글을 다시 발행하지 않고 분류 상태를 보정했습니다
카테고리를 찾지 못한 요청은 다른 공개 페이지나 글에도 해당하지 않으면 오류 응답으로 이어지는 구조였습니다. 그러므로 ‘데이터베이스에 행이 있다’는 조회만으로 주소가 열린다고 판단할 수 없었습니다. HTTP 표준의 404 정의는 서버가 요청 대상의 현재 표현을 찾지 못했거나 그 존재를 공개하지 않는 경우를 설명합니다. 404 자체가 데이터베이스 행 삭제의 증거인 것은 아닙니다.
보정 직전 백업에는 전체 글 4,580편과 공개 글 10편이 있었습니다. 최초 보관 글 4,570편에 새 글 10편을 더한 상태이므로 글 발행은 이미 끝났다는 단서였습니다. 후속 결과 기록에서는 기존 글 보관 처리 추가 0편, 이미 적용된 발행 묶음으로 표시됐고 두 대상 카테고리의 상태를 보정했습니다. 카테고리 문제를 이유로 글 10편을 다시 만드는 작업은 필요하지 않았습니다.
현재 발행 코드에는 두 대상 분류의 메뉴·홈·활성 값 중 하나라도 목표와 다르면 갱신 대상으로 잡고 세 값을 함께 맞추는 조건이 있습니다. 이 조건의 의미는 모든 분류를 켜라는 것이 아닙니다. 이번에 공개하기로 정한 대상에 한해 의도한 상태를 완성한다는 뜻입니다.
실측 결과: 두 분류 모두 세 값 1, 주소 응답 200
| 대상 | 최초 백업 | 활성 상태 보정 전 백업 | 9월 12일 관측 |
|---|---|---|---|
| 분류 A | 0 / 0 / 0 | 0 / 1 / 1 | 1 / 1 / 1, HTTP 200 |
| 분류 B | 0 / 0 / 0 | 0 / 1 / 1 | 1 / 1 / 1, HTTP 200 |
표의 순서는 활성 상태 / 메뉴 표시 / 홈 표시입니다. 현재 상태와 주소 응답의 관측 시각은 2026년 9월 12일 00:10:41 한국 시간입니다. 중간 백업의 설정값과 파일 체크섬은 같은 날 추가 확인했습니다.

중간 백업을 포함한 익명 측정 JSON 내려받기에서 관측 시각, 비교 방법과 자료의 한계를 확인할 수 있습니다.
재사용할 점검 순서와 한계
- 메뉴 누락, 홈 누락, 직접 주소 오류를 서로 다른 증상으로 기록합니다.
- 대상 행의 설정을 읽고, 주소 조회·메뉴·홈 코드가 요구하는 조건을 각각 적습니다.
- 글 발행 완료 여부와 분류 설정을 분리해 확인하고, 공개하기로 한 대상의 누락 조건만 보정합니다.
- 각 주소의 응답과 메뉴·홈의 실제 링크를 별도로 확인합니다. 부모 분류·언어·캐시가 다르면 설정값이 같아도 결과가 달라질 수 있습니다.
이번 자료로 확인한 현재 HTTP 200은 해당 시점에 두 주소가 응답했다는 결과입니다. 모든 언어, 권한과 캐시 조합을 시험했다는 뜻은 아닙니다. 다른 콘텐츠 시스템에는 동일한 세 필드가 없을 수 있으므로 이름을 복사하기보다 어떤 조건이 어느 화면과 조회에 사용되는지 먼저 확인해야 합니다.
검수와 수정 기록
아래는 실제로 수행한 AI 검수 기록입니다. 사람 검수자의 확인이나 현장 취재로 표시하지 않습니다. 출처의 설명, 자체 제안, 관측한 결과의 범위를 나누어 확인했습니다.
2026-09-12 00:26:08 · Codex AI 검수
최초 백업의 두 분류 0/0/0과 활성 보정 전 백업의 0/1/1을 직접 확인하고 두 백업의 체크섬을 검증했습니다. 현재 측정의 1/1/1·HTTP 200과 코드의 조회·메뉴·홈 조건을 연결했습니다. 중간 404는 당시 작업 기록이고 보존 HTTP 원시 파일이 없음을 분명히 구분한 AI 작성 사례입니다.
확인한 항목
- 백업 상태 대조통과
두 대상 분류의 최초 백업 category_status/show_on_menu/show_on_homepage=0/0/0, 보정 전 백업=0/1/1을 직접 읽었습니다. 중간 백업은 전체 4,580글·공개 10글이며 후속 결과는 추가 보관 처리 0·이미 적용된 묶음입니다.
- 코드 원인 대조통과
CategoryModel::getCategoryBySlug의 category_status=1과 언어 필터, HomeController::any의 카테고리·글·404 분기, 현재 magazine 메뉴와 홈의 상위 분류·언어·활성·해당 노출 조건을 읽었습니다.
- 현재 측정통과
category-data-v3.json의 현재 관측은 두 분류 모두 1/1/1 및 HTTP 200입니다. observed_at=00:10:41, 중간 백업 추가 대조=00:14:41을 구분했습니다.
- 404 증거 한계명시
중간 플래그는 보존 백업 근거, 중간 404는 당시 작업 기록으로 분리했습니다. 404 원시 응답이나 장애 화면 스크린샷이 보존됐다는 주장을 하지 않았습니다.
수정 내용
최초 발행 검수. 위 항목과 공개 증거를 확인했으며 발행 후 수정 기록은 아직 없습니다.
출처와 본문의 대조
-
CodeIgniter 4 User Guide — Query Builder Where 본문 대조 확인
본문의 주장 여러 where 호출은 AND 조건으로 연결돼 각 조건을 모두 충족한 행만 조회합니다.
확인 근거 Where의 Simple key/value method 설명과 복수 where 예제를 직접 읽었습니다.
적용 범위 category_status 등 세 필드의 업무 의미는 이 프로젝트 코드에서 확인한 설계이며 프레임워크의 공통 필수 필드가 아닙니다.
-
RFC 9110 — 15.5.5. 404 Not Found 본문 대조 확인
본문의 주장 404는 요청 대상의 현재 표현을 찾지 못했거나 존재를 공개하지 않는 경우를 나타냅니다.
확인 근거 15.5.5의 상태 의미와 일시적·영구적 부재를 구분하지 않는다는 설명을 직접 읽었습니다.
적용 범위 404 자체로 DB 행 삭제를 입증할 수 없습니다. 이 프로젝트의 중간404는 당시 작업 기록이며 원시 HTTP 응답 파일은 없습니다.
-
카테고리 조건 실제 측정 요약 재구성 이미지 본문 대조 확인
본문의 주장 실제 측정 요약을 화면으로 재구성한 이미지입니다. 과거 운영 화면이나 장애 당시 응답을 촬영한 자료가 아닙니다.
확인 근거 이미지 파일을 열어 백업·실측 요약과 일치하고 재구성 표시가 있는지 확인했습니다.
적용 범위 사이트명, 원문 제목·주소, 사용자 식별자와 서버 경로를 제외한 익명 수치만 표시합니다. 독립 감사나 사업 성과를 입증하지 않습니다.
-
최초·중간 백업과 현재 카테고리 상태 대조 익명 측정 JSON 본문 대조 확인
본문의 주장 현재 DB·HTTP 관측은 00:10:41, 중간 백업 추가 확인은 00:14:41 KST입니다. 0/1/1 설정값은 실제 백업에 근거하며 중간 404는 당시 작업 기록만 있습니다.
확인 근거 측정 JSON의 관측값과 시각을 본문 수치·설명과 대조했습니다.
적용 범위 사이트명, 실제 분류명, 원문 본문·제목·주소, 사용자·계정 정보와 비공개 백업 경로를 제외했습니다. 독립 감사나 사업 성과를 입증하지 않습니다.
출처와 확인 자료
아래 자료는 사실 확인과 추가 검토에 사용한 원문입니다. 본문의 해석과 조언은 Startup Korea 편집팀의 견해일 수 있습니다.
-
CodeIgniter 4 User Guide — Query Builder Where
공개 원문 자료
[원문 확인] Where의 Simple key/value method 설명과 복수 where 예제를 직접 읽었습니다. category_status 등 세 필드의 업무 의미는 이 프로젝트 코드에서 확인한 설계이며 프레임워크의 공통 필수 필드가 아닙니다.
-
RFC 9110 — 15.5.5. 404 Not Found
공개 원문 자료
[원문 확인] 15.5.5의 상태 의미와 일시적·영구적 부재를 구분하지 않는다는 설명을 직접 읽었습니다. 404 자체로 DB 행 삭제를 입증할 수 없습니다. 이 프로젝트의 중간404는 당시 작업 기록이며 원시 HTTP 응답 파일은 없습니다.
-
카테고리 조건 실제 측정 요약 재구성 이미지
공개 원문 자료
[원문 확인] 실제 공개 자료를 열어 본문의 수치와 표시 범위를 대조했습니다.
-
최초·중간 백업과 현재 카테고리 상태 대조 익명 측정 JSON
공개 원문 자료
[원문 확인] 실제 공개 자료를 열어 본문의 수치와 표시 범위를 대조했습니다.