# APP Icon Manifest

이 디렉터리는 ZERRO Figma의 `APP_아이콘` source board와 실제 앱 화면의 icon 사용 node를 연결하는 기준이다.

- Figma file: `EAOjCpKlwi1HMZi1miEeWP`
- Source board: `APP_아이콘` (`867:1558`)
- 기준 manifest: `manifest.json`
- screenshot 기반 검수: `review.html`
- tracked asset 검증: `pnpm --filter @zerro/mobile assets:verify`

## Review Rule

`manifest.json`의 `decisions[]`는 다음 상태를 사용한다.

- `confirmed`: usage layer와 source layer의 이름/크기/용도가 일치한다.
- `confirmed-rename-required`: source는 확정됐지만 현재 repo asset 이름이 Figma 의미와 다르다.
- `partially-confirmed`: 일부 role/screen은 확정됐고, 이름이 바뀐 duplicate usage는 render 비교가 필요하다.
- `needs-review`: APP_아이콘 source 후보는 있으나 usage/source가 generic `Icon`이거나 renamed group이라 PNG 비교가 필요하다.
- `needs-source`: Figma 화면 usage node는 확인됐지만 `APP_아이콘`에서 대응 source node를 아직 찾지 못했다.
- `confirmed-by-user-review`: screenshot review에서 사용자 확인을 통과했다.
- `fallback-custom-svg`: `APP_아이콘` source가 없으므로 Figma usage와 동일한 local SVG를 만들거나 동등한 vector icon을 SVG로 추출한다.
- `platform-or-custom-svg-fallback`: route/header affordance는 Expo Router 기본 header를 우선 사용하고, 화면 내부 control로 남아야 하면 local SVG를 만든다.
- `out-of-scope-system-ui`: iOS status bar처럼 APP runtime icon source bundle 대상이 아니다.

`scope.queriedNodes`는 이번 순차 조회에서 직접 확인한 화면이다. `scope.pendingScreenAnchors`는 문서 색인에는 있으나 아직 icon source 결정이 끝나지 않은 다음 조회 대상이다.

## Current Findings

- 배출자 더보기 메뉴 4종은 source와 usage가 정확히 매칭된다.
- 배출자 알림의 `[배출 신청 완료]` icon은 현재 코드의 `noticeCheck` 이름과 다르다. Figma source는 `Arrow / Arrow Down 6 Circle` (`867:2055`)이다.
- 처리자 home camera CTA는 `Iconex/Light/Camera` (`867:2188`)로 확정됐다.
- 2026-06-29 screenshot review에서 bottom tab, chat search/users, top sort 등 generic `Icon` link는 사용자 확인을 통과했다.
- chat search close-circle은 별도 `APP_아이콘` source가 없으므로 matching local SVG fallback으로 둔다.
- arrow button류는 Expo Router/header 기본 affordance를 우선 쓰고, 화면 내부 검색 결과 이동 control로 남으면 matching local SVG fallback을 만든다.
- 첨부된 Expo Vector Icons 문서 기준 `@expo/vector-icons`는 deprecated이므로, 이 아이콘들 때문에 새 runtime dependency를 추가하지 않는다. 필요하면 vector icon을 정적 SVG로 추출해 bundle한다.

## Tracked Asset Contract

확정된 APP icon은 이 디렉터리 아래에 role/common 단위로 추적한다.

```txt
apps/mobile/assets/icons/app/
  common/
  emitter/
  dispatcher/
  driver/
  processor/
  chat/
```

- Runtime 대상은 `.png`다.
- 검수 가능한 source는 같은 basename의 `.svg`로 함께 둔다.
- `common/zerro-logo.png`는 Figma source가 bitmap-only라 `asset-exceptions.json`에 명시한 예외로 둔다.
- `fallback-*` 항목은 `APP_아이콘` source node가 아니라 실제 화면 usage node에서 추출한 local SVG/PNG로 둔다.
- route/header affordance 성격의 아이콘은 Expo Router/native header를 우선하고, 화면 내부 control로 남는 경우에만 이 bundle의 fallback asset을 사용한다.

`manifest.json`의 `targetAssets`는 runtime PNG 목록이고, `trackedAssets`는 PR에 포함된 PNG/SVG 파일 전체 목록이다.

## Next Runtime Step

이 PR은 source-node 검수 결과와 실제 asset bundle을 먼저 고정한다. 후속 runtime PR에서 `src/features/**/assets.ts` import를 `assets/figma/*/ui`에서 이 디렉터리로 옮긴다.
