Skip to content

fix: 출석부 동적 컬럼 감지, 스토리지 분리, 로그 개선 - #82

Merged
6-keem merged 4 commits into
mainfrom
develop
Mar 24, 2026
Merged

fix: 출석부 동적 컬럼 감지, 스토리지 분리, 로그 개선#82
6-keem merged 4 commits into
mainfrom
develop

Conversation

@6-keem

@6-keem 6-keem commented Mar 24, 2026

Copy link
Copy Markdown
Member

Summary

  • 출석부 테이블 동적 컬럼 감지: 출석인정 요구시간 컬럼이 없는 5열 테이블에서 weeklyAttendance가 빈 문자열이 되어 출석인데도 결석으로 표시되던 버그 수정. thead 헤더 텍스트 기반으로 컬럼 인덱스를 동적 감지하여 5열/6열 모두 처리 (ko/en/ja/zh)
  • 일반 강좌 단일 소스: user_progress_a.php에서 출석 + 시간 데이터를 모두 추출하도록 변경. mergeTimeData 제거
  • 비트래킹 강좌 스토리지 분리: chrome.storage 대신 sessionStorage에 캐시하여 로컬 스토리지 누적 방지. temp course 시스템 제거
  • 로그 개선: OAuth 미로그인 에러 로그 제거, 로그 다운로드 시 트래킹 강의 스토리지 스냅샷 포함
  • mock 디버그: mock 빌드 시 강의 페이지에 주차별 출석 디버그 배지 표시
  • 업데이트 시 dotbugi 페이지 자동 열기 제거
  • 미사용 의존성 제거 및 번들 분할 (chore: 미사용 의존성 제거 및 번들 분할 #81 포함)

Test plan

  • 5열/6열 테이블 파싱 통합 테스트 추가 (실제 LMS HTML 구조 기반)
  • detectColumns 다국어 테스트 (ko/en/ja/zh)
  • "출석인정 요구시간"이 "출석" 컬럼으로 오매칭되지 않는지 검증
  • 전체 테스트 298개 통과
  • 5열 테이블 강좌에서 popover 출석/결석 표시 확인
  • 비트래킹 강좌 뒤로가기/앞으로가기 캐시 동작 확인
  • 로그 다운로드 시 스토리지 스냅샷 포함 확인

6-keem added 4 commits March 23, 2026 21:22
* chore: 미사용 의존성 제거, framer-motion → motion 마이그레이션, 번들 분할

- googleapis, react-colorful, @dnd-kit/modifiers, ts-loader, vite-plugin-pages 삭제
- framer-motion → motion 통일 (4개 파일 import 변경)
- vite manualChunks 설정으로 vendor 청크 분리 (radix, motion, i18n, dnd)
- vite.config.ts path/\_\_dirname → import.meta.url 방식으로 타입 에러 해결

* chore: 미사용 Radix UI 패키지 및 데드코드 UI 컴포넌트 삭제

- @radix-ui/react-dialog, tabs, scroll-area, avatar, checkbox, progress, separator, toast 삭제
- 미사용 UI 래퍼 15개 파일 및 use-toast 훅 삭제
- manualChunks에서 삭제된 패키지 참조 제거

* perf: 이미지 PNG → WebP 변환 및 리사이즈 (700KB → 23KB)

- thung, icon, gmail, calendar, exit PNG를 WebP로 변환
- 과도한 원본 해상도(1024x1024 등)를 적절한 크기로 리사이즈
- import 경로 .png → .webp 변경
- 출석부 테이블(user_progress_a.php) 컬럼 인덱스를 thead에서 동적 감지
  - 출석인정 요구시간 컬럼이 없는 5열 테이블에서 weeklyAttendance가
    빈 문자열이 되어 출석인데도 결석으로 표시되던 버그 수정
  - 일반 강좌는 _a.php에서 시간 데이터도 직접 추출 (mergeTimeData 제거)
  - ko/en/ja/zh 다국어 헤더 매칭 지원
- 비트래킹 강좌 데이터를 chrome.storage 대신 sessionStorage에 캐시
  - 로컬 스토리지 누적 방지, 탭 닫으면 자동 소멸
  - temp course 시스템(registerTempCourse, cleanupExpiredTempCourses) 제거
- OAuth 비대화형 호출(미로그인 상태)에서 불필요한 에러 로그 제거
- 로그 다운로드 시 트래킹 강의의 스토리지 스냅샷 포함
- mock 빌드 시 강의 페이지에 주차별 출석 디버그 배지 표시
- mock 데이터의 weeklyAttendance를 실제 LMS 형식(O/X)으로 수정
- detectColumns 테스트 추가 (5열/6열, 4개 언어, 오매칭 방지)
- parseAttendanceTable 함수 분리 (테스트 가능하도록)
- 6열 테이블: rowspan 전파, 출석인정 요구시간/총 학습시간 추출 검증
- 5열 테이블: 출석인정 요구시간 없는 실제 LMS 구조 기반 테스트
- 미시청("-") 강의, 빈 출석 행 스킵 등 엣지케이스 포함
@6-keem 6-keem self-assigned this Mar 24, 2026
@6-keem 6-keem added bug 정상 동작하지 않는 문제 feat 새로운 기능 또는 요청 dependencies patch 스타일 및 버그 수정 labels Mar 24, 2026
@6-keem
6-keem merged commit 958d5d0 into main Mar 24, 2026
@6-keem
6-keem deleted the develop branch March 24, 2026 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug 정상 동작하지 않는 문제 feat 새로운 기능 또는 요청 patch 스타일 및 버그 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant