{"schema_version": "1.0", "license": "공공데이터 가공물 및 자체 운영 로그 — 출처 표기 후 자유 이용", "citation": "자료: 한국주식데이터(aikstockdata.com) — 원천: 금융감독원 DART · 금융위원회 공공데이터포털", "설명": "정정·공지 원장 — 파이프라인 예외·검증 게이트 결과·값 승계 이벤트를 사람 개입 없이 자동 적립하는 단일 채널. 렌더 페이지는 /notices.html.", "문형": "각 항목은 사실(무슨 일이 있었나)·조치(무엇을 했나)·영향(이용자에게 어떤 의미인가) 3요소 고정.", "항목": [{"키": "2026-07-17-weekend-guard", "일자": "2026-07-17", "구분": "데이터 정비", "사실": "게시 아카이브에 주말(휴장일) 날짜의 스냅샷 파일이 포함되어 있었음. 휴장일 파일은 직전 거래일 수치의 복제라 '거래일 스냅샷만 보유' 원칙과 어긋남.", "조치": "주말 파일을 게시 목록에서 제외하고, 수집·파이프라인·게시 목록 3단계에 거래일 가드를 추가함(2026-07-17 적용).", "영향": "데이터 다운로드 목록과 data/index.json 에는 거래일 스냅샷만 노출됨. 목록에 없는 날짜는 휴장일이거나 수집 시작 이전 기간임."}, {"키": "2026-07-17-zero-to-null", "일자": "2026-07-17", "구분": "데이터 정비", "사실": "원천(KIS) API 가 결측을 0으로 반환해, 게시본에 현재가 0원·PER 0배 등 실제로 존재하지 않는 값이 결측 대신 표기되어 있었음.", "조치": "단일 게시 관문(publish_clean)에서 0을 결측(null)으로 정규화하고, CSV·latest.json·HTML 세 게시 경로에 동일 적용함(2026-07-17 적용).", "영향": "적용일 이후 게시본에서 null 은 '데이터 미제공'을 뜻하며 0과 구분됨. 적용일 이전 원시 CSV 에는 0으로 남은 결측이 있을 수 있어 분석에는 latest.json 사용을 권장함."}, {"키": "2026-07-17-schema-31-49", "일자": "2026-07-17", "구분": "스키마", "사실": "일별 CSV 스키마가 수집 항목 확장으로 진화해 옴 — 2026-07-04까지 31컬럼, 2026-07-05부터 49컬럼. 2026-07-17 정비로 '가격기준일' 등 검증용 컬럼이 추가 확장됨.", "조치": "날짜별 컬럼 수를 data/index.json 에 명시하고, 컬럼 위치 하드코딩 대신 헤더 이름 기준 파싱을 안내함.", "영향": "과거 날짜 CSV 는 최신본과 컬럼 구성이 다를 수 있음. 헤더 이름 기준으로 파싱하면 전 기간 호환됨."}, {"키": "gate-fail-20260720", "일자": "2026-07-20", "기록시각_KST": "2026-07-20 12:05", "구분": "게이트", "사실": "2026-07-20 12:05 배포 게이트 검사에서 1개 항목 실패(G4). 대표 사례: 주말 태그 CSV 게시: universe_20260704.csv", "조치": "deploy 단계를 중단하고 직전 성공본을 유지함. 원인 수정 후 다음 자동 실행에서 재검사함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 검사 통과 후 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260720-validate", "일자": "2026-07-20", "기록시각_KST": "2026-07-20 12:05", "구분": "파이프라인", "사실": "2026-07-20 12:05 실행이 validate 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "ledger-20260720", "일자": "2026-07-20", "기록시각_KST": "2026-07-20 13:53", "구분": "파이프라인", "사실": "2026-07-20 수집에서 재수집 이후에도 시세·시가총액 결측 2종목이 남음(전체 1500종목).", "조치": "직전 정상값 승계 1건('가격기준일'에 원장 날짜 표기), 원장에 정상값이 없는 1건은 null 게시. 상세 목록은 logs/ledger_events_20260720.txt.", "영향": "승계 종목의 시세는 당일이 아닌 '가격기준일' 시점 값이며, null 종목은 현재가·시가총액이 비어 있음."}, {"키": "ledger-20260721", "일자": "2026-07-21", "기록시각_KST": "2026-07-21 14:50", "구분": "파이프라인", "사실": "2026-07-21 수집에서 재수집 이후에도 시세·시가총액 결측 2종목이 남음(전체 1500종목).", "조치": "직전 정상값 승계 1건('가격기준일'에 원장 날짜 표기), 원장에 정상값이 없는 1건은 null 게시. 상세 목록은 logs/ledger_events_20260721.txt.", "영향": "승계 종목의 시세는 당일이 아닌 '가격기준일' 시점 값이며, null 종목은 현재가·시가총액이 비어 있음."}, {"키": "compliance-block-20260721", "일자": "2026-07-21", "기록시각_KST": "2026-07-21 16:21", "구분": "게이트", "사실": "2026-07-21 16:21 준법감시 게이트 검사에서 위반 6건 검출. 대표 사례: R1 기준시각 배지 없음: changes.html", "조치": "deploy 단계를 중단하고 직전 성공본을 유지함. 원인 수정 후 다음 자동 실행에서 재검사함.", "영향": "사이트는 직전 성공 시점의 게시본으로 계속 서빙되며, 검사 통과 후 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260722-sanity", "일자": "2026-07-22", "기록시각_KST": "2026-07-22 22:50", "구분": "파이프라인", "사실": "2026-07-22 22:50 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260723-sanity", "일자": "2026-07-23", "기록시각_KST": "2026-07-23 18:10", "구분": "파이프라인", "사실": "2026-07-23 18:10 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260724-sanity", "일자": "2026-07-24", "기록시각_KST": "2026-07-24 19:30", "구분": "파이프라인", "사실": "2026-07-24 19:30 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260727-sanity", "일자": "2026-07-27", "기록시각_KST": "2026-07-27 19:30", "구분": "파이프라인", "사실": "2026-07-27 19:30 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260728-sanity", "일자": "2026-07-28", "기록시각_KST": "2026-07-28 19:30", "구분": "파이프라인", "사실": "2026-07-28 19:30 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260729-sanity", "일자": "2026-07-29", "기록시각_KST": "2026-07-29 19:30", "구분": "파이프라인", "사실": "2026-07-29 19:30 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260730-sanity", "일자": "2026-07-30", "기록시각_KST": "2026-07-30 19:30", "구분": "파이프라인", "사실": "2026-07-30 19:30 실행이 sanity 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}, {"키": "gate-fail-20260731", "일자": "2026-07-31", "기록시각_KST": "2026-07-31 19:30", "구분": "게이트", "사실": "2026-07-31 19:30 배포 게이트 검사에서 1개 항목 실패(W2). 대표 사례: 파일 있으나 목록에 없음: universe_20260706.csv", "조치": "deploy 단계를 중단하고 직전 성공본을 유지함. 원인 수정 후 다음 자동 실행에서 재검사함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 검사 통과 후 최신 데이터로 갱신됨."}, {"키": "pipeline-fail-20260731-validate", "일자": "2026-07-31", "기록시각_KST": "2026-07-31 19:30", "구분": "파이프라인", "사실": "2026-07-31 19:30 실행이 validate 단계에서 실패함(exit 1).", "조치": "해당 실행을 중단하고 직전 성공본을 유지함. 예정된 다음 시각에 자동 재시도함.", "영향": "사이트는 직전 성공 시점의 데이터로 계속 서빙되며, 재시도가 성공하면 그 시점부터 최신 데이터로 갱신됨."}]}