Use HIS数据处理 as Gitea backup root

This commit is contained in:
2026-06-11 02:50:39 +08:00
parent 16d7c9a5ef
commit 8755647784
6 changed files with 57 additions and 210 deletions

View File

@@ -47,6 +47,7 @@ DATETIME_PATTERN = re.compile(r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}")
FLEX_DATETIME_PATTERN = re.compile(r"^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2}):(\d{1,2})$")
INPATIENT_NO_PATTERN = re.compile(r".*")
IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".bmp", ".webp"}
IMAGE_DATA_LINK_NAMES = ("已处理-患者目录图片集群", "待处理-患者目录图片集群")
IGNORED_REVIEW_TIPS = {"缺少出院时间"}
IGNORED_AI_ISSUE_PATTERNS = (
"最后书写时间与出院时间顺序异常",
@@ -1579,11 +1580,41 @@ def filtered_items() -> list[dict[str, Any]]:
return items
def path_is_relative_to(path: Path, root: Path) -> bool:
try:
path.relative_to(root)
return True
except ValueError:
return False
def allowed_file_roots() -> list[Path]:
roots = [WORKSPACE_ROOT.resolve()]
for name in IMAGE_DATA_LINK_NAMES:
link_path = WORKSPACE_ROOT / name
if link_path.exists() or link_path.is_symlink():
roots.append(link_path.resolve(strict=False))
extra_roots = os.getenv("REVIEW_ALLOWED_PATH_ROOTS", "")
for root_text in extra_roots.split(os.pathsep):
root_text = root_text.strip()
if root_text:
roots.append(Path(root_text).expanduser().resolve(strict=False))
unique_roots: list[Path] = []
seen: set[str] = set()
for root in roots:
key = str(root)
if key not in seen:
seen.add(key)
unique_roots.append(root)
return unique_roots
def safe_workspace_path(path_text: str) -> Path:
raw = Path(path_text)
path = raw if raw.is_absolute() else WORKSPACE_ROOT / raw
resolved = path.resolve()
if WORKSPACE_ROOT not in resolved.parents and resolved != WORKSPACE_ROOT:
resolved = path.resolve(strict=False)
if not any(path_is_relative_to(resolved, root) or resolved == root for root in allowed_file_roots()):
abort(403)
if not resolved.exists():
abort(404)