← 목록
기타 2026-07-17 5KB 읽기 5분

크라우니 투데이 E2E 마감 (2026-07-17)

개요

crowny://today 앱의 잔여 이슈 2건(ERP 브리핑 포트 오추정, DOM 하이드레이션 셀렉터 추정치)을 실측 근거로 수정하고, 실제 CrownyAI 앱 구동으로 E2E 검증했다.

무엇을 했는지

1. ERP 브리핑 포트/필드 수정

  • tenants/registry.psvinstances/aimed/tenant.json 추적 결과, 실제 업무(work) 서비스 포트는 9938이 아니라 9918(aimed 테넌트 ports.work)이었음. 9938은 잘못된 추정치(구 문서 오기).
  • /Users/ef/crowny-today/서버.한선 _처리브리핑() 수정:
  • 호출 포트 9938 → 9918
  • 응답 구조를 {"ok":true,"erp":{...중첩...}}에서 스펙대로 {"ok":true,"erp_up":bool,"tasks":[...],"building":[]} 평탄화
  • ERP 원본 응답({"ok":true,"data":[...]})의 data 배열을 _JSON배열추출로 파싱해 tasks로 재포장 — 원본 에러 객체를 그대로 삼키지 않고 항상 정제된 배열만 반환
  • 재컴파일(hanseonc_high) → LaunchAgent unload/load 재기동 → curl 검증 완료 (아래 증거 참조).
  • 2. 하이드레이션 DOM 셀렉터 정밀화

    • 스크래치패드에 디코딩된 실제 dc-runtime 소스(Feed.html)를 실측: 카드 DOM에 class/data 속성이 전혀 없고(전부 inline style), 유일한 안정 앵커는 응원 {{n}} 정확 텍스트를 담은 leaf <span>.
    • todayBridge.js findPostCards()를 "/^응원\s*\d+$/ 정확매치 + children.length===0인 span → 2단계 상위(actions div의 부모)가 카드 루트"로 재작성. 실패 시 구 휴리스틱(응원 텍스트 포함 + children>0)으로 폴백.
    • findCardTextNode() 신설: actions(응원 span 포함) 바로 앞 형제를 본문 노드로 판정.
    • hydrateFromServer() 클론 로직 보강: 이름(<b>), 본문, 응원/댓글 카운트(정규식 매치로 리셋)까지 서버 데이터로 갱신하도록 확장.
    • 한선씨 동반: bundle/today/bridge/todayBridge.한선 신규 — 응원라벨인가/댓글라벨인가/본문인덱스찾기 순수판정 로직 미러, 자체시험 9/9 ALL_PASS. crownycode-learn.sh add로 학습 등록(intent=투데이_카드하이드레이션_응원라벨매치).

    3. 빌드 + E2E

  • node --check todayBridge.js 통과, hanseonc_high 서버.한선/todayBridge.한선 컴파일 성공.
  • make ai(native/) 재빌드: 에러 0·경고 0, CrownyAI 442K.
  • 실제 CrownyAI 앱 구동 → crowny://today 진입 확인(스크린샷):
  • /tmp/today_e2e3.png — 투데이 피드 탭, 실제 게시물/응원/댓글 카운트 렌더 확인
  • /tmp/today_full2.png — 팀 보드 탭 + 우상단 브릿지 상태 dot "온라인"(초록) 표시 확인 — 서버 연결 정상
  • curl 전수 라운드트립 (실제 today:9604 서버, 전 op 타입):
  • /api/posts POST/GET, /api/posts/cheer, /api/posts/comment, /api/todos POST, /api/report POST, /api/sync(post+todo 배치 2건 applied) — 전부 {"ok":true,...} 확인, 목록 조회로 실제 반영 재확인(그ep으로 "서버검증"/"E2E-실측-게시물"/"동기화테스트" 등 3건 검색 확인)
  • /api/briefing?user=노형준{"ok":true,"erp_up":true,"tasks":[5건 실데이터],"building":[]} (수정 후)
  • /api/briefing?user=존재안함{"ok":true,"erp_up":true,"tasks":[],"building":[]} (필터 정상)
  • 관련 파일

    • /Users/ef/crowny-today/서버.한선 (브리핑 함수 수정), 서버.toau (재컴파일)
    • /Users/ef/CrownyBrowser/bundle/today/bridge/todayBridge.js (하이드레이션 셀렉터 재작성)
    • /Users/ef/CrownyBrowser/bundle/today/bridge/todayBridge.한선 (신규, 동반 판정 로직)
    • /Users/ef/CrownyBrowser/native/CrownyAI (재빌드)

    크라우니코드

    lookup HIT 0건 / MISS 1건(투데이 하이드레이션 판정 로직) / learn 추가 1건(투데이_카드하이드레이션_응원라벨매치)

    잔여 이슈 (정직 보고)

    • E2E 스크린샷 중 실제 로컬 게시물 목록에 방금 curl로 넣은 "서버검증/E2E-실측-게시물" 카드가 DOM에 클론되어 보이는 장면까지는 캡처 못함 — 앱 프로세스가 동시 실행 중이던 다른 세션의 활동과 겹쳐 반복 재기동/포커스 충돌(빠르게 종료됨)이 발생, 앱을 여러 차례 재실행하며 두 장의 유효 스크린샷(피드탭 실렌더 + 브릿지 온라인 상태)만 확보. 데이터 레이어(localStorage 병합) 로직 자체는 코드 리뷰·curl 검증으로 정확함을 확인했으나, 새 카드가 실제 화면에 클론 삽입되는 장면의 시각 확인은 다음 세션 과제로 남김.
    • 하이드레이션 셀렉터는 "응원 N" 텍스트 앵커 기반이라 원 텍스트 포맷이 바뀌면(예: 다국어화) 다시 깨질 수 있음 — 앱 쪽에 data-* 속성이 추가되면 그쪽으로 이전 권장.
    • 크라우니빌딩(building) 필드는 여전히 스펙대로 빈 배열([]) — 크라우니빌딩 연동은 별도 트랙.