Spaces:
Runtime error
Runtime error
Commit History
-
Update chat_board.py
Unverified signature2acda5f -
feat: 실시간 의견 통계를 토론 보드 아래로 이동
ClaudeUnverified signaturehttps://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTb223874
-
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
-
fix: row_ip NameError 수정 (교사 IP 표시용 변수 복원)
ClaudeUnverified signature자기공감 차단 로직에서 row_ip 제거 시 교사 IP 표시 코드에서 참조하던 변수가 함께 제거되어 NameError 발생. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT585f810 -
fix: 자기공감 차단 IP → student_name 기반으로 변경
ClaudeUnverified signature학교 NAT 환경에서 모든 학생이 동일 공인 IP를 공유, IP 비교 방식이 반 전체 좋아요를 차단하는 문제 수정. student_name 비교로 변경하여 정확한 셀프 공감 차단. https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT411b8aa
-
fix: opinion_change, chat_board도 anonymize_ip() 적용 (IPv6 지원)
ClaudeUnverified signaturehttps://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT526b384 -
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 -
feat: 실시간 의견 통계 숨기기/보이기 토글 (기본값: 숨김)
ClaudeUnverified signatureexpander로 감싸 기본적으로 통계가 숨겨진 상태로 시작 학생이 의견에 영향받지 않고 자유롭게 발언할 수 있도록 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTf9bee66 -
fix: IP 익명화 형식 X.X. → 0.0. 으로 수정 (inet 타입 호환)
ClaudeUnverified signatureinet 컬럼에 165.X.X.41 형식 저장 시 invalid syntax 오류 발생 → 165.0.0.41 형식으로 변경 (유효한 inet 형식) 교사 화면 표시는 teacher_dashboard.py에서 .0.0. → .X.X. 변환하여 유지 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKTb1e8bd4
-
fix: 공감 쿨다운 중 취소는 즉시 가능하도록 수정
ClaudeUnverified signature새 공감은 3초 쿨다운, 이미 공감한 의견 취소는 쿨다운 무시 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT2630ccf -
fix: 공감 동점 시 같은 등수 뱃지 + 3초 쿨다운 추가
ClaudeUnverified signature- 같은 공감 수 = 같은 뱃지 (dense rank, 예: 동점 1위 둘 다 🥇) - 공감 클릭 후 3초간 모든 공감 버튼 비활성화 https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT05eaacf -
feat: 공감(👍) 버튼 기능 추가
ClaudeUnverified signature- likes 테이블 스키마 체크 및 likes_available() 추가 - fetch_room_likes(), toggle_like() DB 함수 추가 - 메시지 오른쪽에 공감 버튼 표시 (이미 공감 시 primary 스타일) - 공감 수 상위 3개에 🥇🥈🥉 뱃지 표시 - 동일 IP 의견에는 공감 버튼 비활성화(셀프 공감 차단) SQL 필요: CREATE TABLE likes (id bigserial PRIMARY KEY, opinion_id bigint NOT NULL, room_name text NOT NULL, student_name text NOT NULL, created_at timestamptz DEFAULT now(), UNIQUE (opinion_id, student_name)); https://claude.ai/code/session_016DE3uHLsVmA5Uv7gZGGaKT5aad439
-
Fix: 찬반 토론/자유 토의 모두 '의견 유형 분포 그래프'로 통일
ClaudeUnverified signaturehttps://claude.ai/code/session_01VubVHht1kvabfdfFR1weKs3473dfa -
Fix: 자유 토의 모드에서 차트 캡션을 '의견 유형 분포 그래프'로 수정
ClaudeUnverified signaturehttps://claude.ai/code/session_01VubVHht1kvabfdfFR1weKsc042632 -
Perf: 초기 로딩 속도 개선 (sleep 제거, 캐시 추가, 병렬 쿼리)
ClaudeUnverified signature- ensure_db_login: time.sleep(0.5) 제거로 매 세션 0.5s 단축 - check_schema_columns: 5개 DB 쿼리를 ThreadPoolExecutor로 병렬 실행 - fetch_room_names / fetch_room_names_by_owner: @st.cache_data(ttl=30) 추가 - fetch_topic_data: @st.cache_data(ttl=10) 추가로 매 렌더링 DB 쿼리 제거 - chat_board: 실시간 보드 fetch를 2000 → 300건으로 축소 (6.7x 네트워크 절감) - sidebar: 방 개설 시 관련 캐시 명시적 무효화 https://claude.ai/code/session_01VubVHht1kvabfdfFR1weKsbd2e763
-
Fix: 의견 제출/삭제/힌트 전송 후 캐시 즉시 무효화
ClaudeUnverified signaturesubmit_opinion, delete_opinion_message, create_teacher_hint 성공 시 fetch_live_messages.clear() 호출 → 다음 렌더에서 즉시 최신 데이터 반영 https://claude.ai/code/session_018WXW8M8SMsWcHtj1RynUi49d7fd67
-
UI: 실시간 의견 통계를 항상 표시 (expander 제거)
ClaudeUnverified signaturehttps://claude.ai/code/session_018WXW8M8SMsWcHtj1RynUi478ccaa5 -
Refactor: split app.py into pages/ and components/ modules
ClaudeUnverified signature- config.py: all constants, feature flags, and CSS - pages/home.py, lobby.py, admin.py: full-page views - components/sidebar.py: teacher login/signup + student room selection - components/chat_board.py: live message board with auto-refresh fragment - components/teacher_dashboard.py: AI hints, summary reports, 세특 drafts - app.py rewritten as lean orchestrator (~160 lines) https://claude.ai/code/session_018WXW8M8SMsWcHtj1RynUi43bb2388