Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -32,52 +32,6 @@ def init_db():
|
|
| 32 |
updated_at TEXT
|
| 33 |
)
|
| 34 |
""")
|
| 35 |
-
c.execute("""
|
| 36 |
-
CREATE TABLE IF NOT EXISTS appeals (
|
| 37 |
-
appeal_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 38 |
-
case_id INTEGER,
|
| 39 |
-
ticket_number TEXT,
|
| 40 |
-
appeal_text TEXT,
|
| 41 |
-
target TEXT,
|
| 42 |
-
created_at TEXT
|
| 43 |
-
)
|
| 44 |
-
""")
|
| 45 |
-
c.execute("""
|
| 46 |
-
CREATE TABLE IF NOT EXISTS reviews (
|
| 47 |
-
review_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 48 |
-
case_id INTEGER,
|
| 49 |
-
ticket_number TEXT,
|
| 50 |
-
reviewer TEXT,
|
| 51 |
-
reviewer_role TEXT,
|
| 52 |
-
decision TEXT,
|
| 53 |
-
rationale_en TEXT,
|
| 54 |
-
rationale_bm TEXT,
|
| 55 |
-
rationale_cn TEXT,
|
| 56 |
-
reduced_fine REAL,
|
| 57 |
-
created_at TEXT
|
| 58 |
-
)
|
| 59 |
-
""")
|
| 60 |
-
c.execute("""
|
| 61 |
-
CREATE TABLE IF NOT EXISTS payments (
|
| 62 |
-
payment_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 63 |
-
case_id INTEGER,
|
| 64 |
-
ticket_number TEXT,
|
| 65 |
-
amount REAL,
|
| 66 |
-
channel TEXT,
|
| 67 |
-
provider_ref TEXT,
|
| 68 |
-
status TEXT,
|
| 69 |
-
paid_at TEXT
|
| 70 |
-
)
|
| 71 |
-
""")
|
| 72 |
-
c.execute("""
|
| 73 |
-
CREATE TABLE IF NOT EXISTS receipts (
|
| 74 |
-
receipt_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
| 75 |
-
payment_id INTEGER,
|
| 76 |
-
ticket_number TEXT,
|
| 77 |
-
receipt_no TEXT,
|
| 78 |
-
issued_at TEXT
|
| 79 |
-
)
|
| 80 |
-
""")
|
| 81 |
conn.commit()
|
| 82 |
conn.close()
|
| 83 |
|
|
@@ -182,28 +136,22 @@ def view_case(ticket_number, name, vehicle_number):
|
|
| 182 |
row = find_case(ticket_number, name, vehicle_number)
|
| 183 |
if not row:
|
| 184 |
return "❌ Case not found / Kes tidak dijumpai / 未找到案件"
|
| 185 |
-
display_md = f"""
|
| 186 |
-
### Case / Kes / 案件 — Ticket: {row[3]}
|
| 187 |
-
|
| 188 |
-
**Name / Nama / 姓名**: {row[1]}
|
| 189 |
-
**Address / Alamat / 地址**: {row[2]}
|
| 190 |
-
|
| 191 |
-
**Vehicle No. / No. Kenderaan / 车牌号码**: {row[4]}
|
| 192 |
-
**Road / Jalan / 道路**: {row[5]}
|
| 193 |
-
**Town/City / Bandar / 城市**: {row[6]}
|
| 194 |
-
**State / Negeri / 州**: {row[7]}
|
| 195 |
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
""
|
| 206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
|
| 208 |
def submit_appeal(ticket_number, appeal_text, target):
|
| 209 |
row = find_case(ticket_number=ticket_number)
|
|
@@ -272,8 +220,8 @@ def make_ui():
|
|
| 272 |
nm = gr.Textbox(label="Name / Nama / 姓名")
|
| 273 |
veh = gr.Textbox(label="Vehicle No. / No. Kenderaan / 车牌号码")
|
| 274 |
btn2 = gr.Button("View Case")
|
| 275 |
-
|
| 276 |
-
btn2.click(fn=view_case, inputs=[ticket, nm, veh], outputs=
|
| 277 |
|
| 278 |
with gr.Tab("📨 Submit Appeal"):
|
| 279 |
ticket_a = gr.Textbox(label="Ticket No. / No. Saman / 罚单号码")
|
|
@@ -307,3 +255,4 @@ if __name__ == "__main__":
|
|
| 307 |
|
| 308 |
|
| 309 |
|
|
|
|
|
|
| 32 |
updated_at TEXT
|
| 33 |
)
|
| 34 |
""")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
conn.commit()
|
| 36 |
conn.close()
|
| 37 |
|
|
|
|
| 136 |
row = find_case(ticket_number, name, vehicle_number)
|
| 137 |
if not row:
|
| 138 |
return "❌ Case not found / Kes tidak dijumpai / 未找到案件"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
|
| 140 |
+
return (
|
| 141 |
+
f"Case / Kes / 案件 — Ticket: {row[3]}\n"
|
| 142 |
+
f"Name / Nama / 姓名: {row[1]} Address / Alamat / 地址: {row[2]}\n\n"
|
| 143 |
+
f"Vehicle No. / No. Kenderaan / 车牌号码: {row[4]} "
|
| 144 |
+
f"Road / Jalan / 道路: {row[5]} "
|
| 145 |
+
f"Town/City / Bandar / 城市: {row[6]} "
|
| 146 |
+
f"State / Negeri / 州: {row[7]}\n\n"
|
| 147 |
+
f"Offence (EN): {row[8]} "
|
| 148 |
+
f"Kesalahan (BM): {row[9]} "
|
| 149 |
+
f"违法 (中文): {row[10]},\n\n"
|
| 150 |
+
f"Base Fine / Denda Asal / 原始罚款: RM {row[11]:.2f} "
|
| 151 |
+
f"Status / Status / 状态: {row[12]}\n\n"
|
| 152 |
+
f"Created / Dicipta / 创建: {row[13]} "
|
| 153 |
+
f"Updated / Dikemaskini / 更新: {row[14]}"
|
| 154 |
+
)
|
| 155 |
|
| 156 |
def submit_appeal(ticket_number, appeal_text, target):
|
| 157 |
row = find_case(ticket_number=ticket_number)
|
|
|
|
| 220 |
nm = gr.Textbox(label="Name / Nama / 姓名")
|
| 221 |
veh = gr.Textbox(label="Vehicle No. / No. Kenderaan / 车牌号码")
|
| 222 |
btn2 = gr.Button("View Case")
|
| 223 |
+
out2 = gr.Textbox(label="Case Details", lines=12)
|
| 224 |
+
btn2.click(fn=view_case, inputs=[ticket, nm, veh], outputs=out2)
|
| 225 |
|
| 226 |
with gr.Tab("📨 Submit Appeal"):
|
| 227 |
ticket_a = gr.Textbox(label="Ticket No. / No. Saman / 罚单号码")
|
|
|
|
| 255 |
|
| 256 |
|
| 257 |
|
| 258 |
+
|