💼 Internship
[Internship] 2025-08 인턴일지
1. 디자인 시스템 구현
- 목적 : 향후 신규 페이지/컴포넌트 개발 시 생산성 확보 및 디자인 일관성 유지
- 디자인 토큰(컬러, 타이포그라피)을 정의하여 전체 UI의 일관성을 유지하고, 재사용 가능한 컴포넌트 기반 구조를 마련함
- 이를 통해 신규 페이지나 기능 개발 시 빠른 개발 속도와 유지보수성을 확보할 수 있으며, 디자이너와 개발자 간 협업 효율성도 향상됨
2. 발전소 진단 리포트 페이지 제작
2-1. 기본정보
- 발전소 목록 및 기본 정보 조회
- API 연동 후 표 형태로 표시
2-2. 계약정보
- 계약 정보 조회 및 렌더링 처리
- API 연동 후 표 형태로 표시
2-3. 발전량
- 발전량 분석 섹션 설명을 위한 아코디언 컴포넌트 추가
- 발전량, 인근 평균 발전량, 지역 평균 발전량 → Line Chart로 구성하여 증감 추이 확인 가능
- 라인차트 결과를 Bar Chart로 요약하여 값 비교 용이
- Tooltips 및 Legend 최적화 → 발전량 항목별 세부값 확인 가능
2-4. 매출 렌더링
- 발전량 분석 섹션 설명을 위한 아코디언 컴포넌트 추가
- facilityCode 베이스로 API 조회
- SMP 매출 + REC 고정 매출 + REC 현물 매출 형태로 매출 구성 요소 표시
- 차트
- SMP 매출 + REC 고정 매출 + REC 현물 매출 : Stacked Bar Chart 사용 → 총 매출 규모 한눈에 확인 가능
- SMP : Line Chart 사용 → 단가 변동 추세 확인 가능
- Tooltips 및 Legend 최적화 → 매출 항목별 세부값 바로 확인 가능
3. PDF 다운로드
- html2canvas와 jspdf 라이브러리를 사용하여 리포트 데이터를 PDF로 다운로드 가능하게 구현
- 차트를 포함하여 화면 그대로 캡쳐 → 이미지화 → PDF 내보내는 플로우로 구현
- PDF 용량 대폭 감소시킴 (압축 처리 포함) → PDF 압축 및 용량 최적화를 통해 저장·공유 편의성을 높였으며, 오프라인 환경에서도 리포트 활용이 가능해짐
4. 초기 진입 시, UX 향상
- Before : 조회버튼 클릭 → 발전소 데이터 렌더링 의 플로우
- After : 유저가 페이지에 초기 진입 시, 디폴트 발전소의 데이터를 보여줌
- Effect : 초기 진입 시 빈 화면 노출 최소화, 사용자 조작 없이 데이터 확인 가능 → UX 개선
5. Skeleton UI 도입
- 차트 용량의 무거움과 애니메이션으로 인해, 데이터 렌더링이 늦어지는 현상 발생
- Skeleton UI를 도입하여 UX 향상 및 차트 애니메이션 제거를 통한 빠른 속도의 렌더링 구현
7. 도메인별 로고 조건부 렌더링 진행
- 도메인별로 다른 로고 렌더링 처리
- 조건부 렌더링 방식 적용
- 브랜드 아이덴티티 일관성 확보
8. EmptyCase 예외처리
- 발전소 데이터가 존재하지 않을 경우 → EmptyCase 컴포넌트 렌더링
- 계약 상태가 null일 경우 → 계약정보 없음 UI 노출
- 피크년도가 올해와 1년 이하 차이날 경우 → 분석 불가 안내 컴포넌트 렌더링
- 목적 : 예외 상황 명확히 전달하여 사용자 혼란 방지 및 UX 개선
9. 리팩토링 요구사항 문서화
- 목적 : 코드 구조 개선 및 유지보수성, DX 향상
- 방식 : Feature-based 구조 적용 예정
- 디렉토리 구조 개편
- 기존 page 단위 → feature 단위로 재구성
- 각 feature 내부에 component, hook, service, store 등 세분화
- 공통 컴포넌트 정리
- Button, Card, Modal, ChartWrapper 등 UI 컴포넌트 → /shared 디렉토리로 이동
- 재사용 가능성 높은 유틸 함수 및 훅도 /shared로 이동
- 스타일 가이드 통일
- Tailwind + shadcn/ui 조합 기준 확립
- 디자인 토큰 기반 theme 적용 (컬러, 폰트, spacing 등)