o2o-site-AEO/solution/backend/router/v1
hbyang af6e3799eb [feat] solution/backend: 에이전트가 사진을 내리고 대표를 지정한다
사진 쪽은 MediaService 에 list_media 하나뿐이었다 — 쓰기 경로가 아예 없었고
빌더 화면에서도 보기만 됐다. 서비스·라우터부터 열고 도구를 붙였다.

- crud: set_sort_order / service: hide_media · set_primary
- POST .../media/{id}/hide · /primary — ★ 에이전트 전용 뒷문을 만들지 않는다.
  그러면 빌더 화면이 그 기능을 못 쓰고 나중에 붙일 때 로직이 두 벌이 된다
- 도구 셋: list_photos(READ) · hide_photo · set_primary_photo(REVERSIBLE)

★ 대표 사진에 별도 칸을 두지 않았다. primary_media 가 '첫 장' 을 쓰고 목록이
ORDER BY sort_order 라, 지정은 sort_order 를 가장 작게 내리는 일이다 —
칸을 따로 두면 규칙이 둘이 되어 검색 결과의 그림과 화면 첫 장이 갈린다.

★ 내려도 지우지 않는다(REJECTED). origin_url·source_type 이 남아야 재게시
권리(DECISIONS 1-2) 결론이 났을 때 되짚을 수 있다.

★★ 업로드·교체는 만들지 않았다 — 미결 사항을 코드가 먼저 푸는 자리다.
테스트가 레지스트리에 upload·replace 가 없는지 실제로 검사한다.

test_agent_runtime 32 passed(사진 6건 추가).
전체 871 passed / 53 failed — 53 은 이번 변경 전과 동일. npm run lint 통과

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-28 14:16:08 +09:00
..
agent [chore] solution/backend: 카톡 요청에 callbackUrl·블록 이름 로그 — 콜백이 왜 안 먹는지 눈에 보이게 2026-09-22 17:01:56 +09:00
auth [refactor] solution/backend,frontend,postgres-init: 회사(테넌트) 제거 — 사장님 계정이 곧 스코프 2026-09-08 13:01:14 +09:00
fact feat(backend): fact 목록 응답에 intro/room_intro AI 요약 부착 2026-09-14 17:03:40 +09:00
faq 구조: 사장님(solution)과 내부 운영(admin)을 두 앱으로 가른다 2026-08-31 15:12:09 +09:00
job [feat] solution,postgres-init,docs: 생성 진행 상태 · 새로 만들기 존중 · 발행본 색인·파비콘 2026-09-15 17:29:27 +09:00
local [feat] solution: 캔버스도 서버가 만든 일정을 본다 — 발행본과 같은 목록 2026-09-11 11:58:09 +09:00
media [feat] solution/backend: 에이전트가 사진을 내리고 대표를 지정한다 2026-09-28 14:16:08 +09:00
place [feat] solution: 미니블로그 빌더 기능 확장 — 알림 이메일 분리·삭제·즉시발송·공급자 무관 생성 2026-09-22 08:37:38 +09:00
site [fix] solution/backend,frontend: 메일 '고쳐서 올리려면' 링크를 일회용 코드로 2026-09-28 09:00:02 +09:00
social [fix] solution: Threads OAuth 콜백 함수명이 React useCallback과 충돌 — 빌드 실패 2026-09-22 09:58:27 +09:00
validator [feat] solution: 미니 블로그·이용후기·예약요청 추가, /s/stay 목업·발행 사이트 UI 다수 수정 2026-09-18 09:03:18 +09:00