first commit
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# 다양한 강아지 사진 QA 결과 — 2026-09-23
|
||||
|
||||
기존 샘플 1장과 강아지 사진 4장으로 로컬 브라우저 QA를 진행했다. 강아지 사진 4장의 자동 AI 깊이 생성과 화면 출력을 확인했으며, **같은 사진을 다시 불러오면 수동 구도가 초기화되는 결함**을 재현했다. 어두운 얼굴과 작은 얼굴은 기본 Grid13에서 눈·코 식별성이 크게 낮아졌다. 두 마리 사진과 닥스훈트 사진은 Grid24에서 세부 구조가 더 남았지만, Ref1의 유리 표현을 충족했다고 판정하지는 않았다.
|
||||
|
||||
이번 작업의 산출물은 QA 기록·스크린샷·진단 JSON이다. 소스 코드, 셰이더, 스타일, 빌드 설정과 테스트 코드는 수정하지 않았다.
|
||||
|
||||
## 1. 검증 조건과 범위
|
||||
|
||||
| 항목 | 조건 |
|
||||
| --- | --- |
|
||||
| 실행 주소 | `http://127.0.0.1:5174/` |
|
||||
| 주 시각 기준 | Ref1. Ref2는 보조 비교 자료 |
|
||||
| 기본 효과 | Final / Mosaic / 조각 유리 |
|
||||
| 기본값 | Grid13, 굴곡 +1, 광택 0.30, Camera Offset 0.50, Depth Scale 0.25 |
|
||||
| 사진 구도 | 확대 1.00, 가로 0.00, 세로 0.00. 구도 재현 실험에서만 수동 변경 |
|
||||
| 고정값 | 색면 단순화 1, 굴절 1 |
|
||||
| 깊이 출처 | 기존 샘플: 수작업·절차적 근사. dog1–4: Depth Anything V2 Small AI 추정 |
|
||||
| 모바일 확인 | 브라우저 뷰포트 390×844, DPR 1. 실제 휴대폰 검증은 아님 |
|
||||
|
||||
AI 성공 문구와 깊이 출처 표시를 함께 확인했다. AI 완료 시 Final로 전환되므로 No Glass 비교는 추론 완료 후 선택했다. 사진 전환은 카메라를 초기화하지 않으므로 중앙 비교에는 시점 초기화를 사용했다. No Glass도 깊이로 변형된 사진 표면이며, 변형 없는 원본 RGB와 동일하다고 해석하지 않는다.
|
||||
|
||||
## 2. 사진별 결과
|
||||
|
||||
| 사진 | 기능 검증 | 시각 관찰 및 증거 |
|
||||
| --- | --- | --- |
|
||||
| 기존 샘플 | 수작업 깊이 출처, No Glass 중앙/드래그, Final Grid13 | [Grid13](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/sample-grid13.png). 초기 No Glass 캡처의 크롭은 아래 증거 제한 참고 |
|
||||
| dog1 · 잔디 위 흰 포메라니안 | 자동 AI 성공, No Glass, Final Grid13, 모바일 재검증 성공 | 흰 몸과 어두운 눈·코가 비교적 구분된다. [No Glass](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog1-noglass.png) · [Grid13](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog1-grid13.png) |
|
||||
| dog2 · 실내의 검정·갈색 강아지 | 자동 AI 성공, No Glass 중앙/드래그, Final Grid13 | 실루엣은 남지만 어두운 얼굴의 눈·코가 큰 색면에 섞인다. [No Glass](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog2-noglass.png) · [Grid13](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog2-grid13.png) |
|
||||
| dog3 · 후드 옷을 입은 두 마리 | 서버 복구 후 자동 AI 성공, No Glass, Grid13/24, Grid24 드래그 | Grid13에서 작은 얼굴 정보가 대부분 사라진다. Grid24는 얼굴·옷·배경 구조를 더 남기지만 블록화 인상이 강하다. [No Glass](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog3-noglass.png) · [드래그](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog3-grid24-drag.png) |
|
||||
| dog4 · 벤치 위 갈색 닥스훈트 | 자동 AI와 수동 AI 재생성 성공, No Glass, Grid13/24, 모바일 확인, 구도 대조 실험 | Grid13에서 갈색·어두운 얼굴 정보가 합쳐진다. Grid24는 구조를 더 남기며, 머리·오른쪽의 창문 모양 반사가 두드러진다. [No Glass](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog4-noglass.png) · [Grid13](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog4-grid13.png) · [Grid24](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog4-grid24.png) |
|
||||
|
||||
두 마리 사진의 같은 구도 비교:
|
||||
|
||||
| Grid13 | Grid24 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
이 평가는 저장된 출력의 시각 관찰이다. 출력이 블록처럼 보인다는 사실만으로 셰이더가 단순 저해상도 확대를 사용한다고 결론 내리지는 않는다. Grid24의 개선도 Ref1 재현 완료나 눈·코 식별성의 일반적인 보장을 뜻하지 않는다.
|
||||
|
||||
## 3. 재현된 결함: 같은 사진 재불러오기 시 구도 초기화
|
||||
|
||||
**우선 수정 대상.** 자동 구도 변경 금지 요구사항과 충돌하며, 사용자가 맞춘 확대·팬을 잃는다.
|
||||
|
||||
1. dog4를 불러오고 AI 생성 완료를 확인한다.
|
||||
2. 사진 구도를 확대 **1.50**, 가로 **+0.10**, 세로 **−0.10**으로 설정한다.
|
||||
3. 선택 사진을 바꾸지 않고 **선택한 테스트 사진 불러오기**를 누른다.
|
||||
4. AI 생성이 진행 중인 시점에 이미 **1.00 / 0.00 / 0.00**으로 초기화된다. AI 완료 후에도 초기값이 유지된다.
|
||||
|
||||
대조 실험에서는 같은 수동 구도에서 사진을 다시 불러오지 않고 **AI 깊이 생성**만 실행했다. 이때는 생성 중과 성공 후 모두 **1.50 / +0.10 / −0.10**이 유지됐다. 따라서 재현된 원인은 사진 로드 경로의 구도 초기화이며, AI 완료 단계가 구도 값을 초기화하는 것으로 보고하지 않는다.
|
||||
|
||||
| 조건 | 실행 전 | 실행 중 | 완료 후 |
|
||||
| --- | --- | --- | --- |
|
||||
| 같은 사진 재불러오기 | 1.50 / +0.10 / −0.10 | 1.00 / 0.00 / 0.00 | 1.00 / 0.00 / 0.00 |
|
||||
| 사진 재불러오기 없이 AI 재생성 | 1.50 / +0.10 / −0.10 | 1.50 / +0.10 / −0.10 | 1.50 / +0.10 / −0.10 |
|
||||
|
||||
실제 코드의 [src/main.ts:210](D:/project/behind_glass/src/main.ts:210)에서 `applyMedia()`가 `photoZoom = 1; photoPanX = 0; photoPanY = 0;`을 수행한다. 이 공통 경로는 다른 미디어 로드에도 적용될 가능성을 보여주지만, 브라우저에서 직접 재현한 범위는 **같은 테스트 사진 재불러오기**다.
|
||||
|
||||
증거: [변경 전](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/framing-before-reload.txt), [재불러오기 직후](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/framing-reload-immediate.txt), [재불러오기 완료](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/framing-reload-completed.txt), [AI만 재생성 중](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/framing-ai-regenerate-start.txt), [AI만 재생성 완료](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/framing-ai-regenerate-completed.txt).
|
||||
|
||||
| 사진 재불러오기 전 | 사진 재불러오기 후 |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
|
||||
수정 후에는 같은 사진 재불러오기, 다른 사진 입력, AI만 재생성, 명시적인 사진 구도 초기화 버튼을 구분해 검증해야 한다. 이번 QA에서는 수정하지 않았다.
|
||||
|
||||
## 4. 모바일 재검증과 최종 콘솔
|
||||
|
||||
초기 `dog1-mobile-grid13.png`에는 앱이 왼쪽에 작게 나타나는 이상 캡처가 있었다. 이후 dog4와 dog1을 390×844에서 다시 확인했을 때는 정상 크기의 세로 배치가 나타났으며, **이전 축소 현상은 재현되지 않았다**. 초기 캡처의 원인을 확정하거나 모바일 전체가 정상이라고 판정하지 않는다.
|
||||
|
||||
dog1을 새로 불러와 자동 AI 성공을 확인한 뒤 측정한 값:
|
||||
|
||||
| 측정값 | 결과 |
|
||||
| --- | --- |
|
||||
| `innerWidth × innerHeight` | 390 × 844 |
|
||||
| DPR / `visualViewport.scale` | 1 / 1 |
|
||||
| `scrollX / scrollY` | 0 / 0 |
|
||||
| 문서 `scrollWidth` | 375 — 측정 시 가로 넘침 없음 |
|
||||
| Canvas | x=0, y=200, 폭 375, 높이 506.390625 |
|
||||
| 조절 패널 `aside` | x=0, y=706.390625, 폭 375, 높이 966 |
|
||||
|
||||

|
||||
|
||||
추가 증거: [닥스훈트 모바일 화면](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog4-mobile-viewport.png) · [닥스훈트 전체 페이지](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/dog4-mobile-fullpage.png).
|
||||
|
||||
최종 콘솔 조회는 `error`·`warn` 수준, 최대 100건 범위에서 **빈 배열 `[]`**이었다. 이는 해당 탭에서 도구에 수집된 로그의 조회 결과이며, 모든 과거 세션이나 실제 휴대폰의 오류가 없음을 증명하지 않는다.
|
||||
|
||||
임시 뷰포트 오버라이드를 `reset()`으로 해제했고, 이후 크기는 **1280×720**이었다. 최종 사진은 dog1이며, Final / Mosaic / 조각 유리, Grid13, 굴곡 +1, 광택 0.30, Camera Offset 0.50, Depth Scale 0.25, 확대·팬 1/0/0을 DOM 값으로 확인했다. 상태는 `자동 AI 추정 depth를 적용했습니다.`였다. 측정값·최종 설정·콘솔 결과는 [final-diagnostics.json](D:/project/behind_glass/docs/qa-varied-dogs-2026-09-23/final-diagnostics.json)에 저장했다.
|
||||
|
||||
## 5. 기존 검사 결과와 테스트 유지보수 사항
|
||||
|
||||
다음은 **앞선 QA 단계에서 기록한 종료 코드 0 결과**다. 이번 마무리 단계에서는 소스 변경이 없어 재실행하지 않았다.
|
||||
|
||||
```text
|
||||
npm.cmd run build
|
||||
node scripts/test-camera-history.mjs
|
||||
node scripts/test-mosaic-continuity.mjs
|
||||
node scripts/test-mosaic-depth-distance.mjs
|
||||
node scripts/test-region-atlas-dark-sampling.mjs
|
||||
node scripts/test-region-axis-split.mjs
|
||||
node scripts/test-surface-reflection.mjs
|
||||
node scripts/test-window-reveal-coverage.mjs
|
||||
```
|
||||
|
||||
빌드 기록에는 500kB 초과 청크 경고가 있었다. 메인 JavaScript는 524.84kB, AI worker는 878.03kB였다. 이 수치만으로 로딩 시간이나 추론 성능을 판정하지 않는다.
|
||||
|
||||
**테스트 코드에서 확인한 유지보수 사항:**
|
||||
|
||||
- [test-region-axis-split.mjs:115](D:/project/behind_glass/scripts/test-region-axis-split.mjs:115)의 별도 JavaScript 모델은 안전한 어두운 palette 선택을 구현하며, [151행](D:/project/behind_glass/scripts/test-region-axis-split.mjs:151)은 안전한 색이 없으면 원본 RGB를 유지하는 동작을 검사한다. 최신 요구사항은 최종 픽셀의 원본 RGB 복원 분기를 제거하는 것이므로, 이 테스트 통과를 현행 셰이더의 눈·코 보호나 시각 품질 검증으로 사용할 수 없다.
|
||||
- **실행하지 않은** [ai-depth-smoke.mjs:69](D:/project/behind_glass/scripts/ai-depth-smoke.mjs:69)는 AI 완료 후 캡처를 `no-glass.png`로 저장한다. 관찰된 앱은 AI 완료 시 Final로 돌아가므로 파일명이 실제 모드를 보장하지 않는다. [105행](D:/project/behind_glass/scripts/ai-depth-smoke.mjs:105)은 사진 전환 후 AI 버튼 활성화·깊이 출처 숨김을 기대하는데, 현재 사진 입력은 자동 AI를 시작하고 성공 시 출처를 표시한다. 이 기대값도 현재 흐름에 맞춘 검토가 필요하다.
|
||||
|
||||
이 검사는 GPU 출력, 실제 AI 추론 성공, Ref1과의 시각적 유사성을 대신하지 않는다. `test-window-reveal-coverage`는 실제 클래스를 CPU raycasting으로 검사하지만 화면 렌더링 검사는 아니다.
|
||||
|
||||
## 6. 증거의 한계와 남은 검증
|
||||
|
||||
기존 수작업 샘플의 드래그 실험 기록에서는 카메라 X가 0.065일 때 코의 투영 X가 520.448→516.144, 왼쪽 눈은 493.625→490.020, 몸은 453.585→450.871로 이동했다. 이는 **수작업 샘플의 깊이별 투영 차이**를 지지한다. dog2의 No Glass 드래그와 dog3의 Final 드래그도 시각적 변화를 보였지만, AI가 추정한 코·눈 깊이의 정확도는 정량 측정하지 않았다.
|
||||
|
||||
초기 `sample-noglass-center.png`와 `sample-noglass-drag.png`는 stage 크롭을 사용했으나 출력에 레퍼런스 영역이 포함된 정황이 있어, 이 두 이미지의 크롭을 정밀 비교 근거로 사용하지 않는다. 이후 사진들은 일반 뷰포트 캡처를 사용했다.
|
||||
|
||||
dog3의 첫 로드 실패 시점에는 5174 포트의 개발 서버가 내려가 있었다. 서버를 다시 실행한 뒤 같은 사진의 로드와 AI 추론이 성공했다. **WebP 디코딩 결함으로 분류할 근거는 없다.**
|
||||
|
||||
실제 휴대폰 터치·자이로, 모바일 GPU와 FPS, 영상 플리커, 장시간 메모리·자원 해제, AI 중단/연속 입력의 모든 경합 상황, AI 깊이 정확도, 다른 유리 모드 전체 회귀는 이번 확인 범위에 포함되지 않는다. 샘플 사진과 QA 산출물을 외부에 게시하지 않았다.
|
||||
|
||||
현재 우선순위는 **사진 로드 시 수동 구도 보존 결함 수정**, 다음으로 **어두운 얼굴·작은 얼굴의 식별성과 Ref1 표현 재평가**, 그리고 **현행 동작과 어긋난 테스트 기대값 정리**다.
|
||||
Reference in New Issue
Block a user