Reza-galaxy21 commited on
Commit
83340e8
·
verified ·
1 Parent(s): 7baa90b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -24
app.py CHANGED
@@ -1,33 +1,58 @@
1
  import gradio as gr
2
- from utils import parse_excel_file, parse_user_input, save_to_json
 
 
3
 
4
- def process_file(file):
5
- if file is None:
6
- return "⚠️ لطفاً یک فایل اکسل انتخاب کنید."
7
 
 
 
 
 
8
  try:
 
9
  materials = parse_excel_file(file.name)
10
- save_to_json(materials)
11
- user_data = parse_user_input(file.name)
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- msg = f"✅ اطلاعات برای «{len(materials)}» ماده با موفقیت ذخیره شد."
14
- if user_data:
15
- msg += f"\n👤 ورودی کاربر شناسایی شد و شامل {len(user_data)} ردیف است."
16
- else:
17
- msg += "\nℹ️ شیت ورودی کاربر یافت نشد یا خالی بود."
18
 
19
- return msg
20
 
21
  except Exception as e:
22
- return str(e)
23
-
24
- iface = gr.Interface(
25
- fn=process_file,
26
- inputs=gr.File(label="بارگذاری فایل اکسل"),
27
- outputs=gr.Textbox(label="نتیجه"),
28
- title="ایجاد کتابخانه مواد از فایل اکسل",
29
- description="فایل اکسل را بارگذاری کنید تا اطلاعات براورد به‌صورت JSON ذخیره شود. شیت دوم اختیاری است."
30
- )
31
-
32
- if __name__ == "__main__":
33
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import os
3
+ import json
4
+ from utils import parse_excel_file, save_to_json
5
 
6
+ DATA_FILE = "material_db.json"
 
 
7
 
8
+ def process_excel(file, description):
9
+ if file is None:
10
+ return "❌ لطفاً یک فایل اکسل بارگذاری کنید.", ""
11
+
12
  try:
13
+ # پردازش فایل اکسل
14
  materials = parse_excel_file(file.name)
15
+ record = {
16
+ "project_description": description.strip(),
17
+ "materials": materials
18
+ }
19
+
20
+ # ذخیره در فایل JSON (append)
21
+ all_data = []
22
+ if os.path.exists(DATA_FILE):
23
+ with open(DATA_FILE, "r", encoding="utf-8") as f:
24
+ try:
25
+ all_data = json.load(f)
26
+ except json.JSONDecodeError:
27
+ pass # فایل خالی
28
 
29
+ all_data.append(record)
30
+ save_to_json(all_data, DATA_FILE)
 
 
 
31
 
32
+ return f"✅ اطلاعات برای «{len(materials)}» ماده با موفقیت ذخیره شد.\n📝 توصیف پروژه: {description}", json.dumps(record, indent=2, ensure_ascii=False)
33
 
34
  except Exception as e:
35
+ return str(e), ""
36
+
37
+ with gr.Blocks(title="کتابخانه پروژه‌های برآورد") as demo:
38
+ gr.Markdown("## 📦 ابزار ساخت کتابخانه مواد پروژه")
39
+
40
+ with gr.Tabs():
41
+ with gr.TabItem("📤 ثبت پروژه جدید"):
42
+ gr.Markdown("در این بخش فایل اکسل خود را بارگذاری کنید و توصیف پروژه را بنویسید.")
43
+ with gr.Row():
44
+ excel_input = gr.File(label="فایل اکسل", file_types=[".xlsx"])
45
+ description_input = gr.Textbox(label="توصیف پروژه", lines=3, placeholder="مثلاً: برآورد نصب چراغ روشنایی با لامپ 70 وات...")
46
+
47
+ with gr.Row():
48
+ submit_btn = gr.Button("📥 ذخیره در کتابخانه")
49
+
50
+ output_msg = gr.Textbox(label="وضعیت ذخیره‌سازی", interactive=False)
51
+ output_json = gr.Code(label="📦 خروجی ذخیره‌شده", language="json")
52
+
53
+ submit_btn.click(fn=process_excel, inputs=[excel_input, description_input], outputs=[output_msg, output_json])
54
+
55
+ with gr.TabItem("📚 مشاهده توضیحات (در نسخه‌های بعدی)"):
56
+ gr.Markdown("در نسخه‌های آینده، اینجا می‌تونید پروژه‌های ثبت‌شده رو ببینید و تحلیل GPT بگیرید.")
57
+
58
+ demo.launch()