log navigator route requests
This commit is contained in:
parent
7e030d1059
commit
e7ca24e676
5 changed files with 21 additions and 24 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -14,3 +14,4 @@ config.py
|
||||||
.env
|
.env
|
||||||
.venv
|
.venv
|
||||||
/schedule_requests.json*
|
/schedule_requests.json*
|
||||||
|
/navigator_requests.json*
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ from models.schedule import (
|
||||||
group_target,
|
group_target,
|
||||||
search_targets,
|
search_targets,
|
||||||
)
|
)
|
||||||
from models.schedule_request_log import append_schedule_request
|
|
||||||
from models.user import getAllUsers, validate
|
from models.user import getAllUsers, validate
|
||||||
from utils import convert
|
from utils import convert
|
||||||
|
|
||||||
|
|
@ -34,10 +33,6 @@ def start(message: Message):
|
||||||
if not search_target_kind:
|
if not search_target_kind:
|
||||||
return send(message, "Не удалось определить тип расписания по ссылке.")
|
return send(message, "Не удалось определить тип расписания по ссылке.")
|
||||||
search_query = convert.decode(query[3:])
|
search_query = convert.decode(query[3:])
|
||||||
try:
|
|
||||||
append_schedule_request(search_query)
|
|
||||||
except (OSError, ValueError) as error:
|
|
||||||
logger.error("Schedule", f"[{user.id}] Failed to save request: {error}")
|
|
||||||
try:
|
try:
|
||||||
results = search_targets(search_target_kind, search_query, limit=10)
|
results = search_targets(search_target_kind, search_query, limit=10)
|
||||||
except ScheduleAPIError as error:
|
except ScheduleAPIError as error:
|
||||||
|
|
@ -128,10 +123,6 @@ def _finish_registration(message: Message, group_name: str) -> None:
|
||||||
)
|
)
|
||||||
def selectGroupState(message: Message):
|
def selectGroupState(message: Message):
|
||||||
query = (message.text or "").strip()
|
query = (message.text or "").strip()
|
||||||
try:
|
|
||||||
append_schedule_request(query)
|
|
||||||
except (OSError, ValueError) as error:
|
|
||||||
logger.error("Schedule", f"[{message.from_user.id}] Failed to save request: {error}")
|
|
||||||
try:
|
try:
|
||||||
matches = find_main_groups(query)
|
matches = find_main_groups(query)
|
||||||
if len(matches) == 1 and group_exists(query):
|
if len(matches) == 1 and group_exists(query):
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ from models.navigator import (
|
||||||
encode_route,
|
encode_route,
|
||||||
parse_route_request,
|
parse_route_request,
|
||||||
)
|
)
|
||||||
|
from models.navigator_request_log import append_navigator_request
|
||||||
|
|
||||||
|
|
||||||
_SEEN_REQUESTS: dict[tuple[int, str], float] = {}
|
_SEEN_REQUESTS: dict[tuple[int, str], float] = {}
|
||||||
|
|
@ -124,6 +125,11 @@ def route_request_from_webapp(message: Message):
|
||||||
if not _validate_map_rooms(request):
|
if not _validate_map_rooms(request):
|
||||||
return send(message, "Одной из аудиторий нет на карте. Выбери аудитории из подсказок.")
|
return send(message, "Одной из аудиторий нет на карте. Выбери аудитории из подсказок.")
|
||||||
|
|
||||||
|
try:
|
||||||
|
append_navigator_request(request)
|
||||||
|
except (OSError, ValueError) as error:
|
||||||
|
logger.error("Navigator", f"[{message.from_user.id}] failed to save request: {error}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
route = calculate_route(request)
|
route = calculate_route(request)
|
||||||
except Exception as error: # keep a future adapter from breaking polling
|
except Exception as error: # keep a future adapter from breaking polling
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ from models.schedule import (
|
||||||
generateWeekSchedule,
|
generateWeekSchedule,
|
||||||
search_targets,
|
search_targets,
|
||||||
)
|
)
|
||||||
from models.schedule_request_log import append_schedule_request
|
|
||||||
from models.user import User, validate
|
from models.user import User, validate
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -109,13 +108,8 @@ def search_query(message: Message):
|
||||||
return open_schedule_viewer(message, selected)
|
return open_schedule_viewer(message, selected)
|
||||||
|
|
||||||
kind = str(user.state).partition(":")[2]
|
kind = str(user.state).partition(":")[2]
|
||||||
query = message.text or ""
|
|
||||||
try:
|
try:
|
||||||
append_schedule_request(query)
|
results = search_targets(kind, message.text or "", limit=10) # type: ignore
|
||||||
except (OSError, ValueError) as error:
|
|
||||||
logger.error("Schedule", f"[{user.id}] Failed to save request: {error}")
|
|
||||||
try:
|
|
||||||
results = search_targets(kind, query, limit=10) # type: ignore
|
|
||||||
except ScheduleAPIError as error:
|
except ScheduleAPIError as error:
|
||||||
logger.error("Schedule", f"[{user.id}] {error}")
|
logger.error("Schedule", f"[{user.id}] {error}")
|
||||||
return send(message, "Сервер расписания сейчас недоступен. Попробуй ещё раз позже.")
|
return send(message, "Сервер расписания сейчас недоступен. Попробуй ещё раз позже.")
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,16 @@ import threading
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
|
from .navigator import RouteRequest
|
||||||
|
|
||||||
|
|
||||||
_MOSCOW = ZoneInfo("Europe/Moscow")
|
_MOSCOW = ZoneInfo("Europe/Moscow")
|
||||||
_LOG_PATH = Path("schedule_requests.json")
|
_LOG_PATH = Path("navigator_requests.json")
|
||||||
_LOCK = threading.RLock()
|
_LOCK = threading.RLock()
|
||||||
|
|
||||||
|
|
||||||
def append_schedule_request(request: str) -> None:
|
def append_navigator_request(request: RouteRequest) -> None:
|
||||||
"""Append a user-entered schedule search to the persistent JSON history."""
|
"""Append a validated navigator request to the persistent JSON history."""
|
||||||
value = request.strip()
|
|
||||||
if not value:
|
|
||||||
return
|
|
||||||
|
|
||||||
with _LOCK:
|
with _LOCK:
|
||||||
try:
|
try:
|
||||||
with _LOG_PATH.open("r", encoding="utf-8") as file:
|
with _LOG_PATH.open("r", encoding="utf-8") as file:
|
||||||
|
|
@ -30,7 +28,14 @@ def append_schedule_request(request: str) -> None:
|
||||||
history.append(
|
history.append(
|
||||||
{
|
{
|
||||||
"time": datetime.datetime.now(_MOSCOW).isoformat(timespec="seconds"),
|
"time": datetime.datetime.now(_MOSCOW).isoformat(timespec="seconds"),
|
||||||
"request": value,
|
"start": {
|
||||||
|
"room": request.start.room,
|
||||||
|
"floor": request.start.floor,
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"room": request.end.room,
|
||||||
|
"floor": request.end.floor,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue