import gradio as gr from datetime import datetime, timedelta # Hàm tính thời hiệu khởi kiện def calculate_statute_of_limitations(start_date, case_type): if not start_date or not case_type: return "Vui lòng nhập đầy đủ thông tin" try: start = datetime.strptime(start_date, "%Y-%m-%d") # Thời hiệu theo BLDS 2015 time_limits = { "Tranh chấp hợp đồng": 3, "Bồi thường thiệt hại": 3, "Tranh chấp đất đai": 3, "Thừa kế - chia di sản (BĐS)": 30, "Thừa kế - chia di sản (ĐS)": 10, "Xác nhận quyền thừa kế": 10, "Tuyên bố giao dịch vô hiệu": 2 } years = time_limits.get(case_type, 3) end_date = start + timedelta(days=years*365) today = datetime.now() if today > end_date: return f""" ⚠️ **ĐÃ HẾT THỜI HIỆU** 📅 **Thời hiệu hết hạn:** {end_date.strftime('%d/%m/%Y')} ⏰ **Thời gian:** {years} năm 📋 **Căn cứ pháp lý:** {get_legal_basis(case_type)} ⚖️ **Lưu ý:** Tòa án chỉ áp dụng thời hiệu theo yêu cầu của đương sự (Điều 149 BLDS 2015) """ else: days_left = (end_date - today).days return f""" ✅ **CÒN THỜI HIỆU** 📅 **Thời hiệu hết hạn:** {end_date.strftime('%d/%m/%Y')} ⏰ **Còn lại:** {days_left} ngày ({years} năm từ ngày phát sinh) 📋 **Căn cứ pháp lý:** {get_legal_basis(case_type)} ⚖️ **Lưu ý:** Thời hiệu được tính từ ngày biết hoặc phải biết quyền bị xâm phạm (Điều 154 BLDS 2015) """ except: return "Lỗi: Vui lòng nhập đúng định dạng ngày" def get_legal_basis(case_type): legal_basis = { "Tranh chấp hợp đồng": "Điều 429 BLDS 2015", "Bồi thường thiệt hại": "Điều 588 BLDS 2015", "Tranh chấp đất đai": "Điều 154 BLDS 2015", "Thừa kế - chia di sản (BĐS)": "Điều 623 BLDS 2015", "Thừa kế - chia di sản (ĐS)": "Điều 623 BLDS 2015", "Xác nhận quyền thừa kế": "Điều 623 BLDS 2015", "Tuyên bố giao dịch vô hiệu": "Điều 132 BLDS 2015" } return legal_basis.get(case_type, "Điều 154 BLDS 2015") # Hàm tính án phí def calculate_court_fee(asset_value): if not asset_value or asset_value <= 0: return "Vui lòng nhập giá trị tài sản hợp lệ" # Theo Nghị quyết 326/2016/UBTVQH14 if asset_value <= 6000000: fee = 300000 elif asset_value <= 400000000: fee = asset_value * 0.05 elif asset_value <= 800000000: fee = 20000000 + (asset_value - 400000000) * 0.04 elif asset_value <= 2000000000: fee = 36000000 + (asset_value - 800000000) * 0.03 elif asset_value <= 4000000000: fee = 72000000 + (asset_value - 2000000000) * 0.02 else: fee = 112000000 + (asset_value - 4000000000) * 0.001 advance_fee = fee * 0.5 # Tạm ứng 50% return f""" 💰 **KẾT QUẢ TÍNH ÁN PHÍ** 📊 **Giá trị tài sản:** {asset_value:,.0f} VNĐ ⚖️ **Án phí:** {fee:,.0f} VNĐ 💳 **Tạm ứng án phí:** {advance_fee:,.0f} VNĐ 📋 **Căn cứ pháp lý:** Nghị quyết 326/2016/UBTVQH14 📝 **Ghi chú:** Tạm ứng án phí bằng 50% mức án phí dự tính """ # Hàm tính lãi suất chậm trả def calculate_late_interest(principal, interest_rate, days): if not all([principal, interest_rate, days]) or any(x <= 0 for x in [principal, interest_rate, days]): return "Vui lòng nhập đầy đủ thông tin hợp lệ" if interest_rate > 20: return "⚠️ Lãi suất không được vượt quá 20%/năm theo Điều 468 BLDS 2015" # Tính lãi chậm trả daily_rate = interest_rate / 100 / 365 interest_amount = principal * daily_rate * days total_amount = principal + interest_amount return f""" 💰 **KẾT QUẢ TÍNH LÃI CHẬM TRẢ** 💵 **Số tiền gốc:** {principal:,.0f} VNĐ 📈 **Lãi suất:** {interest_rate}%/năm 📅 **Số ngày chậm trả:** {days} ngày 💸 **Tiền lãi chậm trả:** {interest_amount:,.0f} VNĐ 💰 **Tổng số tiền phải trả:** {total_amount:,.0f} VNĐ 📋 **Căn cứ pháp lý:** - Điều 357 BLDS 2015: Trách nhiệm do chậm thực hiện nghĩa vụ trả tiền - Điều 468 BLDS 2015: Lãi suất tối đa 20%/năm 📝 **Ghi chú:** Nếu không thỏa thuận lãi suất, áp dụng 10%/năm (50% mức giới hạn) """ # Hàm tính thù lao luật sư def calculate_lawyer_fee(hourly_rate, hours): if not all([hourly_rate, hours]) or any(x <= 0 for x in [hourly_rate, hours]): return "Vui lòng nhập đầy đủ thông tin hợp lệ" max_rate = 702000 # Mức tối đa theo quy định mới if hourly_rate > max_rate: return f"⚠️ Thù lao không được vượt quá {max_rate:,.0f} VNĐ/giờ theo quy định hiện hành" total_fee = hourly_rate * hours return f""" 💼 **KẾT QUẢ TÍNH THÙ LAO LUẬT SƯ** 💰 **Mức thù lao/giờ:** {hourly_rate:,.0f} VNĐ ⏰ **Số giờ làm việc:** {hours} giờ 💵 **Tổng thù lao:** {total_fee:,.0f} VNĐ 📋 **Căn cứ pháp lý:** Nghị định 73/2024/NĐ-CP 📝 **Ghi chú:** - Mức lương cơ sở: 2.340.000 VNĐ/tháng (từ 01/7/2024) - Thù lao tối đa: 702.000 VNĐ/giờ (0,3 lần mức lương cơ sở) """ # Tạo giao diện Gradio with gr.Blocks( title="Luật Sư Calculator - Công cụ tính toán pháp lý", theme=gr.themes.Soft(), css=""" .main-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; border-radius: 15px; text-align: center; margin-bottom: 20px; } .feature-card { background: rgba(102, 126, 234, 0.1); border-left: 4px solid #667eea; padding: 15px; margin: 10px 0; border-radius: 8px; } .step-box { background: rgba(255, 255, 255, 0.8); border-radius: 8px; padding: 15px; margin: 10px 0; border-left: 4px solid #667eea; } .footer { text-align: center; padding: 20px; color: #666; border-top: 1px solid #eee; margin-top: 30px; } /* Dark theme support */ .dark .main-header { background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%); } .dark .feature-card { background: rgba(74, 85, 104, 0.3); border-left-color: #90cdf4; color: #e2e8f0; } .dark .step-box { background: rgba(45, 55, 72, 0.8); border-left-color: #90cdf4; color: #e2e8f0; } .dark .footer { color: #a0aec0; border-top-color: #4a5568; } """ ) as app: with gr.Column(): gr.HTML("""

⚖️ Luật Sư Calculator

Công cụ tính toán pháp lý tổng hợp cho luật sư Việt Nam

""") with gr.Tabs(): with gr.Tab("📖 Giới thiệu"): gr.HTML("""

🎯 Tại sao cần công cụ này?

⏱️ Tiết kiệm thời gian:

Không cần tra cứu và tính toán thủ công

✅ Tránh sai sót:

Công thức được lập trình theo quy định pháp luật

⚡ Tư vấn chính xác:

Cung cấp thông tin nhanh chóng cho khách hàng

📱 Miễn phí:

Sử dụng mọi lúc, mọi nơi

🛠️ Tính năng chính

⏰ Tính thời hiệu khởi kiện

Theo từng loại vụ án: hợp đồng, bất động sản, thừa kế...

💰 Tính án phí dân sự

Theo giá trị tài sản tranh chấp, bao gồm tạm ứng

📈 Tính lãi suất chậm trả

Theo quy định BLDS 2015, tối đa 20%/năm

💼 Tính thù lao luật sư

Theo giờ làm việc, tối đa 702.000 VNĐ/giờ

""") with gr.Tab("⏰ Thời hiệu khởi kiện"): with gr.Row(): with gr.Column(): statute_date = gr.Textbox( label="Ngày phát sinh quyền yêu cầu", info="Định dạng: YYYY-MM-DD (ví dụ: 2024-01-01)", placeholder="2024-01-01" ) case_type = gr.Dropdown( choices=[ "Tranh chấp hợp đồng", "Bồi thường thiệt hại", "Tranh chấp đất đai", "Thừa kế - chia di sản (BĐS)", "Thừa kế - chia di sản (ĐS)", "Xác nhận quyền thừa kế", "Tuyên bố giao dịch vô hiệu" ], label="Loại vụ án", info="Chọn loại vụ án để áp dụng thời hiệu phù hợp" ) statute_btn = gr.Button("Tính thời hiệu", variant="primary") with gr.Column(): statute_result = gr.Markdown(label="Kết quả") statute_btn.click( fn=calculate_statute_of_limitations, inputs=[statute_date, case_type], outputs=statute_result ) with gr.Tab("💰 Án phí dân sự"): with gr.Row(): with gr.Column(): asset_value = gr.Number( label="Giá trị tài sản tranh chấp (VNĐ)", info="Ví dụ: 500000000" ) fee_btn = gr.Button("Tính án phí", variant="primary") with gr.Column(): fee_result = gr.Markdown(label="Kết quả") fee_btn.click( fn=calculate_court_fee, inputs=asset_value, outputs=fee_result ) with gr.Tab("📈 Lãi suất chậm trả"): with gr.Row(): with gr.Column(): principal = gr.Number( label="Số tiền gốc (VNĐ)", info="Ví dụ: 100000000" ) interest_rate = gr.Number( label="Lãi suất (%/năm)", info="Tối đa 20%/năm, mặc định 10%/năm" ) delay_days = gr.Number( label="Số ngày chậm trả", info="Ví dụ: 90" ) interest_btn = gr.Button("Tính lãi chậm trả", variant="primary") with gr.Column(): interest_result = gr.Markdown(label="Kết quả") interest_btn.click( fn=calculate_late_interest, inputs=[principal, interest_rate, delay_days], outputs=interest_result ) with gr.Tab("💼 Thù lao luật sư"): with gr.Row(): with gr.Column(): hourly_rate = gr.Number( label="Mức thù lao/giờ (VNĐ)", info="Tối đa 702.000 VNĐ/giờ" ) working_hours = gr.Number( label="Số giờ làm việc", info="Ví dụ: 20" ) lawyer_btn = gr.Button("Tính thù lao", variant="primary") with gr.Column(): lawyer_result = gr.Markdown(label="Kết quả") lawyer_btn.click( fn=calculate_lawyer_fee, inputs=[hourly_rate, working_hours], outputs=lawyer_result ) with gr.Tab("📖 Hướng dẫn"): gr.HTML("""

