Fix production ARR reads and add audited source field review

This commit is contained in:
Wyndham ARR committed 2026-10-08 17:01:54 +08:00
1 parent 2417b1a41c
commit fe8735aac2
26 files changed
+2417 -157

No files matched your search

+19 -1
View File
@@ -14,7 +14,7 @@ from http.cookies import SimpleCookie
from pathlib import Path
from typing import Any, Dict, Mapping, Optional
from urllib.parse import parse_qs, urlsplit
from urllib.parse import quote
from urllib.parse import quote, unquote
from zoneinfo import ZoneInfo
from arr_web.auth import LoginAttemptLedger, LoginCredentials
@@ -364,6 +364,7 @@ class PortalApplication:
if method == "GET" and route.path == "/api/arr-downloads":
return Response.json(200, success({
"ready": self._arr_downloads.ready,
"context_id": getattr(self._arr_downloads, "context_id", None),
"default_date": default_report_date(),
"business_time_zone": "Asia/Bangkok",
"latest_task": self._arr_download_snapshot(self._arr_downloads.latest()),
@@ -386,6 +387,23 @@ class PortalApplication:
if body and _strict_json(body):
raise PortalError("ARR_DOWNLOAD_REQUEST_INVALID", "重试沿用原任务日期")
return Response.json(202, success(self._arr_downloads.retry(request_id)))
if len(parts) >= 2 and parts[1] == "data-review":
if method == "GET" and len(parts) == 2:
return Response.json(200, success(self._arr_downloads.get_data_review(request_id)))
if method == "POST":
self._require_csrf(normalized_headers)
if len(body) > 16384:
raise PortalError("REQUEST_TOO_LARGE", "请求内容过大", 413)
payload = _strict_json(body)
if type(payload.get("revision")) is not int or not 0 <= payload["revision"] <= 1000000:
raise PortalError("ARR_DATA_REVIEW_INVALID", "人工完善版本号无效")
if len(parts) == 4 and parts[2] == "items" and set(payload) == {"revision", "value"}:
return Response.json(200, success(self._arr_downloads.update_data_review_item(
request_id, unquote(parts[3]), payload["revision"], payload["value"], current_session[0])))
if len(parts) == 3 and parts[2] == "finalize" and set(payload) == {"revision"}:
return Response.json(202, success(self._arr_downloads.finalize_data_review(
request_id, payload["revision"], current_session[0])))
raise PortalError("ARR_DATA_REVIEW_INVALID", "人工完善请求无效")
if method == "GET" and route.path == "/api/jobs":
query = parse_qs(route.query, keep_blank_values=True)
month = validate_month(self._one(query, "month", self._current_month()))