Spaces:
Runtime error
Runtime error
Commit History
-
Update chat_board.py
Unverified signature2acda5f -
Merge pull request #84 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 코드 리뷰 반영 — 스키마 체크 안정성 및 UI 순서 개선940c18f -
fix: 코드 리뷰 지적사항 반영 (db.py 스키마 체크 안정성 개선)
ClaudeUnverified signature- _is_connection_error: httpx/ssl 예외 타입 체크 우선 적용, 과도한 키워드("connection","reset") 제거 - check_schema_columns: 루프 즉시 raise → 루프 완주 후 raise (부분 성공 결과 유실 방지) - _schema(): 예외 삼킬 때 warning 로그 추가 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT04722be -
feat: 실시간 의견 통계를 토론 보드 아래로 이동
ClaudeUnverified signaturehttps://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTb223874 -
Merge pull request #83 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: Supabase 재연결 후 데이터 미로딩 및 스키마 캐시 문제 수정f1cb4a6 -
fix: Supabase 재연결 후 데이터 미로딩 문제 수정
ClaudeUnverified signature- execute_query에서 연결 오류 감지 시 init_db/check_schema_columns 캐시 초기화 - check_schema_columns TTL을 3600s→300s로 단축 - 연결 오류 시 캐시 저장 방지 (RuntimeError 전파) - _schema() 래퍼로 availability 헬퍼들이 연결 오류에도 False 반환 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTdf3d537
-
Merge pull request #82 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: HCI 개선 — 에러코드 노출, 방 자동선택, 빈방 fallback, 토론상태 배너be14b41 -
fix: 평문 비밀번호 비교 fallback 제거 (보안 강화)
ClaudeUnverified signature모든 계정 비밀번호가 bcrypt($2b$)로 해시된 것을 확인하여 평문 비교 코드를 안전하게 제거함. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT1296cbb -
fix: 대기실 중복 버튼, 빈 데이터 안내, AI 오류 처리, 데이터 한도 경고
ClaudeUnverified signature- lobby.py: 대기실에서 대기실로 이동하는 무의미한 버튼 제거 - teacher_records.py: 데이터 없을 때 안내 메시지 표시, DASHBOARD_FETCH_LIMIT 초과 시 일부만 다운로드됨 경고 - teacher_hint.py: AI 호출 try/except 처리, 네트워크 오류 시 st.error 표시 - teacher_summary.py: AI 호출 try/except 처리, 네트워크 오류 시 st.error 표시 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT37fa03a -
fix: 비가역적 제출 확인을 체크박스 → 텍스트 재입력으로 변경
ClaudeUnverified signature토론 전/후 생각 제출 시 체크박스 대신 "제출" 텍스트를 직접 입력해야 버튼이 활성화되도록 변경. 수정 불가 행위에 명시적 의도 확인 추가. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT9339cf7 -
fix: AI 피드백 파싱 실패 시 graceful fallback 처리
ClaudeUnverified signature1차: 정규식으로 잘한점/발전할점 섹션 파싱 2차: 실패 시 줄 수 기준 절반 분할 시도 최종: 모두 실패 시 레이블(🌟 AI 피드백)과 함께 마크다운으로 표시 기존에는 st.info()로 레이블 없이 원문이 그대로 노출됨 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT7c864eb -
fix: 토론 진행 제어 섹션을 대시보드 최상단으로 이동
ClaudeUnverified signature교사가 스크롤 없이 즉시 토론 종료/재개 버튼에 접근 가능. _render_debate_control은 fragment라 df_all 의존성 없어 최상단 배치 가능. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTb12984a -
fix: HCI 개선 1~4 — 에러코드 노출, 방 자동선택, 빈방 fallback, 토론상태 표시
ClaudeUnverified signature1. 에러 코드 노출 제거: 사이드바 방 개설 에러에서 내부 코드(VALIDATION_*) 숨김 2. 방 생성 후 자동 선택: 개설 즉시 캐시 초기화 후 새 방으로 자동 이동 3. 교사 방 없을 때 fallback: '기존 방 선택' 시 방이 없으면 안내 메시지 표시 4. 학생 토론 상태 배너: 진행 중/종료 여부를 항상 배너로 명시 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT9dcf3c3
-
Merge pull request #81 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 학생 다수 접속 시 토론 종료 버튼 무반응 문제 해결05b2038 -
fix: 토론 종료 버튼 무반응 — 제어 섹션을 fragment로 분리
ClaudeUnverified signature학생 접속이 많을 때 무거운 대시보드 렌더링이 버튼 반응을 막는 문제. _render_debate_control을 @st.fragment로 분리해 독립적으로 즉시 반응. 상태 변경 후 fetch_debate_status 캐시 초기화로 학생 감지 속도 개선. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTd3deb76 -
Merge pull request #80 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturechore: docker/login-action v3 → v4 (Node.js 24 지원)ecded9c -
chore: docker/login-action v3 → v4 (Node.js 24 지원)
ClaudeUnverified signatureGitHub Actions Node.js 20 deprecated 경고 해소. docker/login-action v4는 Node.js 24 런타임 기본 지원. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTa0998f6 -
Merge pull request #79 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 실시간 보드 삭제 반영, 내용 표시 오류, 참여도 자동갱신, 성능 개선ffdb7c6 -
fix: 실시간 보드 삭제 반영, 내용 마크다운 렌더링, 참여도 자동갱신, 성능 개선
ClaudeUnverified signature1. 삭제 즉시 반영: on_click 콜백 → 직접 if 버튼 패턴으로 변경 후 fetch_live_messages.clear() + st.rerun(scope="app") 호출 2. 내용 표시 오류: st.info(content) 마크다운 해석 방지 — ~, *, _, ` 이스케이프 3. 학생 참여도 현황: @st.fragment(run_every=10)으로 분리해 자동 갱신 4. 성능: 워드클라우드 @st.cache_data(ttl=5) 캐싱으로 재생성 방지, 토론 상태 폴링 3초 → 5초로 완화 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTc65e101
-
Merge pull request #78 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefeat: 입장 변화 요약 섹션 추가 (바뀐/찬성유지/반대유지 3컬럼)6f5d1c1 -
feat: 입장 변화 요약을 3컬럼으로 변경 (바뀐/찬성유지/반대유지)
ClaudeUnverified signature입장 변화 요약 섹션을 2컬럼에서 3컬럼으로 변경. 입장 바뀐 학생, 찬성 유지, 반대 유지를 구분해서 표시. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTe5bb2a6 -
feat: 입장 변화/유지 학생 목록 표시
ClaudeUnverified signature입장 변화 현황 섹션에 토론 전후 입장이 바뀐 학생과 유지한 학생을 구분해서 목록으로 표시. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT7e15b61 -
Merge pull request #77 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: row_ip NameError 수정 + 입장별 학생 이름 목록 표시8c2288b -
fix: row_ip NameError 수정 (교사 IP 표시용 변수 복원)
ClaudeUnverified signature자기공감 차단 로직에서 row_ip 제거 시 교사 IP 표시 코드에서 참조하던 변수가 함께 제거되어 NameError 발생. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT585f810 -
Merge pull request #76 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 자기공감 차단 IP → student_name 기반으로 변경 (NAT 환경 대응)49332a9 -
feat: 입장 변화 현황에 찬성/반대 학생 이름 목록 표시
ClaudeUnverified signature파이 차트 아래에 각 입장을 선택한 학생 이름 목록 추가. 토론 전/후 각각 찬성(명), 반대(명) 확인 가능. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT822b4d6 -
fix: 자기공감 차단 IP → student_name 기반으로 변경
ClaudeUnverified signature학교 NAT 환경에서 모든 학생이 동일 공인 IP를 공유, IP 비교 방식이 반 전체 좋아요를 차단하는 문제 수정. student_name 비교로 변경하여 정확한 셀프 공감 차단. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT411b8aa
-
Merge pull request #75 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturechore: 임시 IP 디버그 패널 제거8954596 -
chore: 임시 IP 디버그 패널 제거
ClaudeUnverified signaturehttps://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTbdb2f99 -
Merge pull request #74 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 토론 재개/종료 시 학생 화면 즉시 반영 안 되는 버그 수정72d2341 -
fix: _poll_debate_status에서 st.rerun(scope='app') 적용
ClaudeUnverified signatureStreamlit 1.37+에서 fragment 내 st.rerun()은 fragment만 재실행. scope='app'으로 전체 앱 재실행해야 학생 화면이 즉시 갱신됨. 수정되는 버그: - 교사 토론 재개 후 학생이 F5 없이 의견 제출 가능 - 교사 재개 → 학생 의견 제출 → 교사 재종료 시 학생 화면 즉시 반영 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTabcc046 -
Merge pull request #73 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: IPv6 IP 저장 지원 (fly.io 환경)bb74c93 -
fix: IPv6 익명화 앞4그룹+마지막그룹 유지 (기기 구분 가능)
ClaudeUnverified signature앞 4그룹만 유지하면 같은 Wi-Fi 학생 모두 동일값 → 자기공감 방지 오작동. 마지막 그룹 추가로 기기별 구분 가능하도록 개선. 예: 2406:5900:117c:424b::4444 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT009a807 -
fix: opinion_change, chat_board도 anonymize_ip() 적용 (IPv6 지원)
ClaudeUnverified signaturehttps://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT526b384 -
fix: IPv6 IP 익명화 지원 추가 (anonymize_ip 공통 함수)
ClaudeUnverified signatureIPv4만 처리하던 익명화 로직을 IPv6도 지원하도록 개선. utils.py에 anonymize_ip() 공통 함수 추가, app.py, opinion_change.py에서 해당 함수 사용. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT02c069f -
Merge pull request #72 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: fly-deploy 워크플로우 Node.js 24 강제 설정 제거f2a5672 -
fix: fly-deploy 워크플로우 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 제거
ClaudeUnverified signaturesetup-flyctl@master가 Node.js 24 미지원으로 즉시 실패하던 문제 수정. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT3667292 -
Merge pull request #71 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: IP 저장 안 됨 디버그 + Streamlit 버전 상향ea202af -
debug: 교사 대시보드에 IP/헤더 디버그 패널 임시 추가
ClaudeUnverified signatureStreamlit 버전, 수신된 헤더 목록, 감지된 IP를 교사 대시보드에 표시. IP 저장 안 되는 원인 확인 후 제거 예정. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT3199b80 -
Merge pull request #70 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 이미지에서 이모지 깨짐 → 텍스트 레이블로 대체2195269 -
fix: Streamlit 최소 버전 1.37.0으로 상향 (st.context.headers 지원)
ClaudeUnverified signaturest.context.headers는 Streamlit 1.37.0에서 추가됨. 1.35/1.36에서는 AttributeError로 get_client_ip()가 항상 빈 값을 반환, IP가 DB에 저장되지 않던 문제 수정. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT23019d1 -
fix: get_client_ip 헤더 탐색 범위 확장 + 미발견 시 헤더 목록 로그
ClaudeUnverified signature대소문자 변형 헤더(X-Forwarded-For 등) 추가 탐색. IP를 찾지 못한 경우 수신된 헤더 키 목록을 로그로 출력하여 배포 환경별 헤더 이름 디버깅 가능하도록 개선. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTa03076c -
fix: 이미지 이모지 제거 대신 텍스트 레이블로 대체
ClaudeUnverified signature✅ → [완료], 🌱 → [성장] 등 알려진 이모지를 의미 있는 텍스트로 치환. 한국어 폰트가 렌더링 못하는 이모지가 □ 박스로 깨지던 문제 개선. AI 피드백 카드의 잘한점/발전할점 레이블이 이미지에서도 식별 가능. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTc2dd7cd -
Merge pull request #69 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: IP: None 표시 버그 수정ef0c808 -
fix: IP: None 표시 버그 수정 (None → 빈 문자열 처리)
ClaudeUnverified signatureip_address가 DB에 NULL일 때 str(None)='None' (truthy)이 되어 교사 화면에 'IP: None'이 표시되던 버그 수정. str(row.get('ip_address') or '').strip() 으로 None을 빈 문자열로 변환. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT57d3393 -
Merge pull request #68 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: 이미지 다운로드 시 이모지(✅🌱) 깨짐 수정1ae41e4 -
feat: 실시간 의견 통계 숨기기/보이기 토글 (기본값: 숨김)
ClaudeUnverified signatureexpander로 감싸 기본적으로 통계가 숨겨진 상태로 시작 학생이 의견에 영향받지 않고 자유롭게 발언할 수 있도록 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTf9bee66 -
fix: 이미지 렌더링 시 BMP 이모지(✅🌱 등) 깨짐 수정
ClaudeUnverified signature_strip_non_renderable에 BMP 이모지 블록 추가 제거: - U+2190~U+27FF: 화살표/딩뱃(✅ U+2705 포함) - U+2B00~U+2BFF: 기타 기호/화살표 - U+FE00~U+FEFF: 변형 선택자 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTab347bd -
Merge pull request #67 from VioletWizard-lim/claude/remove-teacher-comments-Wy5SV
Unverified signaturefix: AI 피드백 카드 파싱·이미지·UX 버그 수정 (Sprint 3 - Work Item 5)7ebe4be -
fix: AI 피드백 카드 파싱 수정 + 이미지 다운로드에 피드백 포함
ClaudeUnverified signature- 정규식 수정: 콜론 이후 같은 줄 내용을 올바르게 캡처 - create_analysis_image에 ai_feedback 파라미터 추가 - 이미지 다운로드 시 잘한 점/발전할 점 내용 포함 - 교사 대시보드 이미지 다운로드도 동일하게 적용 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT32b1d82