Update src/api/agent.py
Browse files- src/api/agent.py +72 -16
src/api/agent.py
CHANGED
|
@@ -518,23 +518,79 @@ def _rule_based_classify(question: str) -> Dict[str, str]:
|
|
| 518 |
|
| 519 |
|
| 520 |
def _hours_answer() -> str:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 521 |
return (
|
| 522 |
-
"Here are the
|
| 523 |
-
"<
|
| 524 |
-
|
| 525 |
-
|
| 526 |
-
"
|
| 527 |
-
"
|
| 528 |
-
|
| 529 |
-
"<
|
| 530 |
-
"
|
| 531 |
-
"
|
| 532 |
-
"
|
| 533 |
-
"
|
| 534 |
-
|
| 535 |
-
"
|
| 536 |
-
"
|
| 537 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 538 |
)
|
| 539 |
|
| 540 |
|
|
|
|
| 518 |
|
| 519 |
|
| 520 |
def _hours_answer() -> str:
|
| 521 |
+
"""
|
| 522 |
+
Return a rich, day-aware library hours answer.
|
| 523 |
+
Always links to https://library.ku.ac.ae/hours for live schedule.
|
| 524 |
+
"""
|
| 525 |
+
from datetime import datetime, timezone, timedelta
|
| 526 |
+
# UAE is UTC+4
|
| 527 |
+
uae_now = datetime.now(timezone(timedelta(hours=4)))
|
| 528 |
+
day_num = uae_now.weekday() # 0=Mon β¦ 6=Sun
|
| 529 |
+
# Map to day name
|
| 530 |
+
day_names = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
| 531 |
+
today = day_names[day_num]
|
| 532 |
+
|
| 533 |
+
# Hours by day (0=Mon β¦ 6=Sun)
|
| 534 |
+
_HOURS = {
|
| 535 |
+
"Sunday": ("Open", "8:00 AM β 7:00 PM"),
|
| 536 |
+
"Monday": ("Open", "8:00 AM β 7:00 PM"),
|
| 537 |
+
"Tuesday": ("Open", "8:00 AM β 7:00 PM"),
|
| 538 |
+
"Wednesday": ("Open", "8:00 AM β 7:00 PM"),
|
| 539 |
+
"Thursday": ("Open", "8:00 AM β 4:00 PM"),
|
| 540 |
+
"Friday": ("Closed", ""),
|
| 541 |
+
"Saturday": ("Open", "12:00 PM β 8:00 PM"),
|
| 542 |
+
}
|
| 543 |
+
status, hours_str = _HOURS.get(today, ("Unknown", ""))
|
| 544 |
+
|
| 545 |
+
if status == "Closed":
|
| 546 |
+
today_line = f'π
<strong>Today ({today}):</strong> <span style="color:#dc2626">Closed</span>'
|
| 547 |
+
elif status == "Open":
|
| 548 |
+
today_line = (
|
| 549 |
+
f'π
<strong>Today ({today}):</strong> '
|
| 550 |
+
f'<span style="color:#16a34a">Open</span> Β· {hours_str}'
|
| 551 |
+
)
|
| 552 |
+
else:
|
| 553 |
+
today_line = f'π
<strong>Today ({today}):</strong> Check the live hours page.'
|
| 554 |
+
|
| 555 |
return (
|
| 556 |
+
f"Here are the <strong>Khalifa University Library</strong> hours:<br><br>"
|
| 557 |
+
f"{today_line}<br><br>"
|
| 558 |
+
|
| 559 |
+
# Main Campus
|
| 560 |
+
"<strong>π Main Campus Library</strong><br>"
|
| 561 |
+
"<span style='font-size:.82rem;color:#6b7280'>E Building, Main Campus, Abu Dhabi Β· "
|
| 562 |
+
'<a href="tel:+97123124604">+971 2 312 4604</a></span><br><br>'
|
| 563 |
+
"<table style='font-size:.85rem;border-collapse:collapse;width:100%;max-width:380px'>"
|
| 564 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Sunday β Wednesday</td>"
|
| 565 |
+
"<td style='padding:3px 0;font-weight:600;color:#16a34a'>8:00 AM β 7:00 PM</td></tr>"
|
| 566 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Thursday</td>"
|
| 567 |
+
"<td style='padding:3px 0;font-weight:600;color:#d97706'>8:00 AM β 4:00 PM</td></tr>"
|
| 568 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Friday</td>"
|
| 569 |
+
"<td style='padding:3px 0;font-weight:600;color:#dc2626'>Closed</td></tr>"
|
| 570 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Saturday</td>"
|
| 571 |
+
"<td style='padding:3px 0;font-weight:600;color:#16a34a'>12:00 PM β 8:00 PM</td></tr>"
|
| 572 |
+
"</table><br>"
|
| 573 |
+
|
| 574 |
+
# Habshan / SAN
|
| 575 |
+
"<strong>π Habshan Library (SAN Campus)</strong><br>"
|
| 576 |
+
"<span style='font-size:.82rem;color:#6b7280'>Building 5, Sas Al Nakhl Campus, Abu Dhabi Β· "
|
| 577 |
+
'<a href="tel:+97123123160">+971 2 312 3160</a></span><br><br>'
|
| 578 |
+
"<table style='font-size:.85rem;border-collapse:collapse;width:100%;max-width:380px'>"
|
| 579 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Sunday β Wednesday</td>"
|
| 580 |
+
"<td style='padding:3px 0;font-weight:600;color:#16a34a'>8:00 AM β 7:00 PM</td></tr>"
|
| 581 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Thursday</td>"
|
| 582 |
+
"<td style='padding:3px 0;font-weight:600;color:#d97706'>8:00 AM β 4:00 PM</td></tr>"
|
| 583 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Friday</td>"
|
| 584 |
+
"<td style='padding:3px 0;font-weight:600;color:#dc2626'>Closed</td></tr>"
|
| 585 |
+
"<tr><td style='padding:3px 12px 3px 0;color:#374151'>Saturday</td>"
|
| 586 |
+
"<td style='padding:3px 0;font-weight:600;color:#16a34a'>12:00 PM β 8:00 PM</td></tr>"
|
| 587 |
+
"</table><br>"
|
| 588 |
+
|
| 589 |
+
# Warning + live link
|
| 590 |
+
"β οΈ <strong>Hours change during Ramadan, exam periods, and public holidays.</strong><br>"
|
| 591 |
+
f'Always check the live schedule: '
|
| 592 |
+
f'<a href="{LIBRARY_HOURS_URL}" target="_blank" style="font-weight:700;color:#003366">'
|
| 593 |
+
f'{LIBRARY_HOURS_URL}</a>'
|
| 594 |
)
|
| 595 |
|
| 596 |
|