Commit Graph

443 Commits

Author SHA1 Message Date
5eaca69f78 refactor(subscription): 공고 카드/상세/캘린더 컴포넌트 추출
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 17:58:58 +09:00
d2dae3d042 refactor(subscription): StatusBadge 컴포넌트 추출 + 스모크
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 17:51:15 +09:00
d82550610a refactor(subscription): 상수·순수헬퍼를 subscriptionUtils로 추출 + 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 17:47:08 +09:00
15cb30311e docs(refactor): 기능 모듈 구조 컨벤션 + Subscription 분해 설계·계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 17:43:09 +09:00
1b4fba3c19 merge: 실매물 매물·안전마진 UI (/realestate/listings) FE
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:58:22 +09:00
f7c7394a94 fix(listings): ToolsTab 제출·disclaimer 테스트 추가 + 수집 완료 폴링
최종 리뷰 반영: (1) ToolsTab 제출→중첩객체·disclaimer 렌더 경로 테스트
2건 추가(최고위험 미검증 경로), (2) handleCollect의 고정 3초 타임아웃을
collected_at 변경 기반 폴링(최대 60s)으로 교체 — 진행 중을 완료로 오표시
하지 않도록.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:39:34 +09:00
690964c994 feat(listings): Listings shell+스타일+라우트 배선 + 청약 교차링크 + 문서
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:28:27 +09:00
17b1348f5d fix(listings): 조건 로드 실패 시 무한 로딩 대신 에러 표시
리뷰 지적: getListingsCriteria 실패 시 c=null로 남아 '불러오는 중…' 가
영구 표시되고 에러 메시지가 unreachable. 가드를 loading/!c로 분리해
실패 시 에러를 렌더 + 실패 경로 테스트 추가.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:23:40 +09:00
0431ae6887 feat(listings): 조건 편집 탭(equity·소득 포함 부분 PUT) + 스모크
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:17:12 +09:00
9fc023da9d feat(listings): 판정 도구 탭(안전마진 체커+예산 계산기, disclaimer) + 스모크
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:11:39 +09:00
ffd306859f test(listings): 매물 빈-상태 스모크 assertion을 버튼과 겹치지 않게 좁힘
리뷰 지적: /매물이 없습니다|수집/ 의 |수집 이 항상 존재하는 '수집 실행'
버튼과 매치 → 빈-상태 미검증. /매물이 없습니다/ 로 좁혀 실제 검증.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 16:08:53 +09:00
4869e3c97a feat(listings): 매물 목록 탭(필터·판정 tier·수집) + 스모크 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 14:40:38 +09:00
ed81f73f13 feat(listings): realestate 실매물/안전마진/예산 API 헬퍼 8종
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 14:37:22 +09:00
a5e33b70df feat(listings): 실매물 tier/금액 순수 헬퍼 + 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 14:32:52 +09:00
a087c3d1e5 docs(listings): 실매물 매물·안전마진 설계·구현 계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 14:31:41 +09:00
dec696b16e feat(stock): 매매알람 카드에 reason(근거 문자열) 표시
BE가 /api/stock/trade-alerts에 reason 필드 추가(사람이 읽는 조건별 근거,
텔레그램 💡 라인과 동일). AlertCard가 reason을 primary 내러티브로,
formatDetail(detail)을 secondary 숫자 근거로 표시. reason은 문자열이라
안전(detail 객체는 formatDetail로 이미 크래시 방지).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-09 13:05:57 +09:00
d57f9b9b65 fix(stock): 매매알람 detail 객체 렌더 크래시(React #31) 방지
/api/stock/trade-alerts의 alerts[].detail은 condition별 가변 객체
({ma50,ma200,severity} 등)인데 JSX 자식으로 직접 렌더 → React #31로
페이지 크래시(워커가 실제 알람 발화 시작하며 발현, BE msg #17).

formatDetail 헬퍼 추가: 객체를 안전 문자열로 변환(알려진 키 한글 라벨,
*_pct 퍼센트, null 값 스킵, 미정의 키도 원문 폴백 — 스키마 가정 없음).
AlertCard가 detail 대신 formatDetail(detail) 렌더.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 22:06:11 +09:00
970c8164e0 docs: README에 관심종목 탭(실시간 매매 알림 연동) 반영
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 11:08:18 +09:00
cb15ae1d24 merge: 관심종목 탭 (watchlist CRUD + 매매 시그널 알림) FE
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 10:04:55 +09:00
6bf36f34f0 fix(stock): watchlist 렌더 크래시 가드·성공 시 폼 리셋·정렬 테스트
- watchlistUtils: Object.hasOwn 가드 + Object.freeze (프로토타입 키 → 함수 반환 방지)
- useWatchlist.add: boolean 반환 + 재진입 가드; 성공 시에만 폼 리셋
- byFiredAtDesc 멀티 알림 정렬 테스트 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 02:13:59 +09:00
3656ee9a59 feat(stock): 거래 데스크에 관심종목 탭 등재 + API 문서 갱신
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 02:03:46 +09:00
e8091a0391 feat(stock): WatchlistTab 컴포넌트 + wl-* 스타일 + 스모크 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 01:58:24 +09:00
a52fd0db8f feat(stock): watchlist API 헬퍼 + useWatchlist 훅(낙관적 CRUD·알림) + 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 01:49:44 +09:00
ae33aa4def feat(stock): 관심종목 탭 순수 헬퍼(watchlistUtils) + 테스트
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 01:44:34 +09:00
3e73077b29 docs(stock): 관심종목 탭 설계·구현 계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS
2026-07-03 01:43:03 +09:00
6e415b3e45 feat(infra): NAS↔Windows 워커 파이프라인 관측 페이지 /infra (Three.js)
분산 워커 관측 Part C — useNodeStatus 3초 폴링 훅 + statusVisual 색/라벨 매핑
+ 2D 워커 카드 그리드 + raw three.js 파이프라인 시각화(정상=시안 파티클 흐름 /
busy=가속 / paused=앰버 정지 / degraded=주황 / down=빨강 끊김, Redis 끊김=버스 빨강).
GET /api/agent-office/nodes(Part B) 소비. r3f 대신 기설치 three 직접 사용.
WebGL 미지원 시 카드 폴백 + 3D/그리드 토글. vitest 10 passed, build OK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LV86jBozkNhSFXJA412fq
2026-06-30 10:39:08 +09:00
696c2ade15 merge: co-gahusb FE 클라이언트 배선 (.mcp.json + 역할 블록)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 07:51:34 +09:00
c024087c94 feat(co-gahusb): FE 클라이언트 배선 (.mcp.json + 역할 블록)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 07:34:31 +09:00
d0bf5fdd50 merge: 에이전트 횡단 오버사이트 타임라인 (agent-office 우측 기본 패널)
- agentActivity API 헬퍼 + useActivityFeed 훅 (필터/페이지네이션/WS refresh/stale 가드)
- ActivityItem/ActivityFilters/ActivityTimeline 컴포넌트
- AgentOffice 우측 기본 패널을 횡단 타임라인으로 교체
- 15 테스트 추가 (총 97 통과)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 09:18:47 +09:00
f6b8badd12 style(agent-office): designer 마감 — 타임라인 스파인·신호등 도트·level 색·펄스 강조
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 09:17:32 +09:00
833b590afb fix(agent-office): useActivityFeed stale 응답 무시 (필터 변경 중 in-flight 요청)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:14:03 +09:00
ce980b6eff style(agent-office): 횡단 타임라인 baseline 스타일 2026-06-11 09:09:53 +09:00
4dc70a6fc6 feat(agent-office): 우측 기본 패널을 횡단 타임라인으로 교체 2026-06-11 09:09:50 +09:00
57dfb3a3aa feat(agent-office): ActivityTimeline 컨테이너 (필터+무한스크롤) 2026-06-11 09:08:39 +09:00
1dc5bc3391 feat(agent-office): ActivityFilters (agent/type/status/days) 2026-06-11 09:07:17 +09:00
76e6fa5e69 feat(agent-office): ActivityItem (task/log 행 + 상태 뱃지) 2026-06-11 09:06:44 +09:00
ae6454ed37 feat(agent-office): useActivityFeed 훅 (페이지네이션·필터·refresh) 2026-06-11 09:05:01 +09:00
2afcf487a1 feat(agent-office): agentActivity API 헬퍼 추가 2026-06-11 09:04:19 +09:00
0bc2ef3b98 docs: 에이전트 횡단 오버사이트 타임라인 구현 플랜
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:48:57 +09:00
726ed77b31 docs: 에이전트 횡단 오버사이트 타임라인 설계 spec
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:44:44 +09:00
2a89d52634 merge: 인스타 슬레이트 패키지 다운로드 버튼
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 13:39:49 +09:00
6958714021 fix: 다운로드 버튼 hover 색상 일관성 (a.ic-btn color inherit)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 13:06:52 +09:00
52677c606a feat: 인스타 슬레이트 패키지 다운로드 버튼
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 13:03:43 +09:00
96191b2d7c merge: 주식 보유종목 인텔리전스 탭 (액션·이슈·포트건강·현재가)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 22:56:14 +09:00
5b29854251 feat: 보유종목 탭 현재가 표시 + 빈상태 문구 수정
- HoldingCard 헤더에 h.close 현재가 표시 (null guard, toLocaleString 천단위)
- Stock.css에 .hi-card__close 추가 (#94a3b8, 11px, margin-right 4px)
- !loading && !error && !data 분기 메시지 '데이터를 불러오는 중입니다.' → '데이터가 없습니다.'

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 22:38:11 +09:00
597e6504e1 feat: 주식 보유종목 인텔리전스 탭 (액션·이슈·포트건강)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 22:32:35 +09:00
b15cbbb1b6 merge: 로또 자율학습 탭 — 성적표·캘리브레이션·당첨조합 분석
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 21:09:11 +09:00
dacd01e6b9 feat: 로또 백테스트 탭 UI 폴리시 (1·2등 컬럼·빈 상태·차트 박스 CSS)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 18:13:32 +09:00
a57ac23064 feat: 로또 자율학습 탭 — 성적표·캘리브레이션·당첨조합 분석
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 18:07:03 +09:00
ecc1ab0954 fix(agent-office/LogTab): 최신 로그가 보이도록 스크롤을 맨 위로 이동 2026-05-29 07:42:37 +09:00