diginoron commited on
Commit
db982f4
·
verified ·
1 Parent(s): 256ba91

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -25
app.py CHANGED
@@ -15,10 +15,6 @@ HS_CSV_URL = (
15
  hs_df = pd.read_csv(HS_CSV_URL, dtype=str)
16
 
17
  def get_product_name(hs_code: str) -> str:
18
- """
19
- از DataFrame محلی hs_df نام محصول متناظر با کد HS را می‌گیرد.
20
- اگر یافت نشد، '–' برمی‌گرداند.
21
- """
22
  code4 = str(hs_code).zfill(4)
23
  row = hs_df[hs_df["hscode"] == code4]
24
  return row.iloc[0]["description"] if not row.empty else "–"
@@ -37,27 +33,27 @@ def get_importers(hs_code: str, year: str, month: str):
37
  if df is None or df.empty:
38
  return product_name, pd.DataFrame()
39
 
40
- # محدود کردن تعداد سطر برای جلوگیری از خطای بیش از حد ورودی
41
- df = df.sort_values('TradeValue', ascending=False).head(10)
 
 
 
 
 
 
 
 
42
 
43
- # بررسی وجود ستون‌های استاندارد
44
- std_cols = ['ptCode', 'ptTitle', 'TradeValue']
45
- if all(col in df.columns for col in std_cols):
46
- out = df[std_cols]
47
- out.columns = ['کد کشور', 'نام کشور', 'ارزش CIF']
48
- return product_name, out
49
 
50
- # یافتن ستون‌های مشابه بر اساس نام
51
- code_col = next((c for c in df.columns if 'code' in c.lower()), None)
52
- title_col = next((c for c in df.columns if 'title' in c.lower()), None)
53
- value_col = next((c for c in df.columns if 'value' in c.lower()), None)
54
- if code_col and title_col and value_col:
55
- out = df[[code_col, title_col, value_col]]
56
- out.columns = ['کد کشور', 'نام کشور', 'ارزش CIF']
57
- return product_name, out
58
 
59
- # اگر هیچ‌کدام پیدا نشد، DataFrame خام را برگردان
60
- return product_name, df
 
61
 
62
  # --- تابع تولید مشاوره تخصصی با GPU کرایه‌ای ---
63
  hf_token = os.getenv("HF_API_TOKEN")
@@ -69,12 +65,12 @@ def provide_advice(table_data: pd.DataFrame, hs_code: str, year: str, month: str
69
  if table_data is None or table_data.empty:
70
  return "ابتدا نمایش داده‌های واردات را انجام دهید."
71
 
72
- # محدودسازی تعداد ردیف‌ها برای متن ورودی
73
  df_limited = table_data.head(10)
74
  table_str = df_limited.to_string(index=False)
75
  period = f"{year}/{int(month):02d}"
76
  prompt = (
77
- f"The following table shows the top 10 countries by CIF value importing HS code {hs_code} during {period}:\n"
78
  f"{table_str}\n\n"
79
  "Please provide a detailed and comprehensive analysis of market trends, risks, "
80
  "and opportunities for a new exporter entering this market."
@@ -121,4 +117,4 @@ with gr.Blocks() as demo:
121
  )
122
 
123
  if __name__ == "__main__":
124
- demo.launch()
 
15
  hs_df = pd.read_csv(HS_CSV_URL, dtype=str)
16
 
17
  def get_product_name(hs_code: str) -> str:
 
 
 
 
18
  code4 = str(hs_code).zfill(4)
19
  row = hs_df[hs_df["hscode"] == code4]
20
  return row.iloc[0]["description"] if not row.empty else "–"
 
33
  if df is None or df.empty:
34
  return product_name, pd.DataFrame()
35
 
36
+ # شناسایی ستون‌های مورد نیاز (کد کشور، نام کشور، ارزش)
37
+ # ابتدا سعی در استفاده از ستون‌های استاندارد
38
+ std_map = {
39
+ 'کد کشور': 'ptCode',
40
+ 'نام کشور': 'ptTitle',
41
+ 'ارزش CIF': 'TradeValue'
42
+ }
43
+ code_col = std_map['کد کشور'] if 'ptCode' in df.columns else next((c for c in df.columns if 'code' in c.lower()), None)
44
+ title_col= std_map['نام کشور'] if 'ptTitle' in df.columns else next((c for c in df.columns if 'title' in c.lower()), None)
45
+ value_col= std_map['ارزش CIF'] if 'TradeValue' in df.columns else next((c for c in df.columns if 'value' in c.lower()), None)
46
 
47
+ if not (code_col and title_col and value_col):
48
+ # اگر نتوانست ستون‌ها را شناسایی کند، برگرداندن DataFrame خام
49
+ return product_name, df
 
 
 
50
 
51
+ # محدودسازی به 10 کشور برتر بر اساس ستون value_col
52
+ df_sorted = df.sort_values(value_col, ascending=False).head(10)
 
 
 
 
 
 
53
 
54
+ out = df_sorted[[code_col, title_col, value_col]]
55
+ out.columns = ['کد کشور', 'نام کشور', 'ارزش CIF']
56
+ return product_name, out
57
 
58
  # --- تابع تولید مشاوره تخصصی با GPU کرایه‌ای ---
59
  hf_token = os.getenv("HF_API_TOKEN")
 
65
  if table_data is None or table_data.empty:
66
  return "ابتدا نمایش داده‌های واردات را انجام دهید."
67
 
68
+ # محدودسازی تعداد ردیف‌های ورودی به 10 (در صورت بیشتر)
69
  df_limited = table_data.head(10)
70
  table_str = df_limited.to_string(index=False)
71
  period = f"{year}/{int(month):02d}"
72
  prompt = (
73
+ f"The following table shows the top {len(df_limited)} countries by CIF value importing HS code {hs_code} during {period}:\n"
74
  f"{table_str}\n\n"
75
  "Please provide a detailed and comprehensive analysis of market trends, risks, "
76
  "and opportunities for a new exporter entering this market."
 
117
  )
118
 
119
  if __name__ == "__main__":
120
+ demo.launch()