Use HIS数据处理 as Gitea backup root
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user