feat: JSONL 내보내기 도구 추가 - #800
Conversation
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
목적
NewsDOM JSON을 기사 단위 JSONL로 내보내는 CLI 도구를 추가합니다. malformed input을 조용히 건너뛰어 일부 기사만 내보내는 동작은 데이터 무결성 계약으로 인정하지 않습니다.
TDD / 현재 exact head
51af6d12992e2ee17673b7952d729ea21d70037f는 top-level JSON이 object라고 가정해.get()을 호출하고, page/article가 object가 아니면 조용히continue했습니다. 이 때문에 잘못된 문서가 TypeError/AttributeError로 새거나, 더 위험하게는 일부 malformed entry가 누락된 채 정상 export처럼 끝날 수 있었습니다.de5ef5ca77996646546fc15e48a6cd1626c21d0d는 top-level object, pages list, page object, articles list, article object 경계를 명시하고, 구조 검증 실패 시 기존 output 파일을 덮어쓰지 않아야 함을 요구합니다.bb4314f4e13d798a17d86a71fd9838869aeaa067는 output을 열기 전에 전체 구조를 검증하고 malformed entry를 fail closed로 거부합니다. CLI 예외 경계도 예상 가능한 file/encoding/value 오류만 처리하며 예상하지 못한 programming error를 성공적인 사용자 오류처럼 숨기지 않습니다.범위
이 PR은 JSON→JSONL export boundary만 소유합니다. NewsDOM parser/domain truth를 새로 정의하지 않고, 기존 article fields를 그대로 projection합니다. 구조적으로 유효한 기존 입력의 JSONL 형식과 UTF-8/
ensure_ascii=False동작은 유지합니다.검증 경계
현재 head는 source/test가 갱신된 직후이므로 predecessor의 로컬
100%주장을 current-head hosted evidence로 이전하지 않습니다. exact headbb4314f4e13d798a17d86a71fd9838869aeaa067의 repository/security/SAST/dependency/coverage/review checks를 새로 확인해야 합니다. Draft를 유지하며 queued/pending/absent check를 GREEN으로 간주하지 않습니다.Force push, destructive rebase, self-approval, no-op retrigger, gate weakening 없이 정상 descendant와 exact-head evidence만 사용합니다.