📋 Hướng dẫn sử dụng

Bước 1: Chọn tính năng

Click vào tab tương ứng với tính năng bạn cần sử dụng

Bước 2: Nhập thông tin

Điền đầy đủ các thông tin cần thiết vào form

Bước 3: Tính toán

Click nút tính toán để xem kết quả

Bước 4: Sử dụng kết quả

Copy kết quả để sử dụng trong công việc

❓ Câu hỏi thường gặp

Kết quả có chính xác không?

Có, công cụ được lập trình dựa trên các quy định pháp luật hiện hành với căn cứ pháp lý cụ thể được ghi rõ trong mỗi kết quả tính toán.

Có cần đăng ký tài khoản?

Không, công cụ hoàn toàn miễn phí và không cần đăng ký.

Dữ liệu có được lưu trữ?

Không, tất cả tính toán được thực hiện trên server và không lưu trữ dữ liệu cá nhân.

Căn cứ pháp lý được cập nhật khi nào?

Công cụ được cập nhật theo các quy định pháp luật mới nhất. Hiện tại áp dụng BLDS 2015, Nghị quyết 326/2016/UBTVQH14 và Nghị định 73/2024/NĐ-CP.

""") gr.HTML(""" """) if __name__ == "__main__": app.launch(server_name="0.0.0.0", server_port=7860)