Spaces:
Running
Running
| # src/utils.py | |
| from __future__ import annotations | |
| from typing import Optional | |
| from src.config import ARTICLE_ID_RE, LIST_TRIGGERS, FULLTEXT_TRIGGERS, EXPLAIN_TRIGGERS | |
| def normalize_article_id(raw: str) -> str: | |
| return (raw or "").strip().upper().replace(" ", "").replace(".", "-") | |
| def extract_article_id(q: str) -> Optional[str]: | |
| m = ARTICLE_ID_RE.search(q or "") | |
| return normalize_article_id(m.group(1)) if m else None | |
| def is_list_request(q: str) -> bool: | |
| ql = (q or "").lower() | |
| return any(t in ql for t in LIST_TRIGGERS) | |
| def is_fulltext_request(q: str) -> bool: | |
| ql = (q or "").lower() | |
| return any(t in ql for t in FULLTEXT_TRIGGERS) | |
| def is_synthesis_request(q: str) -> bool: | |
| ql = (q or "").lower() | |
| return any(t in ql for t in EXPLAIN_TRIGGERS) | |