From 54fa7244201bfb4d70655f2e53a1f08a9d6e301c Mon Sep 17 00:00:00 2001 From: th-kim0823 Date: Mon, 27 Apr 2026 20:00:34 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20render=5Fshow=20dispatcher=20+=20?= =?UTF-8?q?=ED=81=B0=20=ED=99=94=EB=A9=B4=20CSS,=20default=20'/'=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SHOW_CSS 상수 추가 (show-stage-*, show-team-*, show-cat-*, show-vote-* 클래스) - render_show() dispatcher + 3개 skeleton stage 함수 추가 (T9-T11에서 본구현) - main() default → render_show(), ?mode=vote → render_voter() 명시 라우팅 Co-Authored-By: Claude Sonnet 4.6 --- app.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index a1e8896..4a8ca74 100644 --- a/app.py +++ b/app.py @@ -30,6 +30,45 @@ CATEGORIES = [ ] PRIZE_PRIORITY = ["utility_team", "polish_team", "fun_team"] +SHOW_CSS = """ + +""" + _lock = threading.RLock() @@ -324,6 +363,34 @@ def archive_results(): # --- UI --- +def render_show(): + data = load_data() + st.markdown(SHOW_CSS, unsafe_allow_html=True) + stage = data.get("settings", {}).get("current_stage", "intro") + if stage == "topics": + render_stage_topics(data) + elif stage == "vote": + render_stage_vote(data) + else: + render_stage_intro(data) + + +def render_stage_intro(data): + st.markdown('
🚀 해커톤
', unsafe_allow_html=True) + st.markdown('
팀 편성
', unsafe_allow_html=True) + st.info("Task 9에서 구현") + + +def render_stage_topics(data): + st.markdown('
💡 예시 주제
', unsafe_allow_html=True) + st.info("Task 10에서 구현") + + +def render_stage_vote(data): + st.markdown('
🗳 투표 시작
', unsafe_allow_html=True) + st.info("Task 11에서 구현") + + def render_voter(): if not can_accept_votes(load_data()): st.title("🗳 해커톤 투표") @@ -817,16 +884,18 @@ def render_raw(): def main(): - st.set_page_config(page_title="해커톤 투표", page_icon="🗳", layout="wide") - mode = st.query_params.get("mode", "vote") + st.set_page_config(page_title="해커톤", page_icon="🚀", layout="wide") + mode = st.query_params.get("mode", "show") if mode == "admin": render_admin() elif mode == "ceremony": render_ceremony() elif mode == "raw": render_raw() - else: + elif mode == "vote": render_voter() + else: + render_show() if __name__ == "__main__":