From 1899ca0b9d2a84d8ab1bbe8cde244f3b90f4e4bb Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Fri, 9 Jan 2026 21:36:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=B4=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/main.cpython-312.pyc | Bin 13072 -> 14148 bytes main.py | 4 ++-- templates/index.html | 32 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index 73574d00be3b178d796b0697ae144a89e9ba461c..229c646a00abdab46914060be52833317b9cb0ac 100644 GIT binary patch delta 4477 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 GlKmgMKPMCtIf0%aTUU zFN+3z)IpupMcwf8%&G%bnr}GD8)_;hOF&PhrSsnNq^Jyh*?FbN6A5N*w0w1Tz%NVp zNVH-~qLrH4)Efv0={k`5)<}c2YDyZYq19R~^=q|*78;nc4AjvejBA9fyj-jB!(M|{ zS_@P4;MNXwtEo!y2vipmh)0YiL^0 zYSsdvwQ-Hs2Gdqk%UA3gUZdG$+KacY*lW{*V6T0RR|Yo;;XoU59VWpAdJxD7>6+7X{NCU-SIO}`*P2@wEtNAvr}UGf zA6Z(93p@BO`+gGUXYAdijW61()E-#Z#{Xt-B&`cxN5n#6e4A&2c=&HUUs~_LE$-x( zN(LHwk;U;|hJJ))LymMAB&TD#g+i>2-%%PN5AosBLJW16)fBcJ28LT3PwBZ-=3pF- z&NhKa$C!me$Cx0RsB=#T%8P~DG(EP8w?G;&EXa{mkI{VGDhhE*s zTKVVR!(t|^k5!>n!^#pBj|*RO&s4SIas0P;%n3ngT^=?^4}n>{DHuU?MGpJ zPG$k<4DUW|bSw?l9@O-)Y)0445r*?-q)^Afv;>W_Y&ORxVf+%W3^vDZS%7`gA0$Uz zor$qjCxnG1hlHcaWgG(qNx}dhhu^KV!mB%a0y$hK+B`8UctS47!!|?-SuXIC8#=A} zv?*~Z)KZX6OVn~k;eQXd)mw5N(?Y>wTA-?^_E3TFOU|0@M9P(!O4Lei)IKXy$Gp>o zvwrC-jkrechA=N1>AKB`o4N}Y0B&Wz#N4xA0*Q)OJ)sno;R^JBU8y-sy~3j>%yXz^ z1%;OLL$wurU8IK3)!Iu1?q&$BoUj(iu)-gx2{zht>rBTBwt^Mc;0`7_P1p-IJR#rS zsq%N6!Is;d1a&toveR|5>TQmSuuT4+vX%O7KT)HU^O^f^0O*=*tVw zd&3@vaAa7Md8TI>bD=1=MiXVn@?vE&orQfJ$SVi69K)h99J|Mp+E^}? z%?Jz)JBx)FlS;srC{eNZGkm0>eJi?T5KVVNzg&>e6>HK}ERQ&zjm?6>PvED&4t{a!&yXSBj`IjsgK)waC4I1VM52%k)*K2bYn(e{?ie z3@`fuE_e}$VNGX~iL`FmSvH-1G?5$;H(>_-4Ci zTv6SI#@xvvEjg0P6r=q!5Ph;R8-APciNJl6o&=?0A~KX4O$)4J1+?`zkhQ3{q8J}b z9Msr3m@bF=(($V+F6~oS<;Sk34_r-i**6`Rwk&SB??c!9is-OaX|s#(dW zr86?M08o17ttL>4dX^^C$5p6j(XXjzEa#HF4AH$WkFfRG#aC`T{mhNoUtfRzjq7jx z^7@5S*JsbNIhaY!KykzB zxu=~=cFEy>-u1L=X3w1Otp8%&xw<#~Z`Z$7|9<%6J@kV;bTOoTWFP#*?&j`TZc-*w zJDPX(Nbj_g-7*yHih z1f+lbsI4m^{!-iF2@;lBIUcbBNVwIo4JPy)9!EhTewCRD#Hir^i9JlZ_`^NXNqjG} zd6X)Nu`$+-oI0A#!?OhwOFU(ZPe+7WaSuflK=fokM1n5{fp~^xEDO(6EJsmHB8=jt zYS{9RrIJ~efy&Nj#EY=_!1Rl9w%<9LrTMgW7yAvYg^)}7MZRrQd-b2Jp5v)w3Pjga zd(B;r|6cz!ua7To`kGrIZ8Q5nm!P}p str: """ Allocate a seat based on: - 1. Even distribution (13 tables, max 12 per table) + 1. Even distribution (11 tables, max 12 per table) 2. Mix industries (try to put user in a table where their industry is least represented) """ - TOTAL_TABLES = 13 + TOTAL_TABLES = 11 MAX_PER_TABLE = 12 # Initialize table stats diff --git a/templates/index.html b/templates/index.html index dbae775..a952be8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -442,6 +442,27 @@ line-height: 1.5; } + .important-warning { + color: #ff3333 !important; + font-size: 1.3rem !important; + font-weight: 900 !important; + margin-top: 20px; + text-align: center; + background: rgba(255, 0, 0, 0.2) !important; + padding: 25px !important; + border-radius: 12px !important; + border: 2px solid #ff0000 !important; + box-shadow: 0 0 20px rgba(255, 0, 0, 0.4) !important; + animation: pulse-red 2s infinite; + text-shadow: 0 0 5px rgba(0,0,0,0.5); + } + + @keyframes pulse-red { + 0% { box-shadow: 0 0 0 0 rgba(255, 0, 0, 0.4); } + 70% { box-shadow: 0 0 0 10px rgba(255, 0, 0, 0); } + 100% { box-shadow: 0 0 0 0 rgba(255, 0, 0, 0); } + } + @@ -616,6 +637,7 @@ // Reset UI errorDiv.classList.add('hidden'); + errorDiv.classList.remove('important-warning'); listDiv.classList.add('hidden'); listDiv.innerHTML = ''; btn.disabled = true; @@ -671,6 +693,16 @@ } function selectUser(user) { + // Check if fee is 0 (unpaid) + if (user.fee == 0) { + const errorDiv = document.getElementById('search-error'); + errorDiv.textContent = "⚠️ 无法签到:请先前往签到处付费26元"; + errorDiv.classList.remove('hidden'); + errorDiv.classList.add('important-warning'); + errorDiv.scrollIntoView({ behavior: 'smooth', block: 'center' }); + return; + } + currentUser = user; // Populate form