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__":