- users → user in SQL contexts (94 occurrences) - robeings → robeing in SQL contexts - user_preferences → user_preference (14 files) - slack_workspaces → slack_workspace in SQL contexts (17 files) All table names now correctly match PostgreSQL schema
7.9 KiB
7.9 KiB
프론트엔드 UI 대폭 개선 및 개인화 시스템 준비
작성일: 2025-08-25
작성자: happybell80
관련 서비스: frontend-customer, rb8001, skill-email, skill-news
오후 3시 00분
작업 배경
브리핑 시스템 분석:
- rb8001이 매일 오전 9시 슬랙 DM으로 브리핑 전송
- 이메일 섹션 빈약 (Gmail 토큰 만료 문제)
- 모든 사용자에게 동일한 콘텐츠
- 개인화 부재
개선 필요사항 도출:
- 사용자별 맞춤 콘텐츠
- 관심 키워드 기반 필터링
- 대화 히스토리 활용
- 프론트엔드 설정 UI 필요
오후 3시 30분
UI 대폭 개선 작업
1. ActivityPanel 재구성
파일: src/components/activity-panel.tsx
변경 전:
- 단순 활동 목록
- 메모리/CPU 표시
- 빠른 액션 버튼
변경 후:
// 새로운 구조
- 대화 기록 섹션 (세션별 카드)
- 수행한 작업 섹션 (슬랙 브리핑 등)
- 예정된 작업 섹션 (확장 가능한 설정 UI)
시간 표시 헬퍼 함수 추가:
function getRelativeTime(date: Date): string {
if (diffMins < 1) return '방금 전';
if (diffMins < 60) return `${diffMins}분 전`;
if (diffHours < 24) return `${diffHours}시간 전`;
if (diffDays < 7) return `${diffDays}일 전`;
return date.toLocaleDateString('ko-KR');
}
오후 3시 45분
2. SkillsItemsPanel 전면 개편
파일: src/components/skills-items-panel.tsx
스킬 탭 변경
- 진행도 바 제거: 레벨 도달 시 활성화 방식으로 변경
- 레벨별 순서 배치: Lv.1 ~ Lv.20
- 잠금 상태 시각화: 흐리게 + 자물쇠 아이콘
아이템 탭 재구성
카테고리 분리:
-
권한 설정 (상단 강조)
- Gmail 연동: 빨강→주황 그라디언트
- Slack 연동: 보라→핑크 그라디언트
- Calendar 연동: 파랑→시안 그라디언트
-
소모품 (3열 그리드)
- 경험치 부스터
- 스킬 포인트
- 에너지 충전
-
장비 (리스트)
- 메모리 확장
- 프로세서 업그레이드
오후 4시 00분
3. 개인화 설정 UI 구현
파일: src/components/activity-panel.tsx
예정된 작업 카드 확장 기능
구현 내용:
-
클릭 시 설정 패널 펼쳐짐
-
체크박스 설정:
interface TaskSettings { includeEmail: boolean; includeNews: boolean; includeCalendar: boolean; includeSlack: boolean; keywords: string[]; } -
키워드 관리:
- 태그 형태 표시 (#AI #React #DevOps)
- 추가: 입력창 + 엔터 또는 + 버튼
- 삭제: X 버튼
-
로컬 스토리지 저장:
localStorage.setItem('task_settings', JSON.stringify(settings));
목업 데이터
- 일일 브리핑: AI, 개발, React 키워드
- 주간 리포트: 프로젝트, 성과, KPI 키워드
오후 4시 15분
브리핑 시스템 구현 확인
rb8001 크론 엔드포인트
파일: rb8001/main.py:229
@app.post("/api/cron/daily-summary")
async def cron_daily_summary(request: Request):
# dm_skill.send_daily_summary_dm() 호출
DM 스킬
파일: rb8001/app/skills/dm_skill.py:384
- 사용자별 Gmail Primary 탭 이메일 5개 조회
- skill-news에서 뉴스 가져오기
- LLM 요약 생성
- Slack DM 전송
문제점 확인
- 하드코딩된 사용자 목록 (3명)
- skill-email DB 설정: auth_db → main_db 변경 필요
Gmail 토큰 자동 갱신 미구현(✅ 2025-08-27 해결완료)
오후 8시 00분
4. 로그인 상태별 UI 분기 처리
파일: src/pages/game-dashboard.tsx
구현 내용:
-
로그인 전 UI:
- LoginPromptCard: "로그인이 필요합니다" 메시지
- LockedSkillsPanel: 잠긴 스킬 미리보기
- 로그인 버튼 제거 (헤더 버튼만 사용)
-
로그인 후 UI:
- 정상적인 ActivityPanel
- 정상적인 SkillsItemsPanel
오후 9시 00분
5. 체력 시스템 구현
새 파일: src/contexts/health-context.tsx
주요 기능:
-
체력 관리:
- 최대 체력: 100
- 채팅 응답시: -5 체력
- 자동 회복: 1분마다 +2
- 로컬 스토리지 저장
-
체력 회복 아이템:
- 에너지 드링크: 체력 +20 - 에너지 충전: 체력 +50 - 클릭시 즉시 사용 및 수량 감소 -
체력바 UI:
- 위치: 입력창 바로 위 (황금비 38.2% 너비)
- 투명도 배경 (backdrop-blur)
- 색상: 빨강-핑크 그라디언트
오후 10시 00분
6. 브리핑 스케줄 개인화
파일: src/components/activity-panel.tsx
추가된 설정:
interface TaskSettings {
// 기존 설정...
scheduleType: 'everyday' | 'weekdays' | 'weekends' | 'custom';
scheduleDays?: string[]; // ['월', '화', '수', '목', '금', '토', '일']
scheduleTime: string; // '09:00' 형식
}
UI 개선:
- 매일/평일/주말/사용자지정 선택
- 30분 단위 시간 설정 (00:00 ~ 23:30)
- 요일별 개별 선택 가능
성과
✅ 완료된 작업
-
UI 대폭 개선
- ActivityPanel: 타임라인 형태로 재구성
- SkillsItemsPanel: 레벨 기반 시스템으로 전환
- 전반적인 디자인 통일성 향상
- 로그인 상태별 UI 분기 처리
-
개인화 시스템
- 작업별 설정 UI 구현
- 키워드 관리 시스템
- 브리핑 스케줄 개인화 (시간/요일)
- 로컬 스토리지 활용 (목업)
-
게임화 요소
- 체력 시스템 구현
- 체력 회복 아이템 추가
- 체력바 UI (황금비 적용)
- 아이템 사용 인터랙션
-
시스템 분석
- 브리핑 시스템 전체 플로우 파악
- 개선 필요사항 도출
- 구현 우선순위 정리
📋 후속 작업 필요
-
백엔드 API 구축
- user_preference 테이블 생성
- 키워드 기반 필터링 로직
- 사용자별 설정 저장/조회 API
-
서비스 연동
- skill-email DB 설정 수정
Gmail 토큰 자동 갱신(✅ 2025-08-27 해결완료)- 사용자 목록 DB 연동
교훈
1. 개인화의 핵심
- 사용자 맥락 이해: 이전 대화, 관심사, 패턴
- 동적 콘텐츠 큐레이션: 키워드 기반 필터링
- 피드백 루프: 사용자 반응 수집 및 개선
2. UI/UX 설계 원칙
- 점진적 공개: 필요한 설정만 노출
- 직관적 위치: 관련 기능 근처에 설정 배치
- 즉각적 피드백: 로컬 스토리지로 빠른 반응
3. 시스템 통합
- 프론트-백엔드 분리: 목업으로 먼저 구현
- 단계적 구현: UI → API → DB 순서
- 확장 가능한 구조: 새로운 서비스 추가 용이
4. 기술적 선택
- React Hooks 활용: useState, useEffect로 상태 관리
- 타입스크립트: 인터페이스로 데이터 구조 명확화
- 로컬 스토리지: 백엔드 없이도 동작하는 목업
다음 단계
-
즉시 (서버 작업)
- skill-email DB 설정 변경
Gmail 토큰 갱신 크론잡 설정(필요없음 - 자동갱신 구현됨)
-
단기 (백엔드)
- user_preference API 구현
- 키워드 필터링 로직 개발
-
중기 (통합)
- 프론트엔드-백엔드 연결
- 실시간 동기화 구현
-
장기 (고도화)
- ML 기반 패턴 학습
- 자동 키워드 추천
최종 커밋 정보
주요 커밋들:
- d893c51: 초기 UI 개선 및 개인화 준비
- 660364e: 로그인 상태에 따른 UI 분기 처리
- 04f67b5: 체력 시스템 구현
- 50cacc8: 브리핑 스케줄 개인화 기능 추가
- 9e6361d: 체력바 위치 및 디자인 개선
- 5c74941: 로그인 필요 메시지 위치 변경
Git 저장소: https://git.ro-being.com/ivada_Ro-being/frontend-customer
문서 끝