Skip to content

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

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

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

Conversation

@6-keem
Copy link
Copy Markdown
Member

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

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 Something isn't working feature New feature or request dependencies Pull requests that update a dependency file 🔖 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 Something isn't working dependencies Pull requests that update a dependency file feature New feature or request 🔖 patch 스타일 및 버그 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant