Skip to content

feat: 예측 결과 CSV 요약 리포트 유틸리티 추가 - #6

Merged
claude[bot] merged 1 commit into
developfrom
test/pr-machine-p2-bundle
Aug 12, 2026
Merged

claude[bot] merged 1 commit into
developfrom
test/pr-machine-p2-bundle

Conversation

@vapsnamheo-dev

Copy link
Copy Markdown
Owner

예측 결과 CSV의 위험도 평균·등급을 산출하고 텍스트로 저장하는 유틸리티입니다. 단위 테스트 3건 포함.

  • summarize_csv(path) — 평균/건수/등급(HIGH·MID·LOW) 반환
  • save_summary(result, out_dir) — summary.txt 저장

- summarize_csv: CSV의 위험도 컬럼 평균과 등급(HIGH/MID/LOW) 산출
- save_summary: 요약 결과를 텍스트 파일로 저장
- 단위 테스트 3건 추가
@claude claude Bot added ai:merged-by-machine PR머신이 자동 머지 완료 awaiting-promotion develop 머지 완료, main 승격 대기(=배포 전) labels Aug 12, 2026
@claude
claude Bot merged commit 6a91492 into develop Aug 12, 2026
2 checks passed
@claude

claude Bot commented Aug 12, 2026

Copy link
Copy Markdown

🤖 PR 머신 — 자동 머지 완료 ✅

P1 없음 + 모든 가드 통과로 자동 머지했습니다.

이 PR은 예측 결과 CSV를 읽어 위험도(risk) 평균과 등급(HIGH/MID/LOW/N/A)을 계산하는 summarize_csv와, 계산 결과를 텍스트 파일로 저장하는 save_summary 두 함수를 담은 report_util.py를 새로 추가합니다. 등급은 평균값이 0.75 초과면 HIGH, 0.35 초과면 MID, 그 이하면 LOW로 분류하며 유효한 데이터가 없으면 N/A를 반환합니다. 함께 추가된 테스트 3건(빈 CSV, 임계값 초과 CSV, 저장 결과 파일 검증)이 모두 통과했습니다.

🧪 머지 전 검증 통과: pytest -q

📋 P2 개선 항목

  • [P2] summarize_csv에서 파일 읽기 예외를 조용히 무시하고 정상 응답처럼 반환 Homework/ML_FactoryAutomation/src/report_util.py:8
    • open(path) 실패(FileNotFoundError, PermissionError 등)를 except Exception: pass로 삼켜 rows가 빈 리스트로 남고, 이후 로직이 이를 "빈 CSV"와 동일하게 처리해 {"count": 0, "grade": "N/A"}을 반환합니다. 호출자는 파일이 없어서 실패했는지 실제로 데이터가 없는지 구분할 수 없어 경로/권한 문제가 조용히 숨겨집니다.
    • ❓확인 요청(검증 전 수정 금지): 이 함수를 호출하는 배치/스케줄러 코드가 파일 존재 여부를 별도로 검증하는지 확인해 주세요. 그렇지 않다면 예외를 다시 던지거나 로깅 후 반환하도록 수정을 검토해야 합니다.
  • [P2] save_summary 기본 출력 경로가 Windows 전용 절대경로로 하드코딩됨 Homework/ML_FactoryAutomation/src/report_util.py:40
    • out_dir="C:/temp/pdm_reports"는 Windows 드라이브 표기입니다. CI(ubuntu-latest)를 포함한 Linux/Mac에서 기본값으로 호출하면 절대경로로 인식되지 않고 현재 작업 디렉터리 기준 상대경로 C:/temp/pdm_reports가 생성되어, 크래시 없이 예상치 못한 위치에 리포트가 쌓입니다.
    • ❓확인 요청(검증 전 수정 금지): 이 유틸리티가 Windows 로컬 환경 전용으로 쓰일 예정인지 확인해 주세요. 아니라면 상대경로 또는 환경변수 기반 기본값(예: os.getenv("PDM_REPORT_DIR", "./reports"))으로 바꾸는 걸 권장합니다.

참고 (P3)

  • [P3] float 파싱 실패를 조용히 스킵 Homework/ML_FactoryAutomation/src/report_util.py:20-24
    • 숫자가 아닌 값은 건너뛰는 것은 의도된 동작으로 보이나, 스킵된 행 수를 로깅하지 않아 데이터 품질 저하를 추적하기 어렵습니다.
  • [P3] 등급 임계값(0.75, 0.35)이 매직 넘버로 하드코딩됨 Homework/ML_FactoryAutomation/src/report_util.py:30-33
    • 임계값 변경 시 코드를 직접 찾아 고쳐야 합니다. 이름 있는 상수로 추출하면 의도가 명확해집니다.
  • [P3] save_summary의 파일 쓰기에 예외 처리 없음 Homework/ML_FactoryAutomation/src/report_util.py:45
    • 쓰기 권한이 없거나 디스크 공간이 부족한 경우 처리되지 않은 예외가 그대로 전파됩니다. 호출부가 이를 감당할 준비가 되어 있는지 확인이 필요합니다.

🔎 머지 전 점검

  • 파괴적 SQL(DROP/TRUNCATE/DELETE FROM/ALTER...DROP): 해당 없음
  • CI/CD 워크플로우(.github/workflows/**)·운영 설정 파일 변경: 없음 (변경 파일은 src/report_util.py, tests/test_report_util.py뿐)
  • 최근 머지된 PR이 고친 부분을 되돌리는 회귀 의심 변경: 신규 파일 추가라 해당 없음
  • 시크릿 스캔(sk-/ghp_/gho_/glpat-/AKIA/AIza/password=/secret=/token=/Bearer/PRIVATE KEY 등): 하드코딩된 실값 시크릿 없음
  • 민감 경로(sensitive_paths) 매칭: 없음 (db.py, secret, credential, .env*, config.py, requirements.txt, package.json, build.gradle 미해당)
  • 파일 겹침: 현재 다른 오픈 PR 없음 — 겹치는 항목 없음

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:merged-by-machine PR머신이 자동 머지 완료 awaiting-promotion develop 머지 완료, main 승격 대기(=배포 전)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant