-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
96 lines (76 loc) · 3.3 KB
/
main.py
File metadata and controls
96 lines (76 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import time
import pandas as pd
from agents import inventory_agent, ordering_agent, quoting_agent
from constants import DATA_FOLDER, RESULTS_FOLDER
from db import DB_ENGINE, init_database
from entities import QuoteRequestSample
from orchestrator import MultiAgentOrchestrator
from tools_functions import generate_financial_report
def run_test_scenarios():
print("Initializing Database...")
init_database(DB_ENGINE)
try:
quote_requests_sample = pd.read_csv(f"{DATA_FOLDER}/quote_requests_sample.csv")
quote_requests_sample["request_date"] = pd.to_datetime(
quote_requests_sample["request_date"], format="%m/%d/%y", errors="coerce"
)
quote_requests_sample.dropna(subset=["request_date"], inplace=True)
quote_requests_sample = quote_requests_sample.sort_values("request_date")
except Exception as e:
print(f"FATAL: Error loading test data: {e}")
return
quote_requests_sample = pd.read_csv(f"{DATA_FOLDER}/quote_requests_sample.csv")
# Sort by date
quote_requests_sample["request_date"] = pd.to_datetime(
quote_requests_sample["request_date"]
)
quote_requests_sample = quote_requests_sample.sort_values("request_date")
# Get initial state
initial_date = quote_requests_sample["request_date"].min().strftime("%Y-%m-%d")
report = generate_financial_report(initial_date)
current_cash = report["cash_balance"]
current_inventory = report["inventory_value"]
orchestrator = MultiAgentOrchestrator(
inventory_agent=inventory_agent,
quoting_agent=quoting_agent,
ordering_agent=ordering_agent,
)
results = []
for idx, row in quote_requests_sample.iterrows():
request_date = row["request_date"].strftime("%Y-%m-%d")
print(f"\n=== Request {idx+1} ===")
print(f"Context: {row['job']} organizing {row['event']}")
print(f"Request Date: {request_date}")
print(f"Cash Balance: ${current_cash:.2f}")
print(f"Inventory Value: ${current_inventory:.2f}")
# Process request
response = orchestrator.process_request(QuoteRequestSample(**row))
# Update state
report = generate_financial_report(request_date)
current_cash = report["cash_balance"]
current_inventory = report["inventory_value"]
print(f"Response: {response}")
print(f"Updated Cash: ${current_cash:.2f}")
print(f"Updated Inventory: ${current_inventory:.2f}")
results.append(
{
"request_id": idx + 1,
"request_date": request_date,
"cash_balance": current_cash,
"inventory_value": current_inventory,
"response": str(response),
}
)
time.sleep(1)
# Final report
final_date = quote_requests_sample["request_date"].max().strftime("%Y-%m-%d")
final_report = generate_financial_report(final_date)
print("\n===== FINAL FINANCIAL REPORT =====")
print(f"Final Cash: ${final_report['cash_balance']:.2f}")
print(f"Final Inventory: ${final_report['inventory_value']:.2f}")
# Save results
pd.DataFrame(results).to_csv(f"{RESULTS_FOLDER}/test_results.csv", index=False)
return results
if __name__ == "__main__":
results = run_test_scenarios()
print("\nTest scenarios completed.")