SamiKoen commited on
Commit
7480421
·
1 Parent(s): b60320f

Tüm varyantları göster ve Alsancak filtrelemesini düzelt

Browse files
Files changed (1) hide show
  1. smart_warehouse.py +48 -55
smart_warehouse.py CHANGED
@@ -10,7 +10,7 @@ def get_warehouse_stock_smart(user_message, previous_result=None):
10
 
11
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
12
 
13
- # Check if user is asking about specific warehouse from previous result
14
  warehouse_keywords = {
15
  'caddebostan': 'Caddebostan',
16
  'ortaköy': 'Ortaköy',
@@ -28,16 +28,6 @@ def get_warehouse_stock_smart(user_message, previous_result=None):
28
  asked_warehouse = warehouse
29
  break
30
 
31
- # If asking about warehouse and we have previous result, filter it
32
- if asked_warehouse and previous_result and isinstance(previous_result, list):
33
- filtered = []
34
- for line in previous_result:
35
- if asked_warehouse in line or "Bulunan" in line or "varyant" in line:
36
- filtered.append(line)
37
-
38
- if len(filtered) > 2: # Has actual warehouse data
39
- return filtered
40
-
41
  # Get XML data with retry
42
  xml_text = None
43
  for attempt in range(3): # Try 3 times
@@ -146,9 +136,9 @@ Examples:
146
  # Parse multiple indices
147
  indices = [int(idx.strip()) for idx in indices_str.split(',')]
148
 
149
- # Aggregate warehouse info from all matching products
150
- all_warehouses = {}
151
- product_details = []
152
 
153
  for idx in indices:
154
  if 0 <= idx < len(all_products):
@@ -162,6 +152,13 @@ Examples:
162
  product_name = name_match.group(1)
163
  variant = variant_match.group(1) if variant_match else ""
164
 
 
 
 
 
 
 
 
165
  # Get warehouse stock
166
  warehouse_regex = r'<Warehouse>.*?<Name><!\[CDATA\[(.*?)\]\]></Name>.*?<Stock>(.*?)</Stock>.*?</Warehouse>'
167
  warehouses = re.findall(warehouse_regex, product_block, re.DOTALL)
@@ -170,61 +167,57 @@ Examples:
170
  try:
171
  stock = int(wh_stock.strip())
172
  if stock > 0:
173
- # Format warehouse name
174
  display_name = format_warehouse_name(wh_name)
 
 
 
 
175
 
176
- # If filtering by warehouse, only include that warehouse
177
- if asked_warehouse:
178
- if asked_warehouse in display_name:
179
- product_details.append({
180
- 'name': product_name,
181
- 'variant': variant,
182
- 'warehouse': display_name,
183
- 'stock': stock
184
- })
185
- else:
186
- if display_name not in all_warehouses:
187
- all_warehouses[display_name] = []
188
- all_warehouses[display_name].append({
189
- 'variant': variant,
190
- 'stock': stock
191
- })
192
  except:
193
  pass
 
 
 
194
 
195
  # Format result
196
  result = []
197
 
198
  if asked_warehouse:
199
- # Show products in specific warehouse
200
- if product_details:
201
- result.append(f"{asked_warehouse} mağazasında mevcut:")
202
- for detail in product_details:
203
- result.append(f"• {detail['name']} ({detail['variant']}): {detail['stock']} adet")
 
 
 
 
 
 
 
 
 
 
204
  else:
205
- result.append(f"{asked_warehouse} mağazasında bu ürün mevcut değil")
206
  else:
207
- # Show all warehouses
208
- if all_warehouses:
209
- result.append(f"Bulunan {sum(len(v) for v in all_warehouses.values())} varyant:")
210
-
211
- # Show a sample of variants
212
- shown = 0
213
- for warehouse, variants in all_warehouses.items():
214
- for v in variants[:2]: # Show max 2 per warehouse
215
- if shown < 5:
216
- variant_text = f" ({v['variant']})" if v['variant'] else ""
217
- result.append(f"• {product_name}{variant_text}")
218
- shown += 1
219
 
220
- if sum(len(v) for v in all_warehouses.values()) > 5:
221
- result.append(f"... ve {sum(len(v) for v in all_warehouses.values()) - 5} varyant daha")
 
 
222
 
223
  result.append("")
224
- result.append("Toplam stok durumu:")
225
- for warehouse, variants in sorted(all_warehouses.items()):
226
- total = sum(v['stock'] for v in variants)
227
- result.append(f"{warehouse}: {total} adet")
228
  else:
229
  result.append("Hiçbir mağazada stok yok")
230
 
 
10
 
11
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
12
 
13
+ # Check if user is asking about specific warehouse
14
  warehouse_keywords = {
15
  'caddebostan': 'Caddebostan',
16
  'ortaköy': 'Ortaköy',
 
28
  asked_warehouse = warehouse
29
  break
30
 
 
 
 
 
 
 
 
 
 
 
31
  # Get XML data with retry
32
  xml_text = None
33
  for attempt in range(3): # Try 3 times
 
136
  # Parse multiple indices
137
  indices = [int(idx.strip()) for idx in indices_str.split(',')]
138
 
139
+ # Collect all matching products
140
+ all_variants = []
141
+ warehouse_stock = {}
142
 
143
  for idx in indices:
144
  if 0 <= idx < len(all_products):
 
152
  product_name = name_match.group(1)
153
  variant = variant_match.group(1) if variant_match else ""
154
 
155
+ # Track this variant
156
+ variant_info = {
157
+ 'name': product_name,
158
+ 'variant': variant,
159
+ 'warehouses': []
160
+ }
161
+
162
  # Get warehouse stock
163
  warehouse_regex = r'<Warehouse>.*?<Name><!\[CDATA\[(.*?)\]\]></Name>.*?<Stock>(.*?)</Stock>.*?</Warehouse>'
164
  warehouses = re.findall(warehouse_regex, product_block, re.DOTALL)
 
167
  try:
168
  stock = int(wh_stock.strip())
169
  if stock > 0:
 
170
  display_name = format_warehouse_name(wh_name)
171
+ variant_info['warehouses'].append({
172
+ 'name': display_name,
173
+ 'stock': stock
174
+ })
175
 
176
+ # Track total stock per warehouse
177
+ if display_name not in warehouse_stock:
178
+ warehouse_stock[display_name] = 0
179
+ warehouse_stock[display_name] += stock
 
 
 
 
 
 
 
 
 
 
 
 
180
  except:
181
  pass
182
+
183
+ if variant_info['warehouses']: # Only add if has stock
184
+ all_variants.append(variant_info)
185
 
186
  # Format result
187
  result = []
188
 
189
  if asked_warehouse:
190
+ # Filter for specific warehouse
191
+ warehouse_variants = []
192
+ for variant in all_variants:
193
+ for wh in variant['warehouses']:
194
+ if asked_warehouse in wh['name']:
195
+ warehouse_variants.append({
196
+ 'name': variant['name'],
197
+ 'variant': variant['variant'],
198
+ 'stock': wh['stock']
199
+ })
200
+
201
+ if warehouse_variants:
202
+ result.append(f"{format_warehouse_name(asked_warehouse)} mağazasında mevcut:")
203
+ for v in warehouse_variants:
204
+ result.append(f"• {v['name']} ({v['variant']}): {v['stock']} adet")
205
  else:
206
+ result.append(f"{format_warehouse_name(asked_warehouse)} mağazasında bu ürün mevcut değil")
207
  else:
208
+ # Show all variants and warehouses
209
+ if all_variants:
210
+ result.append(f"Bulunan {len(all_variants)} varyant:")
 
 
 
 
 
 
 
 
 
211
 
212
+ # Show ALL variants (not just first 5)
213
+ for variant in all_variants:
214
+ variant_text = f" ({variant['variant']})" if variant['variant'] else ""
215
+ result.append(f"• {variant['name']}{variant_text}")
216
 
217
  result.append("")
218
+ result.append("Mağaza stok durumu:")
219
+ for warehouse, total_stock in sorted(warehouse_stock.items()):
220
+ result.append(f"{warehouse}: {total_stock} adet")
 
221
  else:
222
  result.append("Hiçbir mağazada stok yok")
223