From d0914f0a9431f643acbe3652b5e703fe198cb371 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 02:38:11 +0900 Subject: [PATCH 01/11] =?UTF-8?q?feat:=20Community=20=EB=8C=80=EC=9A=A9?= =?UTF-8?q?=EB=9F=89=20=EC=B2=A8=EB=B6=80=20=EA=B2=BD=EA=B3=84=EC=99=80=20?= =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EC=A0=95=EC=B1=85=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/compose/ai-gateway/.env.example | 8 + deploy/compose/ai-gateway/compose.yml | 30 +++- deploy/flarum/issue72-large-upload-policy.sh | 151 ++++++++++++++++++ services/ai-gateway/app/config.py | 16 +- .../scripts/artifact_maintenance.py | 60 +++++++ services/ai-gateway/scripts/poll_flarum.py | 121 +++++++++++++- .../tests/test_artifact_maintenance.py | 55 +++++++ .../ai-gateway/tests/test_community_poller.py | 60 +++++++ services/ai-gateway/tests/test_config.py | 13 ++ 9 files changed, 496 insertions(+), 18 deletions(-) create mode 100755 deploy/flarum/issue72-large-upload-policy.sh create mode 100644 services/ai-gateway/scripts/artifact_maintenance.py create mode 100644 services/ai-gateway/tests/test_artifact_maintenance.py diff --git a/deploy/compose/ai-gateway/.env.example b/deploy/compose/ai-gateway/.env.example index 566bae7..52d19ac 100644 --- a/deploy/compose/ai-gateway/.env.example +++ b/deploy/compose/ai-gateway/.env.example @@ -11,6 +11,14 @@ TECHFLOW_FLARUM_API_KEY_SECRET_FILE=/protected/path/flarum-api-key TECHFLOW_COMMUNITY_INGEST_WEBHOOK_SECRET_FILE=/protected/path/community-ingest-webhook TECHFLOW_COMMUNITY_PUBLISH_ENABLED=false TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS=60 +TECHFLOW_ARTIFACT_MAX_BYTES=52428800 +TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES=104857600 +TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES=52428800 +TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS=120 +TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES=2 +TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS=900 +TECHFLOW_ARTIFACT_DISK_WARN_PERCENT=70 +TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT=85 # Compose file secrets are bind-mounted. Keep the parent directory mode 700 and the files mode 644 # so the PostgreSQL init user and the non-root Gateway UID can read them without exposing the path. # Actual OpenAI mode is enabled only through an operator override that mounts a runtime-only diff --git a/deploy/compose/ai-gateway/compose.yml b/deploy/compose/ai-gateway/compose.yml index cac7546..d754163 100644 --- a/deploy/compose/ai-gateway/compose.yml +++ b/deploy/compose/ai-gateway/compose.yml @@ -124,8 +124,8 @@ services: TECHFLOW_SOURCE_MIRROR_ROOT: /var/lib/techflow-source-mirrors TECHFLOW_ARTIFACT_ROOT: /var/lib/techflow-artifacts TECHFLOW_ARTIFACT_RETENTION_HOURS: "24" - TECHFLOW_ARTIFACT_MAX_BYTES: "10485760" - TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: "20971520" + TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-52428800} + TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-104857600} TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES: "100" TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO: "20" TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS: "120000" @@ -199,6 +199,9 @@ services: TECHFLOW_FLARUM_API_KEY_FILE: /run/secrets/flarum_api_key TECHFLOW_COMMUNITY_INGEST_WEBHOOK_FILE: /run/secrets/community_ingest_webhook TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS: ${TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS:-60} + TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES: ${TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES:-52428800} + TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS: ${TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS:-120} + TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES: ${TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES:-2} TECHFLOW_GATEWAY_URL: http://gateway:8090 TECHFLOW_COMMUNITY_POLLER_STATE: /var/lib/techflow-community-poller/state.json command: ["python", "scripts/poll_flarum.py"] @@ -219,6 +222,29 @@ services: cap_drop: ["ALL"] security_opt: ["no-new-privileges:true"] + artifact-maintainer: + image: techflow/ai-gateway:${TECHFLOW_RAG_RELEASE:-issue-46} + restart: unless-stopped + environment: + TECHFLOW_ARTIFACT_ROOT: /var/lib/techflow-artifacts + TECHFLOW_ARTIFACT_RETENTION_HOURS: "24" + TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-52428800} + TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-104857600} + TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES: "100" + TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO: "20" + TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS: "120000" + TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS: ${TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS:-900} + TECHFLOW_ARTIFACT_DISK_WARN_PERCENT: ${TECHFLOW_ARTIFACT_DISK_WARN_PERCENT:-70} + TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT: ${TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT:-85} + command: ["python", "scripts/artifact_maintenance.py"] + volumes: + - techflow_artifacts:/var/lib/techflow-artifacts + read_only: true + tmpfs: + - /tmp:size=16m,mode=1777 + cap_drop: ["ALL"] + security_opt: ["no-new-privileges:true"] + networks: rag_internal: internal: true diff --git a/deploy/flarum/issue72-large-upload-policy.sh b/deploy/flarum/issue72-large-upload-policy.sh new file mode 100755 index 0000000..3ddb9d9 --- /dev/null +++ b/deploy/flarum/issue72-large-upload-policy.sh @@ -0,0 +1,151 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_DIR="${FLARUM_APP_DIR:-/var/www/html}" +APP_USER="${FLARUM_RUN_USER:-www-data}" +BACKUP_ROOT="${TECHFLOW_UPLOAD_BACKUP_ROOT:-/var/backups/techflow-flarum}" +PHP_OVERRIDE="/etc/php/8.3/fpm/conf.d/99-techflow-upload.ini" +NGINX_OVERRIDE="/etc/nginx/conf.d/techflow-upload.conf" +MAX_KIB=51200 + +require_root() { + if [[ ${EUID} -ne 0 ]]; then + echo "root privileges are required" >&2 + exit 2 + fi +} + +settings_php() { + runuser -u "$APP_USER" -- php -r ' + $config = include $argv[1]."/config.php"; + $db = $config["database"]; + $dsn = "mysql:host={$db["host"]};port=".($db["port"] ?? 3306).";dbname={$db["database"]};charset=utf8mb4"; + $pdo = new PDO($dsn, $db["username"], $db["password"], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); + $prefix = $db["prefix"] ?? ""; + $mode = $argv[2]; + if ($mode === "export") { + $stmt = $pdo->prepare("SELECT `key`,value FROM {$prefix}settings WHERE `key` IN (?,?) ORDER BY `key`"); + $stmt->execute(["fof-upload.maxFileSize", "fof-upload.mimeTypes"]); + echo json_encode($stmt->fetchAll(PDO::FETCH_KEY_PAIR), JSON_UNESCAPED_SLASHES), PHP_EOL; + exit; + } + if ($mode === "policy") { + $values = [ + "fof-upload.maxFileSize" => "51200", + "fof-upload.mimeTypes" => json_encode([ + "^image\\/(jpeg|png|gif|webp|avif|bmp|tiff|svg\\+xml)$" => ["adapter" => "local", "template" => "image-preview"], + "^text\\/(plain|csv)$" => ["adapter" => "local", "template" => "file"], + "^application\\/(zip|x-zip-compressed|gzip|x-gzip|pdf)$" => ["adapter" => "local", "template" => "file"], + ], JSON_UNESCAPED_SLASHES), + ]; + } else { + $values = json_decode(stream_get_contents(STDIN), true, 512, JSON_THROW_ON_ERROR); + } + $stmt = $pdo->prepare("INSERT INTO {$prefix}settings (`key`,value) VALUES (?,?) ON DUPLICATE KEY UPDATE value=VALUES(value)"); + $pdo->beginTransaction(); + foreach ($values as $key => $value) { $stmt->execute([$key, (string)$value]); } + $pdo->commit(); + ' "$APP_DIR" "$1" +} + +backup_file() { + local source=$1 target=$2 + if [[ -e "$source" ]]; then + cp -a "$source" "$target" + else + : > "${target}.absent" + fi +} + +restore_file() { + local source=$1 target=$2 + if [[ -e "${source}.absent" ]]; then + rm -f "$target" + else + install -o root -g root -m 0644 "$source" "$target" + fi +} + +verify() { + php-fpm8.3 -t >/dev/null + nginx -t >/dev/null + local settings + settings=$(settings_php export) + SETTINGS_JSON="$settings" python3 - <<'PY' +import json, os +values = json.loads(os.environ["SETTINGS_JSON"]) +assert values.get("fof-upload.maxFileSize") == "51200", values +mime = json.loads(values["fof-upload.mimeTypes"]) +joined = " ".join(mime) +for expected in ("image", "text", "zip", "gzip"): + assert expected in joined, (expected, joined) +for blocked in ("7z", "rar", "iso", "bzip", "stuffit", "lha", "arj"): + assert blocked not in joined, (blocked, joined) +PY + local fpm_info + fpm_info=$(php-fpm8.3 -i 2>/dev/null) + grep -q '^upload_max_filesize => 64M => 64M' <<<"$fpm_info" + grep -q '^post_max_size => 64M => 64M' <<<"$fpm_info" + curl --fail --silent --show-error --max-time 20 \ + "${TECHFLOW_COMMUNITY_VERIFY_URL:-https://community.ablecloud.io/}" >/dev/null + echo "issue72_upload_policy=verified max_file_kib=${MAX_KIB}" +} + +apply_policy() { + require_root + install -d -o root -g root -m 0700 "$BACKUP_ROOT" + local stamp backup + stamp=$(date -u +%Y%m%dT%H%M%SZ) + backup="${BACKUP_ROOT}/issue72-${stamp}" + install -d -o root -g root -m 0700 "$backup" + settings_php export > "${backup}/settings.json" + chmod 0600 "${backup}/settings.json" + backup_file "$PHP_OVERRIDE" "${backup}/php-upload.ini" + backup_file "$NGINX_OVERRIDE" "${backup}/nginx-upload.conf" + + cat > "$PHP_OVERRIDE" <<'EOF' +upload_max_filesize=64M +post_max_size=64M +max_execution_time=300 +max_input_time=300 +memory_limit=256M +EOF + chmod 0644 "$PHP_OVERRIDE" + cat > "$NGINX_OVERRIDE" <<'EOF' +client_body_timeout 300s; +fastcgi_read_timeout 300s; +EOF + chmod 0644 "$NGINX_OVERRIDE" + + settings_php policy &2 + exit 2 + } + restore_file "${backup}/php-upload.ini" "$PHP_OVERRIDE" + restore_file "${backup}/nginx-upload.conf" "$NGINX_OVERRIDE" + settings_php import < "${backup}/settings.json" + (cd "$APP_DIR" && runuser -u "$APP_USER" -- php flarum cache:clear) + php-fpm8.3 -t >/dev/null + nginx -t >/dev/null + systemctl reload php8.3-fpm + systemctl reload nginx + echo "issue72_upload_policy=rolled_back backup=${backup}" +} + +case "${1:-}" in + apply) apply_policy ;; + verify) verify ;; + rollback) rollback "${2:-}" ;; + *) echo "usage: $0 {apply|verify|rollback BACKUP_DIR}" >&2; exit 2 ;; +esac diff --git a/services/ai-gateway/app/config.py b/services/ai-gateway/app/config.py index 54a424c..dbafcb3 100644 --- a/services/ai-gateway/app/config.py +++ b/services/ai-gateway/app/config.py @@ -27,8 +27,8 @@ class Settings: database_pool_max: int = 4 artifact_root: str = os.path.join(tempfile.gettempdir(), "techflow-artifacts") artifact_retention_hours: int = 24 - artifact_max_bytes: int = 10 * 1024 * 1024 - artifact_max_extracted_bytes: int = 20 * 1024 * 1024 + artifact_max_bytes: int = 50 * 1024 * 1024 + artifact_max_extracted_bytes: int = 100 * 1024 * 1024 artifact_max_archive_entries: int = 100 artifact_max_compression_ratio: int = 20 artifact_max_log_evidence_chars: int = 120_000 @@ -54,8 +54,8 @@ def from_env(cls) -> "Settings": database_pool_max=int(os.getenv("TECHFLOW_RAG_DATABASE_POOL_MAX", "4")), artifact_root=os.getenv("TECHFLOW_ARTIFACT_ROOT", os.path.join(tempfile.gettempdir(), "techflow-artifacts")), artifact_retention_hours=int(os.getenv("TECHFLOW_ARTIFACT_RETENTION_HOURS", "24")), - artifact_max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(10 * 1024 * 1024))), - artifact_max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(20 * 1024 * 1024))), + artifact_max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(50 * 1024 * 1024))), + artifact_max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024))), artifact_max_archive_entries=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES", "100")), artifact_max_compression_ratio=int(os.getenv("TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO", "20")), artifact_max_log_evidence_chars=int(os.getenv("TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS", "120000")), @@ -91,10 +91,10 @@ def validate(self) -> None: raise ConfigurationError("invalid database pool bounds") if not 1 <= self.artifact_retention_hours <= 168: raise ConfigurationError("TECHFLOW_ARTIFACT_RETENTION_HOURS must be between 1 and 168") - if not 1024 <= self.artifact_max_bytes <= 20 * 1024 * 1024: - raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_BYTES must be between 1 KiB and 20 MiB") - if not self.artifact_max_bytes <= self.artifact_max_extracted_bytes <= 100 * 1024 * 1024: - raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES must be between upload max and 100 MiB") + if not 1024 <= self.artifact_max_bytes <= 50 * 1024 * 1024: + raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_BYTES must be between 1 KiB and 50 MiB") + if not self.artifact_max_bytes <= self.artifact_max_extracted_bytes <= 200 * 1024 * 1024: + raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES must be between upload max and 200 MiB") if not 1 <= self.artifact_max_archive_entries <= 500: raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES must be between 1 and 500") if not 1 <= self.artifact_max_compression_ratio <= 100: diff --git a/services/ai-gateway/scripts/artifact_maintenance.py b/services/ai-gateway/scripts/artifact_maintenance.py new file mode 100644 index 0000000..b8f435c --- /dev/null +++ b/services/ai-gateway/scripts/artifact_maintenance.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""Purge expired evidence artifacts and emit disk-capacity events.""" + +from __future__ import annotations + +import json +import os +from pathlib import Path +import shutil +import time + +from app.artifacts import ArtifactStore + + +def _percent_env(name: str, default: int) -> int: + try: + value = int(os.getenv(name, str(default))) + except ValueError as exc: + raise RuntimeError(f"{name} must be an integer") from exc + if not 1 <= value <= 99: + raise RuntimeError(f"{name} must be between 1 and 99") + return value + + +def maintain_once(root: Path) -> dict[str, int | str]: + store = ArtifactStore( + str(root), retention_hours=int(os.getenv("TECHFLOW_ARTIFACT_RETENTION_HOURS", "24")), + max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(50 * 1024 * 1024))), + max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024))), + max_archive_entries=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES", "100")), + max_compression_ratio=int(os.getenv("TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO", "20")), + max_log_evidence_chars=int(os.getenv("TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS", "120000")), + ) + removed = store.purge_expired() + usage = shutil.disk_usage(root) + used_percent = round(usage.used * 100 / usage.total) if usage.total else 100 + warn_percent = _percent_env("TECHFLOW_ARTIFACT_DISK_WARN_PERCENT", 70) + critical_percent = _percent_env("TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT", 85) + if warn_percent >= critical_percent: + raise RuntimeError("artifact disk warning threshold must be lower than critical threshold") + level = "critical" if used_percent >= critical_percent else ("warning" if used_percent >= warn_percent else "ok") + return { + "event": "artifact_maintenance_completed", "level": level, "removed": removed, + "usedPercent": used_percent, "freeBytes": usage.free, + } + + +def main() -> int: + root = Path(os.getenv("TECHFLOW_ARTIFACT_ROOT", "/var/lib/techflow-artifacts")) + interval = max(60, int(os.getenv("TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS", "900"))) + once = os.getenv("TECHFLOW_ARTIFACT_MAINTENANCE_ONCE", "false").lower() == "true" + while True: + print(json.dumps(maintain_once(root), separators=(",", ":")), flush=True) + if once: + return 0 + time.sleep(interval) + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/services/ai-gateway/scripts/poll_flarum.py b/services/ai-gateway/scripts/poll_flarum.py index 1cb23c2..0543dac 100644 --- a/services/ai-gateway/scripts/poll_flarum.py +++ b/services/ai-gateway/scripts/poll_flarum.py @@ -7,12 +7,21 @@ import json import os from pathlib import Path +import re import time import urllib.parse +import urllib.error import urllib.request from uuid import uuid4 +DEFAULT_ATTACHMENT_MAX_BYTES = 50 * 1024 * 1024 +DEFAULT_ATTACHMENT_TIMEOUT_SECONDS = 120 +DEFAULT_ATTACHMENT_RETRIES = 2 +DOWNLOAD_CHUNK_BYTES = 1024 * 1024 +TRANSIENT_HTTP_STATUSES = {408, 425, 429, 500, 502, 503, 504} + + class ContentParser(HTMLParser): def __init__(self) -> None: super().__init__() @@ -45,6 +54,82 @@ def request_json(url: str, *, token: str | None = None, data: dict | None = None return json.loads(response.read().decode("utf-8")) +def _bounded_env_int(name: str, default: int, minimum: int, maximum: int) -> int: + try: + value = int(os.getenv(name, str(default))) + except ValueError as exc: + raise RuntimeError(f"{name} must be an integer") from exc + if not minimum <= value <= maximum: + raise RuntimeError(f"{name} must be between {minimum} and {maximum}") + return value + + +def _attachment_policy() -> tuple[int, int, int]: + return ( + _bounded_env_int( + "TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES", DEFAULT_ATTACHMENT_MAX_BYTES, + 1024, DEFAULT_ATTACHMENT_MAX_BYTES, + ), + _bounded_env_int( + "TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS", DEFAULT_ATTACHMENT_TIMEOUT_SECONDS, + 5, 300, + ), + _bounded_env_int("TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES", DEFAULT_ATTACHMENT_RETRIES, 0, 3), + ) + + +def _attachment_filename(content_disposition: str, path: str) -> str: + encoded = re.search(r"filename\*=UTF-8''([^;]+)", content_disposition, re.IGNORECASE) + quoted = re.search(r'filename="([^"]+)"', content_disposition, re.IGNORECASE) + value = urllib.parse.unquote(encoded.group(1)) if encoded else (quoted.group(1) if quoted else Path(path).name) + return Path(value.replace("\\", "/")).name[:128] or "community-artifact" + + +def _warning(filename: str, reason: str) -> str: + safe_name = Path(filename.replace("\\", "/")).name[:80] or "첨부파일" + messages = { + "size": f"첨부파일 {safe_name}은 50MB를 초과해 분석하지 않았습니다. 필요한 로그만 압축해 다시 올려 주세요.", + "unsafe": f"첨부파일 {safe_name}은 지원하지 않거나 안전 검사를 통과하지 못해 분석에서 제외했습니다.", + "fetch": f"첨부파일 {safe_name}을 가져오지 못했습니다. 잠시 후 다시 첨부해 주세요.", + "origin": f"첨부파일 {safe_name}은 Community 외부 주소이므로 분석하지 않았습니다.", + } + return messages[reason] + + +def _read_attachment(request: urllib.request.Request, *, max_bytes: int, timeout: int, retries: int) -> tuple[bytes, str, str]: + last_error: Exception | None = None + for attempt in range(retries + 1): + try: + with urllib.request.urlopen(request, timeout=timeout) as response: + content_length = response.headers.get("Content-Length") + if content_length and int(content_length) > max_bytes: + raise ValueError("size") + content = bytearray() + while True: + chunk = response.read(min(DOWNLOAD_CHUNK_BYTES, max_bytes + 1 - len(content))) + if not chunk: + break + content.extend(chunk) + if len(content) > max_bytes: + raise ValueError("size") + return ( + bytes(content), response.headers.get_content_type(), + response.headers.get("Content-Disposition") or "", + ) + except urllib.error.HTTPError as exc: + last_error = exc + if exc.code not in TRANSIENT_HTTP_STATUSES or attempt >= retries: + raise + except urllib.error.URLError as exc: + last_error = exc + if attempt >= retries: + raise + if attempt < retries: + time.sleep(min(2 ** attempt, 2)) + assert last_error is not None + raise last_error + + def normalize(payload: dict, base_url: str) -> list[dict]: included = {(item["type"], item["id"]): item for item in payload.get("included") or []} events = [] @@ -79,29 +164,49 @@ def normalize(payload: dict, base_url: str) -> list[dict]: def upload_artifacts( event: dict, gateway_url: str, base_url: str, public_url: str, token: str, correlation: str ) -> list[str]: - ids = [] + ids: list[str] = [] + warnings: list[str] = list(event.get("artifactWarnings") or []) + max_bytes, timeout, retries = _attachment_policy() for raw_url in event.pop("attachmentUrls", []): public_attachment_url = urllib.parse.urljoin(public_url + "/", raw_url) parsed = urllib.parse.urlparse(public_attachment_url) if parsed.scheme != "https" or parsed.netloc != urllib.parse.urlparse(public_url).netloc: + warnings.append(_warning(Path(parsed.path).name, "origin")) continue internal_url = urllib.parse.urljoin(base_url + "/", parsed.path.lstrip("/")) if parsed.query: internal_url = f"{internal_url}?{parsed.query}" req = urllib.request.Request(internal_url, headers={"Authorization": f"Token {token}"}) - with urllib.request.urlopen(req, timeout=30) as response: - content = response.read(10 * 1024 * 1024 + 1) - media_type = response.headers.get_content_type() - if len(content) > 10 * 1024 * 1024: - continue filename = Path(parsed.path).name or "community-artifact" + try: + content, media_type, disposition = _read_attachment( + req, max_bytes=max_bytes, timeout=timeout, retries=retries, + ) + filename = _attachment_filename(disposition, parsed.path) + except ValueError as exc: + if str(exc) == "size": + warnings.append(_warning(filename, "size")) + continue + raise + except (urllib.error.HTTPError, urllib.error.URLError, TimeoutError): + warnings.append(_warning(filename, "fetch")) + continue upload = urllib.request.Request( gateway_url.rstrip("/") + "/v1/artifacts", data=content, method="POST", headers={"Content-Type": media_type, "X-Artifact-Filename": filename, "X-Artifact-Classification": "D0", "X-Correlation-Id": correlation}, ) - with urllib.request.urlopen(upload, timeout=30) as response: - ids.append(str(json.loads(response.read().decode("utf-8"))["data"]["artifactId"])) + try: + with urllib.request.urlopen(upload, timeout=timeout) as response: + ids.append(str(json.loads(response.read().decode("utf-8"))["data"]["artifactId"])) + except urllib.error.HTTPError as exc: + if exc.code in TRANSIENT_HTTP_STATUSES: + warnings.append(_warning(filename, "fetch")) + else: + warnings.append(_warning(filename, "unsafe")) + except (urllib.error.URLError, TimeoutError): + warnings.append(_warning(filename, "fetch")) + event["artifactWarnings"] = warnings return ids diff --git a/services/ai-gateway/tests/test_artifact_maintenance.py b/services/ai-gateway/tests/test_artifact_maintenance.py new file mode 100644 index 0000000..95b913a --- /dev/null +++ b/services/ai-gateway/tests/test_artifact_maintenance.py @@ -0,0 +1,55 @@ +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +import importlib.util +import json +from pathlib import Path +import tempfile +import unittest +from unittest.mock import patch +from uuid import uuid4 + + +SPEC = importlib.util.spec_from_file_location( + "artifact_maintenance", Path(__file__).parents[1] / "scripts" / "artifact_maintenance.py" +) +artifact_maintenance = importlib.util.module_from_spec(SPEC) +assert SPEC and SPEC.loader +SPEC.loader.exec_module(artifact_maintenance) + + +class ArtifactMaintenanceTests(unittest.TestCase): + def test_expired_artifact_is_removed_and_capacity_is_reported(self) -> None: + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + artifact_id = uuid4() + (root / f"{artifact_id}.bin").write_bytes(b"expired") + (root / f"{artifact_id}.json").write_text( + json.dumps({ + "artifactId": str(artifact_id), "filename": "expired.log", "mediaType": "text/plain", + "sha256": "ignored", "sizeBytes": 7, "kind": "LOG", "width": None, "height": None, + "entryCount": 1, "extractedBytes": 7, "evidenceTruncated": False, "redactionCount": 0, + "createdAt": (datetime.now(timezone.utc) - timedelta(hours=2)).isoformat(), + "expiresAt": (datetime.now(timezone.utc) - timedelta(hours=1)).isoformat(), + }), encoding="utf-8", + ) + with patch.dict("os.environ", { + "TECHFLOW_ARTIFACT_DISK_WARN_PERCENT": "98", + "TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT": "99", + }, clear=False): + result = artifact_maintenance.maintain_once(root) + self.assertEqual(1, result["removed"]) + self.assertIn(result["level"], {"ok", "warning", "critical"}) + self.assertFalse((root / f"{artifact_id}.bin").exists()) + + def test_invalid_capacity_thresholds_are_rejected(self) -> None: + with tempfile.TemporaryDirectory() as directory, patch.dict("os.environ", { + "TECHFLOW_ARTIFACT_DISK_WARN_PERCENT": "90", + "TECHFLOW_ARTIFACT_DISK_CRITICAL_PERCENT": "80", + }, clear=False): + with self.assertRaises(RuntimeError): + artifact_maintenance.maintain_once(Path(directory)) + + +if __name__ == "__main__": + unittest.main() diff --git a/services/ai-gateway/tests/test_community_poller.py b/services/ai-gateway/tests/test_community_poller.py index 6698dfc..6858a6e 100644 --- a/services/ai-gateway/tests/test_community_poller.py +++ b/services/ai-gateway/tests/test_community_poller.py @@ -1,8 +1,12 @@ from __future__ import annotations import importlib.util +from email.message import Message +from io import BytesIO +import os from pathlib import Path import unittest +from unittest.mock import patch SPEC = importlib.util.spec_from_file_location( @@ -13,6 +17,21 @@ SPEC.loader.exec_module(poll_flarum) +class FakeResponse(BytesIO): + def __init__(self, data: bytes, *, content_type: str = "text/plain", content_length: int | None = None) -> None: + super().__init__(data) + self.headers = Message() + self.headers["Content-Type"] = content_type + if content_length is not None: + self.headers["Content-Length"] = str(content_length) + + def __enter__(self): + return self + + def __exit__(self, *_args): + self.close() + + class CommunityPollerTests(unittest.TestCase): def test_only_unanswered_discussions_are_normalized(self) -> None: payload = { @@ -41,6 +60,47 @@ def test_html_parser_does_not_execute_or_expand_markup(self) -> None: parser.feed("

질문

") self.assertEqual(["질문", "ignore()"], parser.text) + def test_attachment_policy_accepts_exact_boundary_and_rejects_one_byte_over(self) -> None: + exact = b"A" * 2048 + with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact)): + content, media_type, _ = poll_flarum._read_attachment( + poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.log"), + max_bytes=2048, timeout=5, retries=0, + ) + self.assertEqual(exact, content) + self.assertEqual("text/plain", media_type) + + with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact + b"!")): + with self.assertRaisesRegex(ValueError, "size"): + poll_flarum._read_attachment( + poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.log"), + max_bytes=2048, timeout=5, retries=0, + ) + + def test_content_length_is_rejected_before_body_download(self) -> None: + with patch.object( + poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(b"", content_length=2049), + ): + with self.assertRaisesRegex(ValueError, "size"): + poll_flarum._read_attachment( + poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.zip"), + max_bytes=2048, timeout=5, retries=0, + ) + + def test_attachment_policy_environment_is_bounded(self) -> None: + with patch.dict(os.environ, {"TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES": "52428801"}, clear=False): + with self.assertRaises(RuntimeError): + poll_flarum._attachment_policy() + + def test_external_attachment_is_skipped_with_understandable_warning(self) -> None: + event = {"attachmentUrls": ["https://example.invalid/secret.log"]} + ids = poll_flarum.upload_artifacts( + event, "http://gateway:8090", "http://172.16.0.234", + "https://community.ablecloud.io", "runtime-token", "community-test-0001", + ) + self.assertEqual([], ids) + self.assertIn("Community 외부 주소", event["artifactWarnings"][0]) + if __name__ == "__main__": unittest.main() diff --git a/services/ai-gateway/tests/test_config.py b/services/ai-gateway/tests/test_config.py index 9559ef2..b1d25f9 100644 --- a/services/ai-gateway/tests/test_config.py +++ b/services/ai-gateway/tests/test_config.py @@ -14,6 +14,19 @@ def test_safe_defaults(self) -> None: self.assertEqual("memory", settings.store_backend) self.assertEqual("mock", settings.provider_mode) self.assertEqual(128, settings.embedding_batch_size) + self.assertEqual(50 * 1024 * 1024, settings.artifact_max_bytes) + self.assertEqual(100 * 1024 * 1024, settings.artifact_max_extracted_bytes) + + def test_large_upload_boundary_is_bounded(self) -> None: + Settings( + artifact_max_bytes=50 * 1024 * 1024, + artifact_max_extracted_bytes=100 * 1024 * 1024, + ).validate() + with self.assertRaises(ConfigurationError): + Settings( + artifact_max_bytes=50 * 1024 * 1024 + 1, + artifact_max_extracted_bytes=100 * 1024 * 1024, + ).validate() def test_postgres_requires_dsn(self) -> None: with self.assertRaises(ConfigurationError): From 5200f47c12185e73ab8afc8d8e33b1a5697a6c30 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 02:42:37 +0900 Subject: [PATCH 02/11] =?UTF-8?q?fix:=20Flarum=20=EB=9F=B0=ED=83=80?= =?UTF-8?q?=EC=9E=84=20=EC=84=A4=EC=A0=95=20=EB=A1=9C=EB=8D=94=20=ED=98=B8?= =?UTF-8?q?=ED=99=98=EC=84=B1=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/flarum/issue72-large-upload-policy.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/flarum/issue72-large-upload-policy.sh b/deploy/flarum/issue72-large-upload-policy.sh index 3ddb9d9..b181a4a 100755 --- a/deploy/flarum/issue72-large-upload-policy.sh +++ b/deploy/flarum/issue72-large-upload-policy.sh @@ -17,6 +17,7 @@ require_root() { settings_php() { runuser -u "$APP_USER" -- php -r ' + require $argv[1]."/vendor/autoload.php"; $config = include $argv[1]."/config.php"; $db = $config["database"]; $dsn = "mysql:host={$db["host"]};port=".($db["port"] ?? 3306).";dbname={$db["database"]};charset=utf8mb4"; From ee3ee78ff10a543687aa05393cd973e0c085be8b Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 02:43:25 +0900 Subject: [PATCH 03/11] =?UTF-8?q?fix:=20Community=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=EC=9D=84=20=EB=A1=9C=EC=BB=AC=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=EB=A1=9C=20=EA=B3=A0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/flarum/issue72-large-upload-policy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/flarum/issue72-large-upload-policy.sh b/deploy/flarum/issue72-large-upload-policy.sh index b181a4a..4073458 100755 --- a/deploy/flarum/issue72-large-upload-policy.sh +++ b/deploy/flarum/issue72-large-upload-policy.sh @@ -88,7 +88,8 @@ PY grep -q '^upload_max_filesize => 64M => 64M' <<<"$fpm_info" grep -q '^post_max_size => 64M => 64M' <<<"$fpm_info" curl --fail --silent --show-error --max-time 20 \ - "${TECHFLOW_COMMUNITY_VERIFY_URL:-https://community.ablecloud.io/}" >/dev/null + --header 'Host: community.ablecloud.io' \ + "${TECHFLOW_COMMUNITY_VERIFY_URL:-http://127.0.0.1/}" >/dev/null echo "issue72_upload_policy=verified max_file_kib=${MAX_KIB}" } From ee616a5cf84eb38e881e46e6995d2fa805fddfa6 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 02:45:50 +0900 Subject: [PATCH 04/11] =?UTF-8?q?fix:=20=EC=9C=A0=EC=A7=80=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=BB=A8=ED=85=8C=EC=9D=B4=EB=84=88=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EA=B2=BD=EB=A1=9C=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/ai-gateway/scripts/artifact_maintenance.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/ai-gateway/scripts/artifact_maintenance.py b/services/ai-gateway/scripts/artifact_maintenance.py index b8f435c..1e328b0 100644 --- a/services/ai-gateway/scripts/artifact_maintenance.py +++ b/services/ai-gateway/scripts/artifact_maintenance.py @@ -7,8 +7,11 @@ import os from pathlib import Path import shutil +import sys import time +sys.path.insert(0, str(Path(__file__).parents[1])) + from app.artifacts import ArtifactStore From 5351fa6de7aed7de96e948b44e027335e60e6ea9 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 02:52:35 +0900 Subject: [PATCH 05/11] =?UTF-8?q?fix:=20=EC=95=95=EC=B6=95=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20MIME=20?= =?UTF-8?q?=EC=A0=95=EA=B7=9C=ED=99=94=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/ai-gateway/scripts/poll_flarum.py | 15 +++++++++++++++ .../ai-gateway/tests/test_community_poller.py | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/services/ai-gateway/scripts/poll_flarum.py b/services/ai-gateway/scripts/poll_flarum.py index 0543dac..f2e48f5 100644 --- a/services/ai-gateway/scripts/poll_flarum.py +++ b/services/ai-gateway/scripts/poll_flarum.py @@ -5,6 +5,7 @@ from html.parser import HTMLParser import json +import mimetypes import os from pathlib import Path import re @@ -96,6 +97,19 @@ def _warning(filename: str, reason: str) -> str: return messages[reason] +def _normalized_attachment_media_type(filename: str, media_type: str) -> str: + if media_type not in {"application/force-download", "application/octet-stream"}: + return media_type + lowered = filename.casefold() + if lowered.endswith(".zip"): + return "application/zip" + if lowered.endswith((".tar.gz", ".tgz", ".gz")): + return "application/gzip" + if lowered.endswith((".log", ".txt", ".csv", ".ini")): + return "text/plain" + return mimetypes.guess_type(filename)[0] or media_type + + def _read_attachment(request: urllib.request.Request, *, max_bytes: int, timeout: int, retries: int) -> tuple[bytes, str, str]: last_error: Exception | None = None for attempt in range(retries + 1): @@ -191,6 +205,7 @@ def upload_artifacts( except (urllib.error.HTTPError, urllib.error.URLError, TimeoutError): warnings.append(_warning(filename, "fetch")) continue + media_type = _normalized_attachment_media_type(filename, media_type) upload = urllib.request.Request( gateway_url.rstrip("/") + "/v1/artifacts", data=content, method="POST", headers={"Content-Type": media_type, "X-Artifact-Filename": filename, diff --git a/services/ai-gateway/tests/test_community_poller.py b/services/ai-gateway/tests/test_community_poller.py index 6858a6e..16a34c3 100644 --- a/services/ai-gateway/tests/test_community_poller.py +++ b/services/ai-gateway/tests/test_community_poller.py @@ -101,6 +101,11 @@ def test_external_attachment_is_skipped_with_understandable_warning(self) -> Non self.assertEqual([], ids) self.assertIn("Community 외부 주소", event["artifactWarnings"][0]) + def test_archive_media_type_is_normalized_from_download_filename(self) -> None: + self.assertEqual("application/zip", poll_flarum._normalized_attachment_media_type("support.zip", "application/force-download")) + self.assertEqual("application/gzip", poll_flarum._normalized_attachment_media_type("support.tar.gz", "application/octet-stream")) + self.assertEqual("application/gzip", poll_flarum._normalized_attachment_media_type("agent.log.gz", "application/octet-stream")) + if __name__ == "__main__": unittest.main() From 162e4664156e4dffe5b8ca625cab47c2a2bf608b Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 03:05:59 +0900 Subject: [PATCH 06/11] =?UTF-8?q?docs:=20Issue=2072=20=EC=9A=B4=EC=98=81?= =?UTF-8?q?=20=EA=B2=80=EC=A6=9D=20=EA=B2=B0=EA=B3=BC=EC=99=80=20=EB=B0=9C?= =?UTF-8?q?=ED=91=9C=EC=9E=90=EB=A3=8C=20=EC=9E=90=EC=82=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../large-upload-production-validation.json | 75 +++++++++++ ...ue-72-community-large-upload-validation.md | 101 +++++++++++++++ docs/runbooks/community-large-uploads.md | 114 +++++++++++++++++ ...sue-72-large-upload-artifact-manifest.json | 73 +++++++++++ ...low-issue-72-large-upload-presentation.pdf | Bin 0 -> 200231 bytes .../techflow-issue-72-large-upload-report.pdf | Bin 0 -> 101252 bytes .../techflow-issue-72-large-upload.pptx | Bin 0 -> 28643 bytes tools/artifacts/issue-72/README.md | 19 +++ tools/artifacts/issue-72/build_manifest.py | 22 ++++ .../artifacts/issue-72/build_presentation.mjs | 86 +++++++++++++ .../issue-72/build_presentation_pdf.py | 20 +++ tools/artifacts/issue-72/build_report.py | 120 ++++++++++++++++++ .../artifacts/issue-72/validate_artifacts.py | 25 ++++ 13 files changed, 655 insertions(+) create mode 100644 docs/evidence/issue-72/large-upload-production-validation.json create mode 100644 docs/reports/issue-72-community-large-upload-validation.md create mode 100644 docs/runbooks/community-large-uploads.md create mode 100644 output/issue-72-large-upload-artifact-manifest.json create mode 100644 output/pdf/techflow-issue-72-large-upload-presentation.pdf create mode 100644 output/pdf/techflow-issue-72-large-upload-report.pdf create mode 100644 output/presentation/techflow-issue-72-large-upload.pptx create mode 100644 tools/artifacts/issue-72/README.md create mode 100644 tools/artifacts/issue-72/build_manifest.py create mode 100644 tools/artifacts/issue-72/build_presentation.mjs create mode 100644 tools/artifacts/issue-72/build_presentation_pdf.py create mode 100644 tools/artifacts/issue-72/build_report.py create mode 100644 tools/artifacts/issue-72/validate_artifacts.py diff --git a/docs/evidence/issue-72/large-upload-production-validation.json b/docs/evidence/issue-72/large-upload-production-validation.json new file mode 100644 index 0000000..7217826 --- /dev/null +++ b/docs/evidence/issue-72/large-upload-production-validation.json @@ -0,0 +1,75 @@ +{ + "schemaVersion": 1, + "issue": 72, + "validatedAt": "2026-08-15T03:02:00+09:00", + "environments": { + "flarum": { + "host": "172.16.0.234", + "flarum": "1.8.18", + "fofUpload": "1.8.5", + "rootSizeGiB": 1006, + "rootFreeGiB": 955 + }, + "techflow": { + "host": "172.16.0.231", + "release": "issue-72-large-uploads", + "rootSizeGiB": 1005, + "rootFreeGiB": 917 + } + }, + "policy": { + "fileMaxBytes": 52428800, + "extractedMaxBytes": 104857600, + "archiveEntriesMax": 100, + "compressionRatioMax": 20, + "downloadTimeoutSeconds": 120, + "downloadRetries": 2, + "retentionHours": 24, + "maintenanceIntervalSeconds": 900, + "diskWarnPercent": 70, + "diskCriticalPercent": 85 + }, + "tests": { + "runtimeRegression": {"total": 259, "passed": 259}, + "flarumBoundary": [ + {"case": "50 MiB", "status": 200, "result": "PASS"}, + {"case": "50 MiB + 1 byte", "status": 422, "result": "PASS"} + ], + "gatewayBoundary": [ + {"case": "50 MiB", "status": 201, "result": "PASS"}, + {"case": "50 MiB + 1 byte", "status": 400, "result": "PASS"} + ], + "security": [ + {"case": "path traversal", "status": 400, "result": "PASS"}, + {"case": "nested archive", "status": 400, "result": "PASS"}, + {"case": "compression bomb", "status": 400, "result": "PASS"}, + {"case": "executable member", "status": 400, "result": "PASS"}, + {"case": "image MIME mismatch", "status": 400, "result": "PASS"} + ], + "communityE2E": { + "temporaryDiscussionId": 172, + "formats": ["plain log", "ZIP", "GZIP", "TAR.GZ"], + "artifactsAdded": 4, + "answerPublished": true, + "testDiscussionPermanentlyDeleted": true, + "testUploadsDeleted": 33, + "residualDatabaseRows": 0 + }, + "artifactMaintenance": { + "expiredRemovedOnFirstRun": 28, + "level": "ok", + "diskUsedPercent": 5 + }, + "protectedService": { + "service": "github-chat-v1", + "state": "frozen", + "guard": "passed" + } + }, + "rollback": { + "flarumBackup": "/var/backups/techflow-flarum/issue72-20260814T174252Z", + "techflowBackup": "/home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z", + "stagingRollbackRehearsed": true, + "databaseMigration": false + } +} diff --git a/docs/reports/issue-72-community-large-upload-validation.md b/docs/reports/issue-72-community-large-upload-validation.md new file mode 100644 index 0000000..14f2881 --- /dev/null +++ b/docs/reports/issue-72-community-large-upload-validation.md @@ -0,0 +1,101 @@ +# Issue #72 Community 대용량 첨부 개선 완료 보고서 + +## 결론 + +Issue #72의 구현과 운영 적용을 완료했다. Community는 이미지, 일반 로그, ZIP, GZIP, TAR.GZ를 파일당 50 MiB까지 받으며, TechFlow는 같은 상한으로 다운로드한 뒤 압축 해제 100 MiB, 100개 항목, 20배 압축비 안에서만 분석한다. + +운영 시험에서 50 MiB는 Flarum HTTP 200과 Gateway HTTP 201로 통과했고, 50 MiB+1바이트는 각각 422와 400으로 거부됐다. 실제 임시 Discussion #172에 네 종류 로그를 붙인 E2E에서 Artifact 4개가 수집되고 AI 답변이 자동 게시됐다. 시험 글과 업로드는 모두 영구 삭제했다. + +## 범위와 결과 + +| 완료 조건 | 결과 | 증적 | +|---|---|---| +| 현재값/목표값 매트릭스 | 완료 | 본 문서와 운영 Runbook | +| 이미지/텍스트/ZIP/GZIP/TAR.GZ E2E | 완료 | Discussion #172, Artifact +4, 답변 게시 | +| 이해 가능한 거부 안내 | 완료 | 크기, 외부 URL, fetch, unsafe 분리 | +| 압축 폭탄/경로/실행/MIME 차단 | 완료 | 모두 HTTP 400 | +| 보관/삭제/디스크 경보 | 완료 | 24시간, 15분, 70%/85% | +| 자동 Golden Case | 완료 | 전체 회귀 259/259 | +| 운영 적용과 롤백 | 완료 | WSL 적용-원복-재적용, 운영 백업 2종 | + +## 현재값에서 목표값으로 + +| 계층 | 적용 전 | 적용 후 | +|---|---:|---:| +| FoF Upload | 10 MiB | 50 MiB | +| PHP-FPM 파일/요청 | 120/120 MiB | 64/64 MiB | +| PHP-FPM 시간/메모리 | 30초, 60초, 128 MiB | 300초, 300초, 256 MiB | +| Poller | 10 MiB, 30초, 재시도 없음 | 50 MiB, 120초, 2회 | +| Gateway 원본/해제 | 10/20 MiB | 50/100 MiB | +| 유지관리 | 수동 | 15분 주기, 24시간 만료 | +| 디스크 알림 | 없음 | 70% warning, 85% critical | + +Nginx 요청 상한 120 MiB는 유지했다. 50 MiB 멀티파트 요청을 충분히 감싸면서 PHP/FoF가 실효 경계를 담당한다. + +## 구현 + +- Poller가 Content-Length를 먼저 확인하고 1 MiB 단위로 읽어 상한을 넘는 본문을 메모리에 계속 받지 않는다. +- Community 외부 URL은 다운로드하지 않는다. +- 일시적 HTTP/네트워크 오류는 최대 2회 재시도하고, 안전 거부는 재시도하지 않는다. +- Flarum이 `application/octet-stream` 또는 `application/force-download`로 전달한 ZIP/GZIP/TAR.GZ는 파일명 기준으로 안전한 허용 MIME으로 정규화한다. +- 각 첨부는 독립 처리된다. 한 파일이 거부돼도 다른 파일과 질문 처리는 계속된다. +- 유지관리 컨테이너가 만료 Artifact를 삭제하고 디스크 수준을 JSON 로그로 남긴다. +- Flarum 적용 스크립트는 설정/파일을 백업하고 apply, verify, rollback을 제공한다. + +## 시험 결과 + +### 자동 회귀 + +운영 코드와 동일한 PR #65 기반 런타임 오버레이에서 259건 전부 통과했다. 설정 상한, 정확한 경계, Content-Length 선차단, 재시도, 외부 URL, 압축 안전 정책, Community 대화 및 기존 답변 품질 계약이 포함된다. + +### 운영 경계와 보안 + +| 시험 | 기대 | 실제 | +|---|---|---| +| Flarum 50 MiB | 허용 | 200 | +| Flarum 50 MiB+1 | 거부 | 422 | +| Gateway 50 MiB | 허용 | 201 | +| Gateway 50 MiB+1 | 거부 | 400 | +| 경로 이탈 ZIP | 거부 | 400 | +| 중첩 압축 | 거부 | 400 | +| 압축 폭탄 | 거부 | 400 | +| 실행 파일 포함 ZIP | 거부 | 400 | +| PNG MIME 위장 | 거부 | 400 | + +Gateway의 50 MiB 일반 로그 정규화는 약 18.5초로 120초 경계 안에서 끝났다. + +### 실제 대화 E2E + +임시 Discussion #172에 일반 로그, ZIP, GZIP, TAR.GZ를 게시했다. Poller가 네 파일을 모두 수집했고 AI 답변이 자동 게시됐다. 이후 Discussion #170~#172와 FoF 시험 업로드 33개를 관리자 권한으로 영구 삭제했다. DB 재확인 결과 시험 Discussion과 업로드 행은 0건이었다. + +## 운영 상태 + +- Flarum 1.8.18 / FoF Upload 1.8.5 +- Gateway `techflow/ai-gateway:issue-72-large-uploads`: healthy +- Community Poller: running +- Artifact Maintainer: running, restart 0 +- 최초 유지관리: 만료 Artifact 28개 삭제, 디스크 5%, level=ok +- Flarum 루트: 1006 GiB 중 955 GiB 여유 +- TechFlow 루트: 1005 GiB 중 917 GiB 여유 +- GitHub→Chat 보호 서비스: `frozen`, guard passed + +## 이탈과 보완 + +1. 운영 Flarum의 `config.php`가 framework helper를 사용해 배포 스크립트의 autoload가 필요했다. 설정 변경 전 실패했고, autoload를 추가해 재검증했다. +2. Flarum 서버에서 공용 HTTPS 주소로 자기 자신을 확인할 때 hairpin timeout이 발생했다. 서비스 검증을 로컬 Nginx와 Host 헤더로 고정했다. +3. Maintainer 스크립트 실행 시 Python 모듈 경로가 빠져 최초 컨테이너가 재시작했다. 실행 경로를 고정하고 새 이미지로 교체해 restart 0을 확인했다. +4. 전체 소스 압축을 기존 배포 디렉터리에 푸는 과정에서 root 소유의 비대상 도구 디렉터리에서 권한 오류가 발생했다. 실행 중 컨테이너는 변경되지 않았고, 이후 대상 파일만 교체하는 최소 범위 배포로 완료했다. + +## 롤백 + +- Flarum: `/var/backups/techflow-flarum/issue72-20260814T174252Z` +- TechFlow: `/home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z` +- DB 스키마 변경: 없음 +- WSL: 적용, 검증, 원복, 재적용 통과 + +상세 명령과 장애 대응은 `docs/runbooks/community-large-uploads.md`를 따른다. + +## 판정 + +Issue #72 완료 조건을 모두 충족했다. 운영 배포 상태는 **GO**다. + diff --git a/docs/runbooks/community-large-uploads.md b/docs/runbooks/community-large-uploads.md new file mode 100644 index 0000000..a71ad58 --- /dev/null +++ b/docs/runbooks/community-large-uploads.md @@ -0,0 +1,114 @@ +# Community 대용량 첨부 운영 Runbook + +## 목적 + +Community 질문에 이미지, 일반 로그, ZIP, GZIP, TAR.GZ를 첨부했을 때 Flarum 수신부터 TechFlow AI 분석까지 일관된 경계로 처리한다. 실행 파일, 경로 이탈, 심볼릭 링크, 중첩 압축, 압축 폭탄, MIME 위장은 닫힌 상태로 거부한다. + +```mermaid +flowchart LR + U["사용자 - 파일당 최대 50 MiB"] --> N["Nginx - 요청 120 MiB, 300초"] + N --> P["PHP-FPM - 요청 64 MiB, 300초"] + P --> F["Flarum/FoF Upload - 파일 50 MiB"] + F --> C["Community Poller - 50 MiB, 120초, 2회 재시도"] + C --> G["AI Gateway - 원본 50 MiB"] + G --> S["압축 안전검사 - 해제 100 MiB, 100개, 20배"] + S --> A["AI 답변 - 24시간 보관 후 삭제"] +``` + +## 운영 경계 + +| 계층 | 기준 | 운영값 | +|---|---|---:| +| Nginx | 요청 본문 상한 | 120 MiB | +| Nginx | 본문/응답 대기 | 300초 | +| PHP-FPM | 파일/요청 | 64 MiB / 64 MiB | +| PHP-FPM | 실행/입력/메모리 | 300초 / 300초 / 256 MiB | +| FoF Upload | 파일당 상한 | 50 MiB (51,200 KiB) | +| Poller | 다운로드/시간/재시도 | 50 MiB / 120초 / 2회 | +| AI Gateway | 원본/압축 해제 | 50 MiB / 100 MiB | +| AI Gateway | 압축 항목/압축비 | 100개 / 20배 | +| Artifact | 보관/점검 | 24시간 / 15분 | +| 디스크 | 경고/위험 | 70% / 85% | + +바깥 계층의 요청 한도는 안쪽의 파일 한도보다 크게 유지한다. 따라서 멀티파트 부가정보가 포함되어도 50 MiB 파일이 FoF Upload까지 도달한다. + +## 허용 및 거부 + +허용 대상은 PNG/JPEG/WebP 등 이미지, UTF-8 일반 텍스트 로그, ZIP, GZIP, TAR.GZ/TGZ다. PDF는 Community 보관은 가능하지만 현재 TechFlow 로그 분석 대상은 아니다. + +다음 조건은 분석에서 제외하고 사용자에게 재첨부 안내를 전달한다. + +- 50 MiB 초과 파일 +- Community 외부 주소 +- ZIP/TAR 내부 경로 이탈, 절대 경로, 드라이브 경로 +- 심볼릭 링크, 파이프, 장치 등 특수 파일 +- 실행 파일 또는 중첩 압축 +- 압축 해제 100 MiB, 항목 100개, 압축비 20배 초과 +- 확장자와 실제 바이트가 다른 이미지 및 바이너리 로그 + +## 적용 + +Flarum 서버에서 다음 스크립트를 사용한다. + +```bash +sudo /usr/local/sbin/techflow-flarum-upload-policy apply +sudo /usr/local/sbin/techflow-flarum-upload-policy verify +``` + +TechFlow는 `deploy/compose/ai-gateway/compose.yml`과 런타임 전용 `.env`에 동일한 값을 설정한 뒤 다음 서비스만 교체한다. + +```bash +docker compose -f compose.yml -f compose.openai.override.yml config --quiet +docker compose -f compose.yml -f compose.openai.override.yml up -d --no-deps \ + gateway community-poller artifact-maintainer +``` + +GitHub→Chat 보호 서비스는 배포 대상이 아니다. 배포 후 보호 검사를 반드시 실행한다. + +```bash +cd /opt/ablestack-techflow/activepieces +sudo python3 scripts/protected_service_guard.py \ + --lock protected-services.json --env-file .env \ + --compose compose.yml --ingress ingress/Caddyfile +``` + +## 확인 + +```bash +sudo /usr/local/sbin/techflow-flarum-upload-policy verify +docker inspect techflow-ai-gateway-gateway-1 --format '{{.State.Health.Status}}' +docker logs --tail 20 techflow-ai-gateway-community-poller-1 +docker logs --tail 20 techflow-ai-gateway-artifact-maintainer-1 +``` + +정상 상태는 Gateway `healthy`, Poller/Maintainer `running`, 유지관리 로그 `level=ok`다. 50 MiB는 Flarum 200/Gateway 201, 50 MiB+1바이트는 Flarum 422/Gateway 400이어야 한다. + +## 보관, 삭제 및 용량 경보 + +- Artifact는 생성 후 24시간이 지나면 유지관리 컨테이너가 삭제한다. +- 파일 삭제 API는 메타데이터와 원본을 함께 제거한다. +- 디스크 사용률 70%부터 `warning`, 85%부터 `critical` 이벤트를 컨테이너 로그에 남긴다. +- `critical`이면 신규 대용량 첨부를 일시 제한하고 오래된 Artifact, 고아 파일, Flarum 업로드 용량을 순서대로 확인한다. +- Flarum 질문을 삭제하더라도 AI Artifact는 별도 보관 경계에 따라 삭제된다. + +## 롤백 + +Flarum은 적용 시 출력된 백업 경로만 사용한다. + +```bash +sudo /usr/local/sbin/techflow-flarum-upload-policy rollback \ + /var/backups/techflow-flarum/issue72-YYYYMMDDTHHMMSSZ +``` + +TechFlow는 배포 전 `runtime-files.tar.gz`와 `.env`를 복원하고 이전 릴리스 태그로 세 서비스를 다시 만든다. DB 마이그레이션은 없으므로 데이터 스키마 롤백은 필요 없다. + +## 장애 처리 + +| 현상 | 확인 | 조치 | +|---|---|---| +| 413/422 | Nginx/PHP/FoF 실효값 | 바깥 한도 >= 64 MiB, FoF 51,200 KiB 확인 | +| Poller fetch 경고 | 첨부 URL, 시간 초과, 크기 | 외부 URL 금지 확인, 120초/2회 재시도 후 재첨부 안내 | +| 압축 안전 거부 | 파일명, 항목 수, 압축비 | 원본 로그만 다시 압축하도록 안내 | +| Maintainer 재시작 | 모듈 경로, 볼륨 권한 | 이미지 버전과 `/var/lib/techflow-artifacts` 0700/10001 확인 | +| 디스크 warning/critical | `df -h`, 유지관리 로그 | 만료 정리 확인 후 고아 파일 조사, 필요 시 업로드 일시 제한 | + diff --git a/output/issue-72-large-upload-artifact-manifest.json b/output/issue-72-large-upload-artifact-manifest.json new file mode 100644 index 0000000..cc0521b --- /dev/null +++ b/output/issue-72-large-upload-artifact-manifest.json @@ -0,0 +1,73 @@ +{ + "schemaVersion": "1.0", + "issue": 72, + "generatedAt": "2026-08-14T18:04:01.821213+00:00", + "artifactCount": 13, + "artifacts": [ + { + "path": "deploy/flarum/issue72-large-upload-policy.sh", + "bytes": 5162, + "sha256": "dd69929df026743965fb99ec1d7c056fd809bbc9b5c63c71d508c3e4478968f5" + }, + { + "path": "docs/evidence/issue-72/large-upload-production-validation.json", + "bytes": 2307, + "sha256": "be95bf98e171e5d06880fc8db34960403024e716ec6aa34378d9494068e38b30" + }, + { + "path": "docs/runbooks/community-large-uploads.md", + "bytes": 5240, + "sha256": "93da4da98385da51421b7a5e142faec4c8697cc1dd7fcb91fc8aa14373a9d78e" + }, + { + "path": "docs/reports/issue-72-community-large-upload-validation.md", + "bytes": 5619, + "sha256": "354c435aaa809583e66244be716d7889b793a4f5b53ff4dcb0b0d67c5d4ec371" + }, + { + "path": "output/pdf/techflow-issue-72-large-upload-report.pdf", + "bytes": 101252, + "sha256": "0941e05dbab5bc9a120490b06d0c8bc21ffd5bb0811ffaabc6c78fcf83e5e569" + }, + { + "path": "output/presentation/techflow-issue-72-large-upload.pptx", + "bytes": 28643, + "sha256": "231a1e38db3ed048e407ad4a600b9d0a7cc8445a607afc825f787a00f51c031f" + }, + { + "path": "output/pdf/techflow-issue-72-large-upload-presentation.pdf", + "bytes": 200231, + "sha256": "a536808d699b0c8f5ea25e48c93aa7d3eb24dbda9ec79fdb236b326a38adb051" + }, + { + "path": "tools/artifacts/issue-72/README.md", + "bytes": 773, + "sha256": "341c22e635cd6d92dc8f3fb55a3aa2ecf3ff6a0fcbc369d392401f1e9b0147a7" + }, + { + "path": "tools/artifacts/issue-72/build_report.py", + "bytes": 9445, + "sha256": "a52d86963961d6ae3a7eaa3ac0624f9ef0b7a769acc3829eb5ec794c77643e0f" + }, + { + "path": "tools/artifacts/issue-72/build_presentation.mjs", + "bytes": 7036, + "sha256": "0fa71ae7f7335578629cfcbfa6291698746c7aca4dfcca78c701bca09011f988" + }, + { + "path": "tools/artifacts/issue-72/build_presentation_pdf.py", + "bytes": 956, + "sha256": "dfff24f0d119f5c8be7af713cdb072bf02a8518118b03827faf9c2df374487c8" + }, + { + "path": "tools/artifacts/issue-72/build_manifest.py", + "bytes": 1393, + "sha256": "10000e54e1b0fc9289aab5b4b84857ab721ddf6c233ea8442cbc9d81032d3e49" + }, + { + "path": "tools/artifacts/issue-72/validate_artifacts.py", + "bytes": 1531, + "sha256": "dce9d92e43ab34a7fd8c8b6e94e2efc76db2b613fadd0aad66cb1b4c169445a8" + } + ] +} diff --git a/output/pdf/techflow-issue-72-large-upload-presentation.pdf b/output/pdf/techflow-issue-72-large-upload-presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ba1500beec528e5095bc9d541fd5f07772ba1e66 GIT binary patch literal 200231 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 z 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
i#4gs?oT6qj0iXIbO9{O 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 literal 0 HcmV?d00001 diff --git a/output/pdf/techflow-issue-72-large-upload-report.pdf b/output/pdf/techflow-issue-72-large-upload-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3c12e97a14198c6f0b223c4c7657dec76e271c11 GIT binary patch literal 101252 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 SaFY?HGMae<00dK^4gVK|!+ih% literal 0 HcmV?d00001 diff --git a/output/presentation/techflow-issue-72-large-upload.pptx b/output/presentation/techflow-issue-72-large-upload.pptx new file mode 100644 index 0000000000000000000000000000000000000000..bfa97afbececaf6e7efcf65f9f8d30c0338df808 GIT binary patch literal 28643 zcmeFZWpE@*k~J!3C^4(W%q?bSsm099%*@Q#VwSqa%*>1}W@e^t;nVFqyEAuo9_)Vh ze(hLUrB!BGWksCy@N>c=+~uS|!BByKfS`a}FcGx}MLVTgfq{S&L4bgeKCT+s8p=7? z+Bwo2+Bz81xmjBkC5+khG5|z;NpE;-geU~%kqbLjL!}W364gP;d)9i2hIp%p1;95qd{aU8guM; z?B!V9s^>~+IcyDvy&**OZ1*b%V&i9z^MGwk&%nc-XxlBlbUDyrQZZS?#3CQeXy#

C2W#Fm}3#9~3$Vm8s|cbu;Jr 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 Dz76{i literal 0 HcmV?d00001 diff --git a/tools/artifacts/issue-72/README.md b/tools/artifacts/issue-72/README.md new file mode 100644 index 0000000..f2425c0 --- /dev/null +++ b/tools/artifacts/issue-72/README.md @@ -0,0 +1,19 @@ +# Issue #72 결과물 빌드 + +Issue #72 Community 대용량 첨부 개선 보고서와 발표자료를 재생성한다. + +## 입력 + +- `docs/evidence/issue-72/large-upload-production-validation.json` +- `docs/reports/issue-72-community-large-upload-validation.md` +- `docs/runbooks/community-large-uploads.md` + +## 출력 + +- `output/pdf/techflow-issue-72-large-upload-report.pdf` +- `output/presentation/techflow-issue-72-large-upload.pptx` +- `output/pdf/techflow-issue-72-large-upload-presentation.pdf` +- `output/issue-72-large-upload-artifact-manifest.json` + +실행 환경은 Codex bundled Python/Node와 Presentation artifact-tool을 사용한다. 빌드 후 `validate_artifacts.py`로 페이지 수, 파일 크기, 구조화 증적, 비밀정보 미포함을 검증한다. + diff --git a/tools/artifacts/issue-72/build_manifest.py b/tools/artifacts/issue-72/build_manifest.py new file mode 100644 index 0000000..0b68cb8 --- /dev/null +++ b/tools/artifacts/issue-72/build_manifest.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +from datetime import datetime, timezone +import hashlib, json +from pathlib import Path + +ROOT=Path(__file__).resolve().parents[3] +OUTPUT=ROOT/"output/issue-72-large-upload-artifact-manifest.json" +ARTIFACTS=[ + "deploy/flarum/issue72-large-upload-policy.sh","docs/evidence/issue-72/large-upload-production-validation.json", + "docs/runbooks/community-large-uploads.md","docs/reports/issue-72-community-large-upload-validation.md", + "output/pdf/techflow-issue-72-large-upload-report.pdf","output/presentation/techflow-issue-72-large-upload.pptx", + "output/pdf/techflow-issue-72-large-upload-presentation.pdf","tools/artifacts/issue-72/README.md", + "tools/artifacts/issue-72/build_report.py","tools/artifacts/issue-72/build_presentation.mjs", + "tools/artifacts/issue-72/build_presentation_pdf.py","tools/artifacts/issue-72/build_manifest.py","tools/artifacts/issue-72/validate_artifacts.py"] +items=[] +for relative in ARTIFACTS: + path=ROOT/relative + if not path.is_file(): raise SystemExit(f"missing artifact: {relative}") + body=path.read_bytes(); items.append({"path":relative,"bytes":len(body),"sha256":hashlib.sha256(body).hexdigest()}) +OUTPUT.write_text(json.dumps({"schemaVersion":"1.0","issue":72,"generatedAt":datetime.now(timezone.utc).isoformat(),"artifactCount":len(items),"artifacts":items},ensure_ascii=False,indent=2)+"\n",encoding="utf-8") +print(OUTPUT) + diff --git a/tools/artifacts/issue-72/build_presentation.mjs b/tools/artifacts/issue-72/build_presentation.mjs new file mode 100644 index 0000000..9c56750 --- /dev/null +++ b/tools/artifacts/issue-72/build_presentation.mjs @@ -0,0 +1,86 @@ +import fs from "node:fs/promises"; +import path from "node:path"; +import { Presentation, PresentationFile } from "@oai/artifact-tool"; + +const ROOT = process.env.TECHFLOW_ROOT; +if (!ROOT) throw new Error("TECHFLOW_ROOT is required"); +const renderDir = path.join(ROOT, "tmp", "issue72-presentation", "renders"); +const output = path.join(ROOT, "output", "presentation", "techflow-issue-72-large-upload.pptx"); +await fs.mkdir(renderDir, { recursive: true }); +await fs.mkdir(path.dirname(output), { recursive: true }); + +const deck = Presentation.create({ slideSize: { width: 1280, height: 720 } }); +const C = { ink: "#101010", gray: "#5B616B", panel: "#EDEDED", rule: "#B8BCC4", pale: "#EAF5FB", blue: "#3D8DFF", green: "#117A4B", white: "#FFFFFF" }; +const FONT = "Malgun Gothic"; + +function box(slide, name, left, top, width, height, fill=C.white, line=C.rule) { + return slide.shapes.add({ geometry: "rect", name, position: { left, top, width, height }, fill, line: { style: "solid", fill: line, width: 1 } }); +} +function text(slide, name, value, left, top, width, height, size=24, bold=false, color=C.ink, align="left") { + const item=slide.shapes.add({ geometry:"textbox", name, position:{left,top,width,height}, fill:"none", line:{style:"solid",fill:"none",width:0} }); + item.text=value; item.text.style={fontSize:size,bold,color,typeface:FONT,alignment:align}; return item; +} +function title(slide, value, number) { + text(slide, `title-${number}`, value, 42, 34, 1120, 88, 46, true); + text(slide, `page-${number}`, String(number).padStart(2,"0"), 1180, 656, 58, 24, 16, false, C.gray, "right"); +} +function notes(slide) { + slide.speakerNotes.textFrame.setText("[Sources]\n- docs/evidence/issue-72/large-upload-production-validation.json\n- docs/reports/issue-72-community-large-upload-validation.md\n- docs/runbooks/community-large-uploads.md"); +} + +{ + const s=deck.slides.add(); s.background.fill=C.white; + text(s,"cover-kicker","ABLESTACK TECHFLOW · ISSUE #72",42,42,560,42,20,true,C.gray); + text(s,"cover-title","Community 대용량\n첨부 개선 완료",42,190,560,190,66,true); + text(s,"cover-subtitle","50 MiB 경계 · 압축 안전검사 · 운영 E2E",42,430,560,70,28,false,C.gray); + box(s,"cover-hero",660,42,578,588,C.pale,C.rule); + text(s,"cover-stat","50\nMiB",708,160,480,240,90,true,C.blue,"center"); + text(s,"cover-detail","파일당 운영 상한\n2026.08.15",708,430,480,100,26,false,C.gray,"center"); + notes(s); +} +{ + const s=deck.slides.add(); title(s,"하나의 50 MiB 경계가 전 계층을 관통합니다",2); + const labels=["Nginx\n120 MiB","PHP-FPM\n64 MiB","FoF Upload\n50 MiB","Poller\n50 MiB","Gateway\n50 MiB","압축 해제\n100 MiB"]; + labels.forEach((label,i)=>{ const left=42+i*199; box(s,`flow-${i}`,left,260,164,150,i===2||i===4?C.pale:C.panel,i===2||i===4?C.blue:C.rule); text(s,`flow-text-${i}`,label,left+12,300,140,70,24,true,C.ink,"center"); if(i<5) text(s,`arrow-${i}`,"→",left+166,313,34,40,30,true,C.gray,"center"); }); + text(s,"flow-foot","다운로드 120초 · 일시 오류 2회 재시도 · 100개 항목 · 압축비 20배 · 24시간 보관",42,500,1196,62,24,false,C.gray,"center"); notes(s); +} +{ + const s=deck.slides.add(); title(s,"병목은 10 MiB에서 50 MiB로 이동했습니다",3); + const values=[["계층","적용 전","적용 후"],["FoF Upload","10 MiB","50 MiB"],["PHP-FPM","120 MiB · 30/60초 · 128 MiB","64 MiB · 300/300초 · 256 MiB"],["Poller","10 MiB · 30초 · 재시도 없음","50 MiB · 120초 · 2회"],["Gateway","원본 10 / 해제 20 MiB","원본 50 / 해제 100 MiB"],["유지관리","수동","15분 · 24시간 · 70%/85%"]]; + const t=s.tables.add({rows:6,columns:3,left:42,top:170,width:1196,height:430,columnWidths:[250,430,516],values}); + t.borders.assign({style:"solid",fill:C.rule,width:1}); + for(let c=0;c<3;c++){t.getCell(0,c).fill="#243B64"; t.getCell(0,c).text.style={fontSize:22,bold:true,color:C.white,typeface:FONT};} + for(let r=1;r<6;r++) for(let c=0;c<3;c++){t.getCell(r,c).fill=r%2?C.white:"#F7F9FC";t.getCell(r,c).text.style={fontSize:19,bold:c===0,color:C.ink,typeface:FONT};} + notes(s); +} +{ + const s=deck.slides.add(); title(s,"운영 검증은 코드, 경계, 실제 대화를 모두 통과했습니다",4); + const cards=[{v:"259/259",d:"전체 런타임 회귀"},{v:"50 MiB",d:"허용 · +1 byte 거부"},{v:"4종",d:"로그 · ZIP · GZIP · TAR.GZ"}]; + cards.forEach((card,i)=>{const left=42+i*411;box(s,`metric-${i}`,left,300,374,270,C.panel,C.panel);text(s,`metric-value-${i}`,card.v,left+28,350,318,100,56,true,i===1?C.blue:C.ink,"center");text(s,`metric-detail-${i}`,card.d,left+28,478,318,46,23,false,C.gray,"center");}); + text(s,"metric-caption","Discussion #172: Artifact 4개 수집 · AI 답변 자동 게시 · 시험 데이터 영구 삭제",42,160,1196,72,25,false,C.gray,"center"); notes(s); +} +{ + const s=deck.slides.add(); title(s,"위험한 압축과 위장 파일은 모두 닫힌 상태로 거부됩니다",5); + const values=[["시험","HTTP","판정"],["경로 이탈 ZIP","400","거부"],["중첩 압축","400","거부"],["압축 폭탄","400","거부"],["실행 파일 포함","400","거부"],["PNG MIME 위장","400","거부"]]; + const t=s.tables.add({rows:6,columns:3,left:42,top:176,width:760,height:420,columnWidths:[450,130,180],values}); t.borders.assign({style:"solid",fill:C.rule,width:1}); + for(let c=0;c<3;c++){t.getCell(0,c).fill="#243B64";t.getCell(0,c).text.style={fontSize:22,bold:true,color:C.white,typeface:FONT};} + for(let r=1;r<6;r++)for(let c=0;c<3;c++){t.getCell(r,c).fill=r%2?C.white:"#F7F9FC";t.getCell(r,c).text.style={fontSize:20,bold:c===2,color:c===2?C.green:C.ink,typeface:FONT};} + box(s,"security-side",850,176,388,420,C.pale,C.blue); text(s,"security-side-title","운영 안전망",884,220,320,45,28,true,C.blue); + text(s,"security-side-body","24시간 만료 삭제\n15분 주기 점검\n70% 경고\n85% 위험\n\n최초 실행에서\n만료 28개 정리",884,292,320,250,25,false,C.ink); notes(s); +} +{ + const s=deck.slides.add(); s.background.fill=C.white; + text(s,"close-kicker","ISSUE #72 · COMPLETE",42,42,420,42,20,true,C.gray); + text(s,"close-title","운영 상태는\nGO입니다",42,188,850,190,82,true); + text(s,"close-detail","Gateway healthy · Poller running · Maintainer running\nGitHub→Chat 보호 서비스 frozen / guard passed",42,485,760,85,28,false,C.gray); + box(s,"close-badge",934,208,304,304,C.pale,C.blue); text(s,"close-go","GO",964,296,244,100,72,true,C.blue,"center"); + notes(s); +} + +for (const [index,slide] of deck.slides.items.entries()) { + const blob=await deck.export({slide,format:"png",scale:1}); + await fs.writeFile(path.join(renderDir,`slide-${String(index+1).padStart(2,"0")}.png`),new Uint8Array(await blob.arrayBuffer())); + const layout=await slide.export({format:"layout"}); await fs.writeFile(path.join(renderDir,`slide-${String(index+1).padStart(2,"0")}.layout.json`),await layout.text()); +} +const pptx=await PresentationFile.exportPptx(deck); await pptx.save(output); console.log(output); + diff --git a/tools/artifacts/issue-72/build_presentation_pdf.py b/tools/artifacts/issue-72/build_presentation_pdf.py new file mode 100644 index 0000000..3d25f13 --- /dev/null +++ b/tools/artifacts/issue-72/build_presentation_pdf.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +from pathlib import Path +from PIL import Image +from reportlab.lib.utils import ImageReader +from reportlab.pdfgen import canvas + +ROOT=Path(__file__).resolve().parents[3] +SLIDES=ROOT/"tmp/issue72-presentation/renders" +OUTPUT=ROOT/"output/pdf/techflow-issue-72-large-upload-presentation.pdf" +images=sorted(SLIDES.glob("slide-*.png")) +if len(images)!=6: raise RuntimeError(f"expected 6 slides, found {len(images)}") +with Image.open(images[0]) as first: width,height=first.size +OUTPUT.parent.mkdir(parents=True,exist_ok=True) +pdf=canvas.Canvas(str(OUTPUT),pagesize=(width,height)); pdf.setTitle("TechFlow Issue #72 발표자료"); pdf.setAuthor("ABLESTACK TechFlow") +for image in images: + with Image.open(image) as current: + if current.size!=(width,height): raise ValueError(f"inconsistent slide size: {image}") + pdf.drawImage(ImageReader(str(image)),0,0,width=width,height=height); pdf.showPage() +pdf.save(); print(OUTPUT) + diff --git a/tools/artifacts/issue-72/build_report.py b/tools/artifacts/issue-72/build_report.py new file mode 100644 index 0000000..678ab8f --- /dev/null +++ b/tools/artifacts/issue-72/build_report.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +"""Build the Issue #72 production validation report PDF.""" + +from __future__ import annotations + +import json +from pathlib import Path +from xml.sax.saxutils import escape + +from reportlab.lib import colors +from reportlab.lib.pagesizes import A4 +from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet +from reportlab.lib.units import mm +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfbase.ttfonts import TTFont +from reportlab.platypus import BaseDocTemplate, Frame, PageBreak, PageTemplate, Paragraph, Spacer, Table, TableStyle + + +ROOT = Path(__file__).resolve().parents[3] +SOURCE = ROOT / "docs/evidence/issue-72/large-upload-production-validation.json" +OUTPUT = ROOT / "output/pdf/techflow-issue-72-large-upload-report.pdf" +FONT, BOLD = "MalgunGothic", "MalgunGothicBold" +pdfmetrics.registerFont(TTFont(FONT, "C:/Windows/Fonts/malgun.ttf")) +pdfmetrics.registerFont(TTFont(BOLD, "C:/Windows/Fonts/malgunbd.ttf")) + +INK, GRAY = colors.HexColor("#101010"), colors.HexColor("#5B616B") +LINE, BLUE, PALE, GREEN = colors.HexColor("#D4D8DF"), colors.HexColor("#3D8DFF"), colors.HexColor("#EAF5FB"), colors.HexColor("#117A4B") +base = getSampleStyleSheet() +styles = { + "meta": ParagraphStyle("meta", parent=base["Normal"], fontName=BOLD, fontSize=8.5, leading=12, textColor=GRAY), + "title": ParagraphStyle("title", parent=base["Title"], fontName=BOLD, fontSize=24, leading=33, textColor=INK), + "subtitle": ParagraphStyle("subtitle", parent=base["Normal"], fontName=FONT, fontSize=11, leading=18, textColor=GRAY), + "h1": ParagraphStyle("h1", parent=base["Heading1"], fontName=BOLD, fontSize=16, leading=23, textColor=INK, spaceAfter=4*mm), + "h2": ParagraphStyle("h2", parent=base["Heading2"], fontName=BOLD, fontSize=12, leading=18, textColor=INK, spaceBefore=2*mm, spaceAfter=2*mm), + "body": ParagraphStyle("body", parent=base["BodyText"], fontName=FONT, fontSize=9, leading=14.5, textColor=colors.HexColor("#30343B"), spaceAfter=2.2*mm), + "small": ParagraphStyle("small", parent=base["BodyText"], fontName=FONT, fontSize=7.5, leading=11, textColor=GRAY), + "table": ParagraphStyle("table", parent=base["BodyText"], fontName=FONT, fontSize=7.5, leading=10.5, textColor=colors.HexColor("#30343B")), + "table_head": ParagraphStyle("table_head", parent=base["BodyText"], fontName=BOLD, fontSize=7.5, leading=10.5, textColor=colors.white), +} + + +def para(value: object, style: str = "body") -> Paragraph: + return Paragraph(escape(str(value)).replace("\n", "
"), styles[style]) + + +def make_table(rows: list[list[object]], widths: list[float]) -> Table: + cells = [[para(cell, "table_head" if row_index == 0 else "table") for cell in row] for row_index, row in enumerate(rows)] + item = Table(cells, colWidths=widths, repeatRows=1, hAlign="LEFT") + item.setStyle(TableStyle([ + ("BACKGROUND", (0,0), (-1,0), colors.HexColor("#243B64")), ("GRID", (0,0), (-1,-1), .35, LINE), + ("VALIGN", (0,0), (-1,-1), "TOP"), ("LEFTPADDING", (0,0), (-1,-1), 5), + ("RIGHTPADDING", (0,0), (-1,-1), 5), ("TOPPADDING", (0,0), (-1,-1), 5), + ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, colors.HexColor("#F7F9FC")]), + ])) + return item + + +def callout(text: str, color=GREEN) -> Table: + item = Table([[para(text)]], colWidths=[174*mm]) + item.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),PALE),("BOX",(0,0),(-1,-1),1.25,color), + ("LEFTPADDING",(0,0),(-1,-1),10),("RIGHTPADDING",(0,0),(-1,-1),10), + ("TOPPADDING",(0,0),(-1,-1),8),("BOTTOMPADDING",(0,0),(-1,-1),8)])) + return item + + +def footer(canvas, doc) -> None: + canvas.saveState(); canvas.setFont(FONT, 7); canvas.setFillColor(GRAY) + canvas.drawString(18*mm, 10*mm, "ABLESTACK TechFlow - Issue #72") + canvas.drawRightString(192*mm, 10*mm, f"{doc.page:02d}"); canvas.restoreState() + + +data = json.loads(SOURCE.read_text(encoding="utf-8")); tests=data["tests"]; policy=data["policy"] +OUTPUT.parent.mkdir(parents=True, exist_ok=True) +doc=BaseDocTemplate(str(OUTPUT),pagesize=A4,rightMargin=18*mm,leftMargin=18*mm,topMargin=16*mm,bottomMargin=17*mm, + title="TechFlow Issue #72 Community 대용량 첨부 개선 완료 보고서",author="ABLESTACK TechFlow") +doc.addPageTemplates([PageTemplate(id="normal",frames=[Frame(doc.leftMargin,doc.bottomMargin,doc.width,doc.height,id="content")],onPage=footer)]) + +story=[ + Spacer(1,19*mm), para("ABLESTACK TECHFLOW · ISSUE #72","meta"), Spacer(1,8*mm), + para("Community 대용량 로그·압축파일\n업로드 개선 완료 보고서","title"), Spacer(1,6*mm), + para("Flarum 수신부터 TechFlow AI 분석까지 50 MiB 경계를 일치시키고 압축 안전검사, 자동 정리, 운영 E2E를 완료한 결과입니다.","subtitle"), + Spacer(1,17*mm), callout("GO - 운영 적용 완료, 전체 회귀 259/259, 실제 대화에서 네 종류 첨부 수집과 AI 답변 게시 확인"), + Spacer(1,8*mm), para("운영 반영일 2026-08-15 · Flarum 1.8.18 · FoF Upload 1.8.5","meta"), PageBreak(), + para("1. 판단 요약","h1"), + make_table([["항목","결과","판정"],["파일 경계","50 MiB 허용 / +1 byte 거부","PASS"],["압축 분석","100 MiB, 100개, 20배","PASS"], + ["실제 대화","로그·ZIP·GZIP·TAR.GZ + AI 답변","PASS"],["보안 거부","경로·중첩·폭탄·실행·MIME","PASS"], + ["운영 회귀","259/259","PASS"],["보호 서비스","github-chat-v1 frozen","PASS"]],[54*mm,83*mm,37*mm]), + Spacer(1,7*mm), callout("시험 Discussion과 업로드 33개는 영구 삭제했으며 DB 잔존 행은 0건입니다.",BLUE), PageBreak(), + para("2. 계층별 현재값과 목표값","h1"), + make_table([["계층","적용 전","적용 후"],["FoF Upload","10 MiB","50 MiB"],["PHP-FPM","120 MiB, 30/60초, 128 MiB","64 MiB, 300/300초, 256 MiB"], + ["Poller","10 MiB, 30초, 재시도 없음","50 MiB, 120초, 2회"],["Gateway","10/20 MiB","50/100 MiB"], + ["유지관리","수동","15분, 24시간, 70%/85%"]],[46*mm,61*mm,67*mm]), + Spacer(1,6*mm), para("Nginx의 120 MiB 요청 상한은 유지해 50 MiB 파일과 멀티파트 부가정보를 충분히 감쌉니다."), PageBreak(), + para("3. 안전한 처리 흐름","h1"), + make_table([["단계","처리","실패 시"],["1. Community","허용 MIME, 50 MiB","사용자에게 크기/형식 안내"],["2. Poller","동일 출처, bounded read, 2회 재시도","파일별 경고 후 다른 첨부 계속"], + ["3. Gateway","원본 50 MiB","400 안전 거부"],["4. 압축 검사","100 MiB, 100개, 20배","경로/링크/실행/중첩 차단"], + ["5. 보관","24시간, 15분 정리","70%/85% 용량 이벤트"]],[37*mm,86*mm,51*mm]), + Spacer(1,6*mm), para("Flarum이 압축 파일을 범용 다운로드 MIME으로 전달해도 ZIP, GZIP, TAR.GZ 파일명만 허용 MIME으로 정규화합니다."), PageBreak(), + para("4. 경계 및 보안 시험","h1"), + make_table([["시험","Flarum/Gateway","결과"],["50 MiB","200 / 201","허용"],["50 MiB + 1 byte","422 / 400","거부"], + ["경로 이탈 ZIP","- / 400","거부"],["중첩 압축","- / 400","거부"],["압축 폭탄","- / 400","거부"], + ["실행 파일 포함","- / 400","거부"],["PNG MIME 위장","- / 400","거부"]],[58*mm,58*mm,58*mm]), + Spacer(1,6*mm), callout("Gateway 50 MiB 일반 로그 정규화 18.5초 - 운영 제한 120초 안에서 완료",BLUE), PageBreak(), + para("5. 실제 Community E2E","h1"), + make_table([["검증","결과"],["임시 Discussion","#172"],["첨부","일반 로그, ZIP, GZIP, TAR.GZ"],["Gateway Artifact","4개 증가"], + ["AI 답변","자동 게시"],["시험 글","#170~#172 영구 삭제"],["시험 업로드","33개 영구 삭제"],["DB 잔존","0건"]],[66*mm,108*mm]), + Spacer(1,7*mm), para("질문 생성부터 Poller 전달, Artifact 생성, OpenAI 답변, Community 게시까지 약 1분의 운영 흐름을 끝까지 확인했습니다."), PageBreak(), + para("6. 운영 상태와 롤백","h1"), + make_table([["항목","상태"],["Gateway","issue-72-large-uploads / healthy"],["Poller","running"],["Maintainer","running / restart 0"], + ["최초 만료 정리","28개"],["TechFlow 디스크","5% 사용, level=ok"],["Flarum 여유","955 GiB"],["TechFlow 여유","917 GiB"]],[63*mm,111*mm]), + Spacer(1,6*mm), para("Flarum 백업: /var/backups/techflow-flarum/issue72-20260814T174252Z","small"), + para("TechFlow 백업: /home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z","small"), + Spacer(1,7*mm), callout("WSL 적용-검증-원복-재적용 통과 · DB 스키마 변경 없음",GREEN), PageBreak(), + para("7. 최종 판정","h1"), + callout("Issue #72 완료 조건을 모두 충족했습니다. 운영 상태는 GO입니다.",GREEN), Spacer(1,7*mm), + para("운영자는 50 MiB 파일 허용, 50 MiB 초과 거부, Maintainer level=ok, github-chat-v1 guard passed를 핵심 상태로 확인합니다."), + para("근거 자산","h2"), para("Runbook: docs/runbooks/community-large-uploads.md\n완료 보고서: docs/reports/issue-72-community-large-upload-validation.md\n구조화 증적: docs/evidence/issue-72/large-upload-production-validation.json","small") +] +doc.build(story); print(OUTPUT) + diff --git a/tools/artifacts/issue-72/validate_artifacts.py b/tools/artifacts/issue-72/validate_artifacts.py new file mode 100644 index 0000000..b29b7b1 --- /dev/null +++ b/tools/artifacts/issue-72/validate_artifacts.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +import json +from pathlib import Path +from pypdf import PdfReader + +ROOT=Path(__file__).resolve().parents[3] +EVIDENCE=ROOT/"docs/evidence/issue-72/large-upload-production-validation.json" +REPORT=ROOT/"output/pdf/techflow-issue-72-large-upload-report.pdf" +PRESENTATION=ROOT/"output/pdf/techflow-issue-72-large-upload-presentation.pdf" +PPTX=ROOT/"output/presentation/techflow-issue-72-large-upload.pptx" +MANIFEST=ROOT/"output/issue-72-large-upload-artifact-manifest.json" +data=json.loads(EVIDENCE.read_text(encoding="utf-8")); tests=data["tests"] +assert data["issue"]==72 and data["policy"]["fileMaxBytes"]==52428800 +assert tests["runtimeRegression"]=={"total":259,"passed":259} +assert tests["communityE2E"]["artifactsAdded"]==4 and tests["communityE2E"]["answerPublished"] is True +assert tests["communityE2E"]["residualDatabaseRows"]==0 +assert all(item["result"]=="PASS" for item in tests["security"]) +assert tests["protectedService"]["guard"]=="passed" +assert len(PdfReader(str(REPORT)).pages)>=7 and len(PdfReader(str(PRESENTATION)).pages)==6 +assert PPTX.stat().st_size>25_000 +manifest=json.loads(MANIFEST.read_text(encoding="utf-8")); assert manifest["issue"]==72 and manifest["artifactCount"]==len(manifest["artifacts"]) +texts="\n".join((ROOT/p).read_text(encoding="utf-8") for p in ["docs/reports/issue-72-community-large-upload-validation.md","docs/runbooks/community-large-uploads.md"]) +assert not any(token in texts for token in ["Ablecloud1!","Pdh1974","sk-proj-"]) +print("Issue #72 artifacts: PASS") + From e4eca7b7d28a701e69fd1d6b21f94da9b5ee3378 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sat, 15 Aug 2026 03:06:22 +0900 Subject: [PATCH 07/11] =?UTF-8?q?chore:=20Issue=2072=20=EC=9E=90=EC=82=B0?= =?UTF-8?q?=20=EC=A4=84=EB=81=9D=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/reports/issue-72-community-large-upload-validation.md | 1 - docs/runbooks/community-large-uploads.md | 1 - tools/artifacts/issue-72/README.md | 1 - tools/artifacts/issue-72/build_manifest.py | 1 - tools/artifacts/issue-72/build_presentation.mjs | 1 - tools/artifacts/issue-72/build_presentation_pdf.py | 1 - tools/artifacts/issue-72/build_report.py | 1 - tools/artifacts/issue-72/validate_artifacts.py | 1 - 8 files changed, 8 deletions(-) diff --git a/docs/reports/issue-72-community-large-upload-validation.md b/docs/reports/issue-72-community-large-upload-validation.md index 14f2881..1170c5e 100644 --- a/docs/reports/issue-72-community-large-upload-validation.md +++ b/docs/reports/issue-72-community-large-upload-validation.md @@ -98,4 +98,3 @@ Gateway의 50 MiB 일반 로그 정규화는 약 18.5초로 120초 경계 안에 ## 판정 Issue #72 완료 조건을 모두 충족했다. 운영 배포 상태는 **GO**다. - diff --git a/docs/runbooks/community-large-uploads.md b/docs/runbooks/community-large-uploads.md index a71ad58..b78d2f2 100644 --- a/docs/runbooks/community-large-uploads.md +++ b/docs/runbooks/community-large-uploads.md @@ -111,4 +111,3 @@ TechFlow는 배포 전 `runtime-files.tar.gz`와 `.env`를 복원하고 이전 | 압축 안전 거부 | 파일명, 항목 수, 압축비 | 원본 로그만 다시 압축하도록 안내 | | Maintainer 재시작 | 모듈 경로, 볼륨 권한 | 이미지 버전과 `/var/lib/techflow-artifacts` 0700/10001 확인 | | 디스크 warning/critical | `df -h`, 유지관리 로그 | 만료 정리 확인 후 고아 파일 조사, 필요 시 업로드 일시 제한 | - diff --git a/tools/artifacts/issue-72/README.md b/tools/artifacts/issue-72/README.md index f2425c0..0c92cc1 100644 --- a/tools/artifacts/issue-72/README.md +++ b/tools/artifacts/issue-72/README.md @@ -16,4 +16,3 @@ Issue #72 Community 대용량 첨부 개선 보고서와 발표자료를 재생 - `output/issue-72-large-upload-artifact-manifest.json` 실행 환경은 Codex bundled Python/Node와 Presentation artifact-tool을 사용한다. 빌드 후 `validate_artifacts.py`로 페이지 수, 파일 크기, 구조화 증적, 비밀정보 미포함을 검증한다. - diff --git a/tools/artifacts/issue-72/build_manifest.py b/tools/artifacts/issue-72/build_manifest.py index 0b68cb8..57a1126 100644 --- a/tools/artifacts/issue-72/build_manifest.py +++ b/tools/artifacts/issue-72/build_manifest.py @@ -19,4 +19,3 @@ body=path.read_bytes(); items.append({"path":relative,"bytes":len(body),"sha256":hashlib.sha256(body).hexdigest()}) OUTPUT.write_text(json.dumps({"schemaVersion":"1.0","issue":72,"generatedAt":datetime.now(timezone.utc).isoformat(),"artifactCount":len(items),"artifacts":items},ensure_ascii=False,indent=2)+"\n",encoding="utf-8") print(OUTPUT) - diff --git a/tools/artifacts/issue-72/build_presentation.mjs b/tools/artifacts/issue-72/build_presentation.mjs index 9c56750..d82d426 100644 --- a/tools/artifacts/issue-72/build_presentation.mjs +++ b/tools/artifacts/issue-72/build_presentation.mjs @@ -83,4 +83,3 @@ for (const [index,slide] of deck.slides.items.entries()) { const layout=await slide.export({format:"layout"}); await fs.writeFile(path.join(renderDir,`slide-${String(index+1).padStart(2,"0")}.layout.json`),await layout.text()); } const pptx=await PresentationFile.exportPptx(deck); await pptx.save(output); console.log(output); - diff --git a/tools/artifacts/issue-72/build_presentation_pdf.py b/tools/artifacts/issue-72/build_presentation_pdf.py index 3d25f13..d1eecb3 100644 --- a/tools/artifacts/issue-72/build_presentation_pdf.py +++ b/tools/artifacts/issue-72/build_presentation_pdf.py @@ -17,4 +17,3 @@ if current.size!=(width,height): raise ValueError(f"inconsistent slide size: {image}") pdf.drawImage(ImageReader(str(image)),0,0,width=width,height=height); pdf.showPage() pdf.save(); print(OUTPUT) - diff --git a/tools/artifacts/issue-72/build_report.py b/tools/artifacts/issue-72/build_report.py index 678ab8f..c0b40bf 100644 --- a/tools/artifacts/issue-72/build_report.py +++ b/tools/artifacts/issue-72/build_report.py @@ -117,4 +117,3 @@ def footer(canvas, doc) -> None: para("근거 자산","h2"), para("Runbook: docs/runbooks/community-large-uploads.md\n완료 보고서: docs/reports/issue-72-community-large-upload-validation.md\n구조화 증적: docs/evidence/issue-72/large-upload-production-validation.json","small") ] doc.build(story); print(OUTPUT) - diff --git a/tools/artifacts/issue-72/validate_artifacts.py b/tools/artifacts/issue-72/validate_artifacts.py index b29b7b1..93d4fb4 100644 --- a/tools/artifacts/issue-72/validate_artifacts.py +++ b/tools/artifacts/issue-72/validate_artifacts.py @@ -22,4 +22,3 @@ texts="\n".join((ROOT/p).read_text(encoding="utf-8") for p in ["docs/reports/issue-72-community-large-upload-validation.md","docs/runbooks/community-large-uploads.md"]) assert not any(token in texts for token in ["Ablecloud1!","Pdh1974","sk-proj-"]) print("Issue #72 artifacts: PASS") - From faee9cc6fef0d59b10eaa56d047b7a474fe42ea2 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sun, 16 Aug 2026 09:38:13 +0900 Subject: [PATCH 08/11] =?UTF-8?q?feat:=201GB=20=EC=9D=BC=EB=B0=98=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EA=B3=BC=2010GB=20=EC=95=95=EC=B6=95=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/compose/ai-gateway/.env.example | 9 +- deploy/compose/ai-gateway/compose.yml | 16 +- deploy/flarum/issue72-large-upload-policy.sh | 128 ++++++- services/ai-gateway/app/artifacts.py | 170 +++++++-- services/ai-gateway/app/config.py | 23 +- services/ai-gateway/app/log_artifacts.py | 338 ++++++++++++------ services/ai-gateway/app/main.py | 10 +- .../scripts/artifact_maintenance.py | 5 +- services/ai-gateway/scripts/poll_flarum.py | 132 ++++--- .../scripts/verify_large_upload_boundaries.py | 171 +++++++++ services/ai-gateway/tests/test_assist.py | 32 ++ .../ai-gateway/tests/test_community_poller.py | 52 +-- services/ai-gateway/tests/test_config.py | 20 +- .../tests/test_container_contract.py | 9 + 14 files changed, 862 insertions(+), 253 deletions(-) create mode 100644 services/ai-gateway/scripts/verify_large_upload_boundaries.py diff --git a/deploy/compose/ai-gateway/.env.example b/deploy/compose/ai-gateway/.env.example index 52d19ac..225e9a9 100644 --- a/deploy/compose/ai-gateway/.env.example +++ b/deploy/compose/ai-gateway/.env.example @@ -11,9 +11,12 @@ TECHFLOW_FLARUM_API_KEY_SECRET_FILE=/protected/path/flarum-api-key TECHFLOW_COMMUNITY_INGEST_WEBHOOK_SECRET_FILE=/protected/path/community-ingest-webhook TECHFLOW_COMMUNITY_PUBLISH_ENABLED=false TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS=60 -TECHFLOW_ARTIFACT_MAX_BYTES=52428800 -TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES=104857600 -TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES=52428800 +TECHFLOW_ARTIFACT_MAX_BYTES=1073741824 +TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES=10737418240 +TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES=107374182400 +TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES=1073741824 +TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES=10737418240 +TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS=7200 TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS=120 TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES=2 TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS=900 diff --git a/deploy/compose/ai-gateway/compose.yml b/deploy/compose/ai-gateway/compose.yml index d754163..a4d246a 100644 --- a/deploy/compose/ai-gateway/compose.yml +++ b/deploy/compose/ai-gateway/compose.yml @@ -124,8 +124,9 @@ services: TECHFLOW_SOURCE_MIRROR_ROOT: /var/lib/techflow-source-mirrors TECHFLOW_ARTIFACT_ROOT: /var/lib/techflow-artifacts TECHFLOW_ARTIFACT_RETENTION_HOURS: "24" - TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-52428800} - TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-104857600} + TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-1073741824} + TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES: ${TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES:-10737418240} + TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-107374182400} TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES: "100" TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO: "20" TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS: "120000" @@ -199,9 +200,11 @@ services: TECHFLOW_FLARUM_API_KEY_FILE: /run/secrets/flarum_api_key TECHFLOW_COMMUNITY_INGEST_WEBHOOK_FILE: /run/secrets/community_ingest_webhook TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS: ${TECHFLOW_COMMUNITY_POLL_INTERVAL_SECONDS:-60} - TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES: ${TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES:-52428800} - TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS: ${TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS:-120} + TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES: ${TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES:-1073741824} + TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES: ${TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES:-10737418240} + TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS: ${TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS:-7200} TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES: ${TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES:-2} + TECHFLOW_COMMUNITY_ATTACHMENT_TMP_DIR: /var/lib/techflow-community-poller/tmp TECHFLOW_GATEWAY_URL: http://gateway:8090 TECHFLOW_COMMUNITY_POLLER_STATE: /var/lib/techflow-community-poller/state.json command: ["python", "scripts/poll_flarum.py"] @@ -228,8 +231,9 @@ services: environment: TECHFLOW_ARTIFACT_ROOT: /var/lib/techflow-artifacts TECHFLOW_ARTIFACT_RETENTION_HOURS: "24" - TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-52428800} - TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-104857600} + TECHFLOW_ARTIFACT_MAX_BYTES: ${TECHFLOW_ARTIFACT_MAX_BYTES:-1073741824} + TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES: ${TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES:-10737418240} + TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES: ${TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES:-107374182400} TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES: "100" TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO: "20" TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS: "120000" diff --git a/deploy/flarum/issue72-large-upload-policy.sh b/deploy/flarum/issue72-large-upload-policy.sh index 4073458..fa1cdfa 100755 --- a/deploy/flarum/issue72-large-upload-policy.sh +++ b/deploy/flarum/issue72-large-upload-policy.sh @@ -6,7 +6,24 @@ APP_USER="${FLARUM_RUN_USER:-www-data}" BACKUP_ROOT="${TECHFLOW_UPLOAD_BACKUP_ROOT:-/var/backups/techflow-flarum}" PHP_OVERRIDE="/etc/php/8.3/fpm/conf.d/99-techflow-upload.ini" NGINX_OVERRIDE="/etc/nginx/conf.d/techflow-upload.conf" -MAX_KIB=51200 +FLARUM_EXTEND="${APP_DIR}/extend.php" +POLICY_EXTENDER="${APP_DIR}/techflow-upload-policy.extend.php" +PHP_UPLOAD_TMP="/var/lib/flarum-upload-tmp" +NGINX_BODY_TMP="/var/lib/nginx/techflow-body" +REGULAR_MAX_BYTES=1073741824 +ARCHIVE_MAX_BYTES=10737418240 +MAX_KIB=10485760 + +nginx_site_file() { + if [[ -n ${TECHFLOW_NGINX_SITE_FILE:-} ]]; then + readlink -f "$TECHFLOW_NGINX_SITE_FILE" + return + fi + local candidate + candidate=$(grep -lR 'server_name[[:space:]].*community\.ablecloud\.io' /etc/nginx/sites-enabled 2>/dev/null | head -n1) + [[ -n $candidate ]] || { echo "Community nginx site file not found" >&2; exit 2; } + readlink -f "$candidate" +} require_root() { if [[ ${EUID} -ne 0 ]]; then @@ -32,7 +49,7 @@ settings_php() { } if ($mode === "policy") { $values = [ - "fof-upload.maxFileSize" => "51200", + "fof-upload.maxFileSize" => "10485760", "fof-upload.mimeTypes" => json_encode([ "^image\\/(jpeg|png|gif|webp|avif|bmp|tiff|svg\\+xml)$" => ["adapter" => "local", "template" => "image-preview"], "^text\\/(plain|csv)$" => ["adapter" => "local", "template" => "file"], @@ -75,7 +92,7 @@ verify() { SETTINGS_JSON="$settings" python3 - <<'PY' import json, os values = json.loads(os.environ["SETTINGS_JSON"]) -assert values.get("fof-upload.maxFileSize") == "51200", values +assert values.get("fof-upload.maxFileSize") == "10485760", values mime = json.loads(values["fof-upload.mimeTypes"]) joined = " ".join(mime) for expected in ("image", "text", "zip", "gzip"): @@ -85,8 +102,18 @@ for blocked in ("7z", "rar", "iso", "bzip", "stuffit", "lha", "arj"): PY local fpm_info fpm_info=$(php-fpm8.3 -i 2>/dev/null) - grep -q '^upload_max_filesize => 64M => 64M' <<<"$fpm_info" - grep -q '^post_max_size => 64M => 64M' <<<"$fpm_info" + grep -q '^upload_max_filesize => 10G => 10G' <<<"$fpm_info" + grep -q '^post_max_size => 11G => 11G' <<<"$fpm_info" + grep -q '^upload_tmp_dir => /var/lib/flarum-upload-tmp => /var/lib/flarum-upload-tmp' <<<"$fpm_info" + nginx -T 2>&1 | grep -q 'client_max_body_size 11G;' + php -l "$POLICY_EXTENDER" >/dev/null + grep -q 'techflow-upload-policy.extend.php' "$FLARUM_EXTEND" + runuser -u "$APP_USER" -- php -r ' + require $argv[1]."/vendor/autoload.php"; + require $argv[1]."/techflow-upload-policy.extend.php"; + assert(techflow_upload_limit("service.log", "text/plain") === 1073741824); + assert(techflow_upload_limit("support.zip", "application/zip") === 10737418240); + ' "$APP_DIR" curl --fail --silent --show-error --max-time 20 \ --header 'Host: community.ablecloud.io' \ "${TECHFLOW_COMMUNITY_VERIFY_URL:-http://127.0.0.1/}" >/dev/null @@ -104,20 +131,92 @@ apply_policy() { chmod 0600 "${backup}/settings.json" backup_file "$PHP_OVERRIDE" "${backup}/php-upload.ini" backup_file "$NGINX_OVERRIDE" "${backup}/nginx-upload.conf" + backup_file "$FLARUM_EXTEND" "${backup}/extend.php" + backup_file "$POLICY_EXTENDER" "${backup}/techflow-upload-policy.extend.php" + local nginx_site + nginx_site=$(nginx_site_file) + backup_file "$nginx_site" "${backup}/nginx-site.conf" + printf '%s\n' "$nginx_site" > "${backup}/nginx-site.path" cat > "$PHP_OVERRIDE" <<'EOF' -upload_max_filesize=64M -post_max_size=64M -max_execution_time=300 -max_input_time=300 -memory_limit=256M +upload_max_filesize=10G +post_max_size=11G +max_execution_time=7200 +max_input_time=7200 +memory_limit=512M +max_file_uploads=5 +upload_tmp_dir=/var/lib/flarum-upload-tmp EOF chmod 0644 "$PHP_OVERRIDE" cat > "$NGINX_OVERRIDE" <<'EOF' -client_body_timeout 300s; -fastcgi_read_timeout 300s; +client_body_timeout 7200s; +fastcgi_read_timeout 7200s; +client_body_buffer_size 1m; +client_body_temp_path /var/lib/nginx/techflow-body 1 2; EOF chmod 0644 "$NGINX_OVERRIDE" + install -d -o "$APP_USER" -g "$APP_USER" -m 0700 "$PHP_UPLOAD_TMP" + install -d -o www-data -g www-data -m 0700 "$NGINX_BODY_TMP" + + NGINX_SITE="$nginx_site" python3 - <<'PY' +import os, pathlib, re +path = pathlib.Path(os.environ["NGINX_SITE"]) +text = path.read_text(encoding="utf-8") +if re.search(r"client_max_body_size\s+[^;]+;", text): + text = re.sub(r"client_max_body_size\s+[^;]+;", "client_max_body_size 11G;", text, count=1) +else: + text = re.sub(r"(server_name\s+[^;]+;)", r"\1\n client_max_body_size 11G;", text, count=1) +path.write_text(text, encoding="utf-8") +PY + + cat > "$POLICY_EXTENDER" <<'PHP' +listen(WillBeUploaded::class, function (WillBeUploaded $event): void { + $limit = techflow_upload_limit($event->uploadedFile->getClientOriginalName(), $event->mime); + $size = $event->uploadedFile->getSize(); + if ($size === false || $size < 1 || $size > $limit) { + $label = $limit === 10737418240 ? '압축파일은 10GiB 이하' : '일반 파일은 1GiB 이하'; + throw new ValidationException(['upload' => "{$label}만 업로드할 수 있습니다."]); + } + }), +]; +PHP + chown "$APP_USER:$APP_USER" "$POLICY_EXTENDER" + chmod 0644 "$POLICY_EXTENDER" + POLICY_EXTENDER="$POLICY_EXTENDER" FLARUM_EXTEND="$FLARUM_EXTEND" python3 - <<'PY' +import os, pathlib +path = pathlib.Path(os.environ["FLARUM_EXTEND"]) +text = path.read_text(encoding="utf-8") +marker = "techflow-upload-policy.extend.php" +if marker not in text: + before, token, after = text.partition("return [") + if not token: + raise SystemExit("Flarum extend.php return array not found") + text = before + "return array_merge(require __DIR__.'/" + marker + "', [" + after + index = text.rfind("];" ) + if index < 0: + raise SystemExit("Flarum extend.php closing array not found") + text = text[:index] + "]);" + text[index + 2:] + path.write_text(text, encoding="utf-8") +PY + chown "$APP_USER:$APP_USER" "$FLARUM_EXTEND" settings_php policy /dev/null diff --git a/services/ai-gateway/app/artifacts.py b/services/ai-gateway/app/artifacts.py index bf31ee9..8386bf3 100644 --- a/services/ai-gateway/app/artifacts.py +++ b/services/ai-gateway/app/artifacts.py @@ -2,6 +2,7 @@ from __future__ import annotations +import asyncio from dataclasses import dataclass from datetime import datetime, timedelta, timezone import hashlib @@ -10,9 +11,10 @@ from pathlib import Path import struct from threading import RLock +from typing import AsyncIterable, Iterable from uuid import UUID, uuid4 -from .log_artifacts import ARCHIVE_MEDIA_TYPES, PLAIN_MEDIA_TYPES, parse_log_artifact +from .log_artifacts import ARCHIVE_MEDIA_TYPES, PLAIN_MEDIA_TYPES, parse_log_artifact_path from .provider import EvidenceArtifact, ImageArtifact, LogArtifact from .store import InvalidBoundaryError, NotFoundError @@ -22,13 +24,13 @@ MEDIA_TYPE_ALIASES = {"application/x-zip-compressed", "application/octet-stream"} -def _normalized_media_type(filename: str, media_type: str, data: bytes) -> str: +def _normalized_media_type(filename: str, media_type: str, header: bytes) -> str: if media_type == "application/x-zip-compressed": return "application/zip" if media_type == "application/octet-stream": - if data[:4] in {b"PK\x03\x04", b"PK\x05\x06", b"PK\x07\x08"} and filename.casefold().endswith(".zip"): + if header[:4] in {b"PK\x03\x04", b"PK\x05\x06", b"PK\x07\x08"} and filename.casefold().endswith(".zip"): return "application/zip" - if data[:2] == b"\x1f\x8b" and filename.casefold().endswith((".gz", ".tgz")): + if header[:2] == b"\x1f\x8b" and filename.casefold().endswith((".gz", ".tgz")): return "application/gzip" return "text/plain" return media_type @@ -90,6 +92,7 @@ def payload(self) -> dict[str, object]: class ArtifactStore: def __init__( self, root: str, *, retention_hours: int, max_bytes: int, + max_archive_bytes: int = 10 * 1024 * 1024 * 1024, max_extracted_bytes: int = 20 * 1024 * 1024, max_archive_entries: int = 100, max_compression_ratio: int = 20, max_log_evidence_chars: int = 120_000, ) -> None: @@ -101,60 +104,142 @@ def __init__( pass self.retention = timedelta(hours=retention_hours) self.max_bytes = max_bytes + self.max_archive_bytes = max_archive_bytes self.max_extracted_bytes = max_extracted_bytes self.max_archive_entries = max_archive_entries self.max_compression_ratio = max_compression_ratio self.max_log_evidence_chars = max_log_evidence_chars self._lock = RLock() - def _paths(self, artifact_id: UUID) -> tuple[Path, Path]: + def _paths(self, artifact_id: UUID) -> tuple[Path, Path, Path]: base = self.root / str(artifact_id) - return base.with_suffix(".bin"), base.with_suffix(".json") + return base.with_suffix(".bin"), base.with_suffix(".json"), base.with_suffix(".evidence") - def put(self, filename: str, media_type: str, data: bytes) -> ArtifactRecord: - if media_type not in ALLOWED_MEDIA_TYPES | MEDIA_TYPE_ALIASES: - raise InvalidBoundaryError("unsupported evidence artifact media type") - if not data or len(data) > self.max_bytes: - raise InvalidBoundaryError("artifact size is outside the permitted boundary") + def _safe_name(self, filename: str) -> str: safe_name = Path(filename).name[:128] if not safe_name or safe_name != filename or "/" in filename or "\\" in filename: raise InvalidBoundaryError("artifact filename is invalid") - media_type = _normalized_media_type(safe_name, media_type, data) + return safe_name + + def _hint_limit(self, filename: str, media_type: str) -> int: + if media_type not in ALLOWED_MEDIA_TYPES | MEDIA_TYPE_ALIASES: + raise InvalidBoundaryError("unsupported evidence artifact media type") + lowered = filename.casefold() + if media_type in ARCHIVE_MEDIA_TYPES | {"application/x-zip-compressed"} or lowered.endswith((".zip", ".gz", ".tgz", ".tar.gz")): + return self.max_archive_bytes + return self.max_bytes + + @staticmethod + def _hash_path(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as source: + while chunk := source.read(1024 * 1024): + digest.update(chunk) + return digest.hexdigest() + + def _finalize(self, temporary: Path, filename: str, media_type: str, size_bytes: int, sha256: str) -> ArtifactRecord: + if media_type not in ALLOWED_MEDIA_TYPES | MEDIA_TYPE_ALIASES: + raise InvalidBoundaryError("unsupported evidence artifact media type") + safe_name = self._safe_name(filename) + if not size_bytes: + raise InvalidBoundaryError("artifact size is outside the permitted boundary") + with temporary.open("rb") as source: + header = source.read(1024 * 1024) + media_type = _normalized_media_type(safe_name, media_type, header) + effective_max = self.max_archive_bytes if media_type in ARCHIVE_MEDIA_TYPES else self.max_bytes + if size_bytes > effective_max: + raise InvalidBoundaryError("artifact size is outside the permitted boundary") width = height = entry_count = extracted_bytes = None evidence_truncated = False redaction_count = 0 + evidence_text: str | None = None if media_type in IMAGE_MEDIA_TYPES: kind = "IMAGE" - width, height = _dimensions(data, media_type) + width, height = _dimensions(header, media_type) if width < 1 or height < 1 or width > 12000 or height > 12000 or width * height > 40_000_000: raise InvalidBoundaryError("artifact dimensions exceed the permitted boundary") else: kind = "LOG" - analysis = parse_log_artifact( - safe_name, media_type, data, max_entries=self.max_archive_entries, + analysis = parse_log_artifact_path( + safe_name, media_type, temporary, max_entries=self.max_archive_entries, max_extracted_bytes=self.max_extracted_bytes, max_ratio=self.max_compression_ratio, max_evidence_chars=self.max_log_evidence_chars, ) entry_count, extracted_bytes = analysis.entry_count, analysis.extracted_bytes evidence_truncated, redaction_count = analysis.truncated, analysis.redaction_count + evidence_text = analysis.evidence_text now, artifact_id = datetime.now(timezone.utc), uuid4() record = ArtifactRecord( - artifact_id, safe_name, media_type, hashlib.sha256(data).hexdigest(), len(data), kind, + artifact_id, safe_name, media_type, sha256, size_bytes, kind, width, height, entry_count, extracted_bytes, evidence_truncated, redaction_count, now, now + self.retention, ) - binary, metadata = self._paths(artifact_id) + binary, metadata, evidence = self._paths(artifact_id) + payload = record.payload() + if evidence_text is not None: + payload["evidenceSha256"] = hashlib.sha256(evidence_text.encode("utf-8")).hexdigest() with self._lock: - binary.write_bytes(data) - metadata.write_text(json.dumps(record.payload(), default=str, separators=(",", ":")), encoding="utf-8") + os.replace(temporary, binary) + if evidence_text is not None: + evidence.write_text(evidence_text, encoding="utf-8") + metadata.write_text(json.dumps(payload, default=str, separators=(",", ":")), encoding="utf-8") try: os.chmod(binary, 0o600); os.chmod(metadata, 0o600) + if evidence_text is not None: + os.chmod(evidence, 0o600) except OSError: pass return record + def _put_chunks(self, filename: str, media_type: str, chunks: Iterable[bytes]) -> ArtifactRecord: + safe_name = self._safe_name(filename) + hinted_max = self._hint_limit(safe_name, media_type) + temporary = self.root / f".upload-{uuid4().hex}.part" + digest, total = hashlib.sha256(), 0 + try: + with temporary.open("xb") as target: + for chunk in chunks: + if not chunk: + continue + total += len(chunk) + if total > hinted_max: + raise InvalidBoundaryError("artifact size is outside the permitted boundary") + digest.update(chunk) + target.write(chunk) + return self._finalize(temporary, safe_name, media_type, total, digest.hexdigest()) + finally: + temporary.unlink(missing_ok=True) + + def put(self, filename: str, media_type: str, data: bytes) -> ArtifactRecord: + return self._put_chunks(filename, media_type, (data,)) + + async def put_stream( + self, filename: str, media_type: str, chunks: AsyncIterable[bytes], *, content_length: int | None = None, + ) -> ArtifactRecord: + safe_name = self._safe_name(filename) + hinted_max = self._hint_limit(safe_name, media_type) + if content_length is not None and (content_length < 1 or content_length > hinted_max): + raise InvalidBoundaryError("artifact size is outside the permitted boundary") + temporary = self.root / f".upload-{uuid4().hex}.part" + digest, total = hashlib.sha256(), 0 + try: + with temporary.open("xb") as target: + async for chunk in chunks: + if not chunk: + continue + total += len(chunk) + if total > hinted_max: + raise InvalidBoundaryError("artifact size is outside the permitted boundary") + digest.update(chunk) + target.write(chunk) + return await asyncio.to_thread( + self._finalize, temporary, safe_name, media_type, total, digest.hexdigest() + ) + finally: + temporary.unlink(missing_ok=True) + def _load(self, artifact_id: UUID) -> ArtifactRecord: - binary, metadata = self._paths(artifact_id) + binary, metadata, _ = self._paths(artifact_id) if not binary.exists() or not metadata.exists(): raise NotFoundError("artifact not found") raw = json.loads(metadata.read_text(encoding="utf-8")) @@ -185,32 +270,39 @@ def image(self, artifact_id: UUID) -> ImageArtifact: def evidence(self, artifact_id: UUID) -> EvidenceArtifact: with self._lock: record = self._load(artifact_id) - binary, _ = self._paths(artifact_id) - data = binary.read_bytes() - if hashlib.sha256(data).hexdigest() != record.sha256: - raise InvalidBoundaryError("artifact integrity validation failed") + binary, metadata, evidence = self._paths(artifact_id) if record.kind == "IMAGE": + if self._hash_path(binary) != record.sha256: + raise InvalidBoundaryError("artifact integrity validation failed") + data = binary.read_bytes() return ImageArtifact(str(artifact_id), record.media_type, data, record.sha256) - analysis = parse_log_artifact( - record.filename, record.media_type, data, max_entries=self.max_archive_entries, - max_extracted_bytes=self.max_extracted_bytes, max_ratio=self.max_compression_ratio, - max_evidence_chars=self.max_log_evidence_chars, - ) - if ( - analysis.entry_count != record.entry_count or analysis.extracted_bytes != record.extracted_bytes - or analysis.redaction_count != record.redaction_count - ): - raise InvalidBoundaryError("artifact normalization integrity validation failed") + raw = json.loads(metadata.read_text(encoding="utf-8")) + if evidence.exists() and raw.get("evidenceSha256"): + evidence_text = evidence.read_text(encoding="utf-8") + if hashlib.sha256(evidence_text.encode("utf-8")).hexdigest() != raw["evidenceSha256"]: + raise InvalidBoundaryError("artifact normalization integrity validation failed") + else: + analysis = parse_log_artifact_path( + record.filename, record.media_type, binary, max_entries=self.max_archive_entries, + max_extracted_bytes=self.max_extracted_bytes, max_ratio=self.max_compression_ratio, + max_evidence_chars=self.max_log_evidence_chars, + ) + if ( + analysis.entry_count != record.entry_count or analysis.extracted_bytes != record.extracted_bytes + or analysis.redaction_count != record.redaction_count + ): + raise InvalidBoundaryError("artifact normalization integrity validation failed") + evidence_text = analysis.evidence_text return LogArtifact( - str(artifact_id), record.media_type, record.sha256, analysis.evidence_text, - analysis.entry_count, analysis.extracted_bytes, analysis.truncated, analysis.redaction_count, + str(artifact_id), record.media_type, record.sha256, evidence_text, + record.entry_count or 0, record.extracted_bytes or 0, record.evidence_truncated, record.redaction_count, ) def delete(self, artifact_id: UUID) -> bool: - binary, metadata = self._paths(artifact_id) - existed = binary.exists() or metadata.exists() + binary, metadata, evidence = self._paths(artifact_id) + existed = binary.exists() or metadata.exists() or evidence.exists() with self._lock: - binary.unlink(missing_ok=True); metadata.unlink(missing_ok=True) + binary.unlink(missing_ok=True); metadata.unlink(missing_ok=True); evidence.unlink(missing_ok=True) return existed def purge_expired(self) -> int: diff --git a/services/ai-gateway/app/config.py b/services/ai-gateway/app/config.py index dbafcb3..ca63030 100644 --- a/services/ai-gateway/app/config.py +++ b/services/ai-gateway/app/config.py @@ -27,8 +27,9 @@ class Settings: database_pool_max: int = 4 artifact_root: str = os.path.join(tempfile.gettempdir(), "techflow-artifacts") artifact_retention_hours: int = 24 - artifact_max_bytes: int = 50 * 1024 * 1024 - artifact_max_extracted_bytes: int = 100 * 1024 * 1024 + artifact_max_bytes: int = 1024 * 1024 * 1024 + artifact_max_archive_bytes: int = 10 * 1024 * 1024 * 1024 + artifact_max_extracted_bytes: int = 100 * 1024 * 1024 * 1024 artifact_max_archive_entries: int = 100 artifact_max_compression_ratio: int = 20 artifact_max_log_evidence_chars: int = 120_000 @@ -54,8 +55,9 @@ def from_env(cls) -> "Settings": database_pool_max=int(os.getenv("TECHFLOW_RAG_DATABASE_POOL_MAX", "4")), artifact_root=os.getenv("TECHFLOW_ARTIFACT_ROOT", os.path.join(tempfile.gettempdir(), "techflow-artifacts")), artifact_retention_hours=int(os.getenv("TECHFLOW_ARTIFACT_RETENTION_HOURS", "24")), - artifact_max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(50 * 1024 * 1024))), - artifact_max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024))), + artifact_max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(1024 * 1024 * 1024))), + artifact_max_archive_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES", str(10 * 1024 * 1024 * 1024))), + artifact_max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024 * 1024))), artifact_max_archive_entries=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES", "100")), artifact_max_compression_ratio=int(os.getenv("TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO", "20")), artifact_max_log_evidence_chars=int(os.getenv("TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS", "120000")), @@ -91,10 +93,12 @@ def validate(self) -> None: raise ConfigurationError("invalid database pool bounds") if not 1 <= self.artifact_retention_hours <= 168: raise ConfigurationError("TECHFLOW_ARTIFACT_RETENTION_HOURS must be between 1 and 168") - if not 1024 <= self.artifact_max_bytes <= 50 * 1024 * 1024: - raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_BYTES must be between 1 KiB and 50 MiB") - if not self.artifact_max_bytes <= self.artifact_max_extracted_bytes <= 200 * 1024 * 1024: - raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES must be between upload max and 200 MiB") + if not 1024 <= self.artifact_max_bytes <= 1024 * 1024 * 1024: + raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_BYTES must be between 1 KiB and 1 GiB") + if not self.artifact_max_bytes <= self.artifact_max_archive_bytes <= 10 * 1024 * 1024 * 1024: + raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES must be between regular max and 10 GiB") + if not self.artifact_max_archive_bytes <= self.artifact_max_extracted_bytes <= 100 * 1024 * 1024 * 1024: + raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES must be between archive max and 100 GiB") if not 1 <= self.artifact_max_archive_entries <= 500: raise ConfigurationError("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES must be between 1 and 500") if not 1 <= self.artifact_max_compression_ratio <= 100: @@ -115,7 +119,7 @@ def __repr__(self) -> str: "safety_identifier_salt_file=, embedding_batch_size={!r}, " "classification={!r}, log_level={!r}, " "database_pool_min={!r}, database_pool_max={!r}, artifact_root=, " - "artifact_retention_hours={!r}, artifact_max_bytes={!r}, artifact_max_extracted_bytes={!r}, " + "artifact_retention_hours={!r}, artifact_max_bytes={!r}, artifact_max_archive_bytes={!r}, artifact_max_extracted_bytes={!r}, " "artifact_max_archive_entries={!r}, artifact_max_compression_ratio={!r}, " "artifact_max_log_evidence_chars={!r}, flarum_base_url={!r}, flarum_public_url={!r}, " "flarum_api_key_file=, community_publish_enabled={!r})" @@ -130,6 +134,7 @@ def __repr__(self) -> str: self.database_pool_max, self.artifact_retention_hours, self.artifact_max_bytes, + self.artifact_max_archive_bytes, self.artifact_max_extracted_bytes, self.artifact_max_archive_entries, self.artifact_max_compression_ratio, diff --git a/services/ai-gateway/app/log_artifacts.py b/services/ai-gateway/app/log_artifacts.py index 857f94a..e1cb546 100644 --- a/services/ai-gateway/app/log_artifacts.py +++ b/services/ai-gateway/app/log_artifacts.py @@ -2,13 +2,16 @@ from __future__ import annotations +import codecs +from collections import deque from dataclasses import dataclass import gzip -from io import BytesIO from pathlib import Path, PurePosixPath import re import stat import tarfile +import tempfile +from typing import BinaryIO import zipfile from .store import InvalidBoundaryError @@ -70,21 +73,6 @@ def _safe_member_name(name: str) -> str: return normalized -def _decode_log(data: bytes) -> str: - if not data: - raise InvalidBoundaryError("empty log entries are not permitted") - if b"\x00" in data: - raise InvalidBoundaryError("binary log content is not permitted") - try: - text = data.decode("utf-8-sig") - except UnicodeDecodeError as exc: - raise InvalidBoundaryError("log content must be UTF-8") from exc - controls = sum(ord(char) < 32 and char not in "\r\n\t" for char in text) - if controls > max(2, len(text) // 100): - raise InvalidBoundaryError("binary-like log content is not permitted") - return text.replace("\r\n", "\n").replace("\r", "\n") - - def _redact(text: str) -> tuple[str, int]: count = 0 for pattern in SECRET_PATTERNS: @@ -100,68 +88,175 @@ def replace(match: re.Match[str]) -> str: return text, count -def _selected_ranges(lines: list[str]) -> list[tuple[int, int]]: - interesting = {index for index, line in enumerate(lines) if INTERESTING.search(line)} - selected: set[int] = set() - if interesting: - for index in interesting: - selected.update(range(max(0, index - 2), min(len(lines), index + 3))) - else: - selected.update(range(min(20, len(lines)))) - selected.update(range(max(0, len(lines) - 20), len(lines))) - ranges: list[tuple[int, int]] = [] - for index in sorted(selected): - if not ranges or index > ranges[-1][1] + 1: - ranges.append((index, index)) +def parse_log_artifact( + filename: str, media_type: str, data: bytes, *, max_entries: int, max_extracted_bytes: int, + max_ratio: int, max_evidence_chars: int, +) -> LogAnalysis: + with tempfile.NamedTemporaryFile(prefix="techflow-log-", suffix=".bin") as temporary: + temporary.write(data) + temporary.flush() + return parse_log_artifact_path( + filename, media_type, Path(temporary.name), max_entries=max_entries, + max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio, + max_evidence_chars=max_evidence_chars, + ) + + +STREAM_CHUNK_BYTES = 1024 * 1024 +MAX_LOG_LINE_CHARS = 1024 * 1024 +CONTROL_BYTES = re.compile(rb"[\x01-\x08\x0b\x0c\x0e-\x1f]") + + +@dataclass(frozen=True) +class _EntryScan: + name: str + selected: tuple[tuple[int, str], ...] + bytes_read: int + truncated: bool + redaction_count: int + + +class _EvidenceSelector: + def __init__(self, name: str, max_chars: int) -> None: + self.name = name + self.max_chars = max_chars + self.first: list[tuple[int, str]] = [] + self.last: deque[tuple[int, str]] = deque(maxlen=20) + self.previous: deque[tuple[int, str]] = deque(maxlen=2) + self.selected: dict[int, str] = {} + self.selected_chars = 0 + self.interesting = False + self.after = 0 + self.line_number = 0 + self.redactions = 0 + self.truncated = False + + def _keep(self, number: int, line: str) -> None: + if number in self.selected: + return + rendered, count = _redact(line[:4000]) + if self.selected_chars + len(rendered) > self.max_chars * 2: + self.truncated = True + return + self.selected[number] = rendered + self.selected_chars += len(rendered) + self.redactions += count + + def line(self, raw: str) -> None: + self.line_number += 1 + line = raw.rstrip("\r\n") + item = (self.line_number, line) + if len(self.first) < 20: + self.first.append(item) + self.last.append(item) + if INTERESTING.search(line): + self.interesting = True + for number, previous in self.previous: + self._keep(number, previous) + self._keep(*item) + self.after = 2 + elif self.after: + self._keep(*item) + self.after -= 1 + self.previous.append(item) + + def result(self, bytes_read: int) -> _EntryScan: + if not self.line_number: + raise InvalidBoundaryError("empty log entries are not permitted") + if self.interesting: + selected = self.selected else: - ranges[-1] = (ranges[-1][0], index) - return ranges + selected = {} + for number, line in self.first + list(self.last): + if number not in selected: + redacted, count = _redact(line[:4000]) + selected[number] = redacted + self.redactions += count + return _EntryScan( + self.name, tuple(sorted(selected.items())), bytes_read, + self.truncated, self.redactions, + ) + + +def _scan_log_stream(name: str, stream: BinaryIO, *, max_bytes: int, max_evidence_chars: int) -> _EntryScan: + decoder = codecs.getincrementaldecoder("utf-8-sig")("strict") + selector = _EvidenceSelector(name, max_evidence_chars) + buffered = "" + total = controls = characters = 0 + try: + while True: + chunk = stream.read(STREAM_CHUNK_BYTES) + if not chunk: + break + total += len(chunk) + if total > max_bytes: + raise InvalidBoundaryError("archive expansion exceeds the permitted boundary") + if b"\x00" in chunk: + raise InvalidBoundaryError("binary log content is not permitted") + text = decoder.decode(chunk) + controls += len(CONTROL_BYTES.findall(chunk)) + characters += len(text) + lines = (buffered + text).split("\n") + buffered = lines.pop() + for line in lines: + selector.line(line) + if len(buffered) > MAX_LOG_LINE_CHARS: + raise InvalidBoundaryError("log line exceeds the permitted boundary") + buffered += decoder.decode(b"", final=True) + except UnicodeDecodeError as exc: + raise InvalidBoundaryError("log content must be UTF-8") from exc + if buffered: + selector.line(buffered) + if controls > max(2, characters // 100): + raise InvalidBoundaryError("binary-like log content is not permitted") + return selector.result(total) -def _evidence(entries: list[tuple[str, str]], max_chars: int) -> tuple[str, bool, int]: +def _render_streamed_evidence(entries: list[_EntryScan], max_chars: int) -> tuple[str, bool, int]: blocks: list[str] = [] - redactions = 0 - truncated = False - for name, raw_text in entries: - text, count = _redact(raw_text) - redactions += count - lines = text.splitlines() - for start, end in _selected_ranges(lines): - rendered = [f"@@ {name}:{start + 1}-{end + 1}"] - rendered.extend(f"{number + 1}: {lines[number][:4000]}" for number in range(start, end + 1)) - block = "\n".join(rendered) + "\n" - if sum(len(item) for item in blocks) + len(block) > max_chars: + used = 0 + truncated = any(entry.truncated for entry in entries) + redactions = sum(entry.redaction_count for entry in entries) + for entry in entries: + selected = list(entry.selected) + index = 0 + while index < len(selected): + start = index + while index + 1 < len(selected) and selected[index + 1][0] == selected[index][0] + 1: + index += 1 + end = index + lines = selected[start:end + 1] + block = [f"@@ {entry.name}:{lines[0][0]}-{lines[-1][0]}"] + block.extend(f"{number}: {line}" for number, line in lines) + rendered = "\n".join(block) + "\n" + if used + len(rendered) > max_chars: truncated = True - remaining = max_chars - sum(len(item) for item in blocks) + remaining = max_chars - used if remaining > 128: - blocks.append(block[:remaining] + "\n[TRUNCATED]\n") + blocks.append(rendered[:remaining] + "\n[TRUNCATED]\n") return "".join(blocks), truncated, redactions - blocks.append(block) + blocks.append(rendered) + used += len(rendered) + index += 1 return "".join(blocks), truncated, redactions -def _validate_limits( - entries: list[tuple[str, bytes]], compressed_bytes: int, *, max_entries: int, - max_extracted_bytes: int, max_ratio: int, -) -> int: - if not entries or len(entries) > max_entries: - raise InvalidBoundaryError("archive entry count is outside the permitted boundary") - total = sum(len(data) for _, data in entries) - if total > max_extracted_bytes: - raise InvalidBoundaryError("extracted log size exceeds the permitted boundary") - if total > max(compressed_bytes, 1) * max_ratio: - raise InvalidBoundaryError("archive compression ratio exceeds the permitted boundary") - return total +def _archive_total_allowed(compressed_bytes: int, max_extracted_bytes: int, max_ratio: int) -> int: + return min(max_extracted_bytes, max(compressed_bytes, 1) * max_ratio) -def _read_zip(data: bytes, *, max_entries: int, max_extracted_bytes: int, max_ratio: int) -> list[tuple[str, bytes]]: +def _scan_zip_path( + path: Path, *, max_entries: int, max_extracted_bytes: int, max_ratio: int, max_evidence_chars: int, +) -> tuple[list[_EntryScan], int]: + compressed_bytes = path.stat().st_size + allowed = _archive_total_allowed(compressed_bytes, max_extracted_bytes, max_ratio) try: - with zipfile.ZipFile(BytesIO(data)) as archive: + with zipfile.ZipFile(path) as archive: infos = [item for item in archive.infolist() if not item.is_dir()] if not infos or len(infos) > max_entries: raise InvalidBoundaryError("archive entry count is outside the permitted boundary") - entries: list[tuple[str, bytes]] = [] declared_total = 0 + scans: list[_EntryScan] = [] for info in infos: name = _safe_member_name(info.filename) if info.flag_bits & 0x1: @@ -170,92 +265,117 @@ def _read_zip(data: bytes, *, max_entries: int, max_extracted_bytes: int, max_ra if file_type not in {0, stat.S_IFREG}: raise InvalidBoundaryError("archive links and special files are not permitted") declared_total += info.file_size - if declared_total > max_extracted_bytes or declared_total > max(len(data), 1) * max_ratio: + if declared_total > allowed: raise InvalidBoundaryError("archive expansion exceeds the permitted boundary") - member = archive.read(info) - if len(member) != info.file_size: + with archive.open(info) as stream: + scan = _scan_log_stream( + name, stream, max_bytes=info.file_size, max_evidence_chars=max_evidence_chars, + ) + if scan.bytes_read != info.file_size: raise InvalidBoundaryError("archive member size is inconsistent") - entries.append((name, member)) - _validate_limits(entries, len(data), max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio) - return entries + scans.append(scan) + return scans, declared_total except InvalidBoundaryError: raise - except (zipfile.BadZipFile, RuntimeError, EOFError) as exc: + except (zipfile.BadZipFile, RuntimeError, EOFError, OSError) as exc: raise InvalidBoundaryError("invalid ZIP log archive") from exc -def _read_gzip(data: bytes, filename: str, *, max_extracted_bytes: int, max_ratio: int) -> list[tuple[str, bytes]]: - try: - with gzip.GzipFile(fileobj=BytesIO(data)) as stream: - content = stream.read(max_extracted_bytes + 1) - except (gzip.BadGzipFile, EOFError, OSError) as exc: - raise InvalidBoundaryError("invalid GZIP log archive") from exc - if len(content) > max_extracted_bytes or len(content) > max(len(data), 1) * max_ratio: - raise InvalidBoundaryError("archive expansion exceeds the permitted boundary") +def _scan_gzip_path( + filename: str, path: Path, *, max_extracted_bytes: int, max_ratio: int, max_evidence_chars: int, +) -> tuple[list[_EntryScan], int]: name = filename[:-3] if filename.casefold().endswith(".gz") else filename + ".log" if not _is_log_name(name): raise InvalidBoundaryError("GZIP payload filename is not a supported log") - return [(Path(name).name, content)] + allowed = _archive_total_allowed(path.stat().st_size, max_extracted_bytes, max_ratio) + try: + with gzip.open(path, "rb") as stream: + scan = _scan_log_stream( + Path(name).name, stream, max_bytes=allowed, max_evidence_chars=max_evidence_chars, + ) + return [scan], scan.bytes_read + except InvalidBoundaryError: + raise + except (gzip.BadGzipFile, EOFError, OSError) as exc: + raise InvalidBoundaryError("invalid GZIP log archive") from exc -def _read_tar_gz( - data: bytes, *, max_entries: int, max_extracted_bytes: int, max_ratio: int, -) -> list[tuple[str, bytes]]: +def _scan_tar_gz_path( + path: Path, *, max_entries: int, max_extracted_bytes: int, max_ratio: int, max_evidence_chars: int, +) -> tuple[list[_EntryScan], int]: + allowed = _archive_total_allowed(path.stat().st_size, max_extracted_bytes, max_ratio) + scans: list[_EntryScan] = [] + total = 0 try: - with tarfile.open(fileobj=BytesIO(data), mode="r:gz") as archive: - members = [item for item in archive.getmembers() if not item.isdir()] - if not members or len(members) > max_entries: - raise InvalidBoundaryError("archive entry count is outside the permitted boundary") - entries: list[tuple[str, bytes]] = [] - declared_total = 0 - for member in members: + with tarfile.open(path, mode="r|gz") as archive: + for member in archive: + if member.isdir(): + continue if not member.isfile(): raise InvalidBoundaryError("archive links and special files are not permitted") + if len(scans) >= max_entries: + raise InvalidBoundaryError("archive entry count is outside the permitted boundary") name = _safe_member_name(member.name) - declared_total += member.size - if declared_total > max_extracted_bytes or declared_total > max(len(data), 1) * max_ratio: + total += member.size + if total > allowed: raise InvalidBoundaryError("archive expansion exceeds the permitted boundary") stream = archive.extractfile(member) if stream is None: raise InvalidBoundaryError("archive member cannot be read") - content = stream.read(member.size + 1) - if len(content) != member.size: + scan = _scan_log_stream( + name, stream, max_bytes=member.size, max_evidence_chars=max_evidence_chars, + ) + if scan.bytes_read != member.size: raise InvalidBoundaryError("archive member size is inconsistent") - entries.append((name, content)) - _validate_limits(entries, len(data), max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio) - return entries + scans.append(scan) + if not scans: + raise InvalidBoundaryError("archive entry count is outside the permitted boundary") + return scans, total + except InvalidBoundaryError: + raise except (tarfile.TarError, EOFError, OSError) as exc: raise InvalidBoundaryError("invalid TAR.GZ log archive") from exc -def parse_log_artifact( - filename: str, media_type: str, data: bytes, *, max_entries: int, max_extracted_bytes: int, +def parse_log_artifact_path( + filename: str, media_type: str, path: Path, *, max_entries: int, max_extracted_bytes: int, max_ratio: int, max_evidence_chars: int, ) -> LogAnalysis: lowered = filename.casefold() + with path.open("rb") as source: + header = source.read(4) if media_type in PLAIN_MEDIA_TYPES: if not _is_log_name(filename): raise InvalidBoundaryError("filename is not a supported log") - entries = [(filename, data)] + with path.open("rb") as source: + scans = [_scan_log_stream( + filename, source, max_bytes=path.stat().st_size, + max_evidence_chars=max_evidence_chars, + )] + extracted = scans[0].bytes_read elif media_type == "application/zip": - if not lowered.endswith(".zip") or data[:4] not in {b"PK\x03\x04", b"PK\x05\x06", b"PK\x07\x08"}: + if not lowered.endswith(".zip") or header not in {b"PK\x03\x04", b"PK\x05\x06", b"PK\x07\x08"}: raise InvalidBoundaryError("artifact bytes do not match ZIP") - entries = _read_zip(data, max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio) + scans, extracted = _scan_zip_path( + path, max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, + max_ratio=max_ratio, max_evidence_chars=max_evidence_chars, + ) elif media_type in {"application/gzip", "application/x-gzip"}: - if not lowered.endswith((".gz", ".tgz")) or data[:2] != b"\x1f\x8b": + if not lowered.endswith((".gz", ".tgz")) or header[:2] != b"\x1f\x8b": raise InvalidBoundaryError("artifact bytes do not match GZIP") if lowered.endswith((".tar.gz", ".tgz")): - entries = _read_tar_gz(data, max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio) + scans, extracted = _scan_tar_gz_path( + path, max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, + max_ratio=max_ratio, max_evidence_chars=max_evidence_chars, + ) else: - entries = _read_gzip(data, filename, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio) + scans, extracted = _scan_gzip_path( + filename, path, max_extracted_bytes=max_extracted_bytes, + max_ratio=max_ratio, max_evidence_chars=max_evidence_chars, + ) else: raise InvalidBoundaryError("unsupported log artifact media type") - - extracted = _validate_limits( - entries, len(data), max_entries=max_entries, max_extracted_bytes=max_extracted_bytes, max_ratio=max_ratio, - ) - decoded = [(name, _decode_log(content)) for name, content in entries] - evidence, truncated, redactions = _evidence(decoded, max_evidence_chars) + evidence, truncated, redactions = _render_streamed_evidence(scans, max_evidence_chars) if not evidence: raise InvalidBoundaryError("log artifact produced no usable evidence") - return LogAnalysis(evidence, len(entries), extracted, truncated, redactions) + return LogAnalysis(evidence, len(scans), extracted, truncated, redactions) diff --git a/services/ai-gateway/app/main.py b/services/ai-gateway/app/main.py index 488f7ae..07de716 100644 --- a/services/ai-gateway/app/main.py +++ b/services/ai-gateway/app/main.py @@ -131,6 +131,7 @@ def create_app( runtime_settings.artifact_root, retention_hours=runtime_settings.artifact_retention_hours, max_bytes=runtime_settings.artifact_max_bytes, + max_archive_bytes=runtime_settings.artifact_max_archive_bytes, max_extracted_bytes=runtime_settings.artifact_max_extracted_bytes, max_archive_entries=runtime_settings.artifact_max_archive_entries, max_compression_ratio=runtime_settings.artifact_max_compression_ratio, @@ -447,7 +448,14 @@ async def create_artifact( if classification != "D0": raise InvalidBoundaryError("only D0 artifacts are permitted") media_type = request.headers.get("Content-Type", "").split(";", 1)[0].strip().lower() - record = artifact_store.put(filename, media_type, await request.body()) + length_header = request.headers.get("Content-Length") + try: + content_length = int(length_header) if length_header is not None else None + except ValueError as exc: + raise InvalidBoundaryError("Content-Length must be an integer") from exc + record = await artifact_store.put_stream( + filename, media_type, request.stream(), content_length=content_length, + ) return _envelope(record.payload(), correlation_id) @application.get("/v1/artifacts/{artifactId}", response_model=Envelope, operation_id="getArtifact") diff --git a/services/ai-gateway/scripts/artifact_maintenance.py b/services/ai-gateway/scripts/artifact_maintenance.py index 1e328b0..661fc17 100644 --- a/services/ai-gateway/scripts/artifact_maintenance.py +++ b/services/ai-gateway/scripts/artifact_maintenance.py @@ -28,8 +28,9 @@ def _percent_env(name: str, default: int) -> int: def maintain_once(root: Path) -> dict[str, int | str]: store = ArtifactStore( str(root), retention_hours=int(os.getenv("TECHFLOW_ARTIFACT_RETENTION_HOURS", "24")), - max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(50 * 1024 * 1024))), - max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024))), + max_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_BYTES", str(1024 * 1024 * 1024))), + max_archive_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES", str(10 * 1024 * 1024 * 1024))), + max_extracted_bytes=int(os.getenv("TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES", str(100 * 1024 * 1024 * 1024))), max_archive_entries=int(os.getenv("TECHFLOW_ARTIFACT_MAX_ARCHIVE_ENTRIES", "100")), max_compression_ratio=int(os.getenv("TECHFLOW_ARTIFACT_MAX_COMPRESSION_RATIO", "20")), max_log_evidence_chars=int(os.getenv("TECHFLOW_ARTIFACT_MAX_LOG_EVIDENCE_CHARS", "120000")), diff --git a/services/ai-gateway/scripts/poll_flarum.py b/services/ai-gateway/scripts/poll_flarum.py index f2e48f5..68d75ea 100644 --- a/services/ai-gateway/scripts/poll_flarum.py +++ b/services/ai-gateway/scripts/poll_flarum.py @@ -9,6 +9,7 @@ import os from pathlib import Path import re +import tempfile import time import urllib.parse import urllib.error @@ -16,8 +17,9 @@ from uuid import uuid4 -DEFAULT_ATTACHMENT_MAX_BYTES = 50 * 1024 * 1024 -DEFAULT_ATTACHMENT_TIMEOUT_SECONDS = 120 +DEFAULT_ATTACHMENT_MAX_BYTES = 1024 * 1024 * 1024 +DEFAULT_ARCHIVE_MAX_BYTES = 10 * 1024 * 1024 * 1024 +DEFAULT_ATTACHMENT_TIMEOUT_SECONDS = 7200 DEFAULT_ATTACHMENT_RETRIES = 2 DOWNLOAD_CHUNK_BYTES = 1024 * 1024 TRANSIENT_HTTP_STATUSES = {408, 425, 429, 500, 502, 503, 504} @@ -65,15 +67,19 @@ def _bounded_env_int(name: str, default: int, minimum: int, maximum: int) -> int return value -def _attachment_policy() -> tuple[int, int, int]: +def _attachment_policy() -> tuple[int, int, int, int]: return ( _bounded_env_int( "TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES", DEFAULT_ATTACHMENT_MAX_BYTES, 1024, DEFAULT_ATTACHMENT_MAX_BYTES, ), + _bounded_env_int( + "TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES", DEFAULT_ARCHIVE_MAX_BYTES, + DEFAULT_ATTACHMENT_MAX_BYTES, DEFAULT_ARCHIVE_MAX_BYTES, + ), _bounded_env_int( "TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS", DEFAULT_ATTACHMENT_TIMEOUT_SECONDS, - 5, 300, + 5, DEFAULT_ATTACHMENT_TIMEOUT_SECONDS, ), _bounded_env_int("TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES", DEFAULT_ATTACHMENT_RETRIES, 0, 3), ) @@ -89,7 +95,7 @@ def _attachment_filename(content_disposition: str, path: str) -> str: def _warning(filename: str, reason: str) -> str: safe_name = Path(filename.replace("\\", "/")).name[:80] or "첨부파일" messages = { - "size": f"첨부파일 {safe_name}은 50MB를 초과해 분석하지 않았습니다. 필요한 로그만 압축해 다시 올려 주세요.", + "size": f"첨부파일 {safe_name}이 허용 크기(일반 1GiB, 압축 10GiB)를 초과해 분석하지 않았습니다.", "unsafe": f"첨부파일 {safe_name}은 지원하지 않거나 안전 검사를 통과하지 못해 분석에서 제외했습니다.", "fetch": f"첨부파일 {safe_name}을 가져오지 못했습니다. 잠시 후 다시 첨부해 주세요.", "origin": f"첨부파일 {safe_name}은 Community 외부 주소이므로 분석하지 않았습니다.", @@ -110,26 +116,38 @@ def _normalized_attachment_media_type(filename: str, media_type: str) -> str: return mimetypes.guess_type(filename)[0] or media_type -def _read_attachment(request: urllib.request.Request, *, max_bytes: int, timeout: int, retries: int) -> tuple[bytes, str, str]: +def _is_archive(filename: str, media_type: str) -> bool: + normalized = _normalized_attachment_media_type(filename, media_type) + return normalized in {"application/zip", "application/gzip", "application/x-gzip"} + + +def _read_attachment( + request: urllib.request.Request, destination: Path, *, filename: str, + max_bytes: int, max_archive_bytes: int, timeout: int, retries: int, +) -> tuple[int, str, str, str]: last_error: Exception | None = None for attempt in range(retries + 1): + destination.unlink(missing_ok=True) try: with urllib.request.urlopen(request, timeout=timeout) as response: + media_type = response.headers.get_content_type() + disposition = response.headers.get("Content-Disposition") or "" + resolved_name = _attachment_filename(disposition, urllib.parse.urlparse(request.full_url).path) or filename + limit = max_archive_bytes if _is_archive(resolved_name, media_type) else max_bytes content_length = response.headers.get("Content-Length") - if content_length and int(content_length) > max_bytes: + if content_length and int(content_length) > limit: raise ValueError("size") - content = bytearray() - while True: - chunk = response.read(min(DOWNLOAD_CHUNK_BYTES, max_bytes + 1 - len(content))) - if not chunk: - break - content.extend(chunk) - if len(content) > max_bytes: - raise ValueError("size") - return ( - bytes(content), response.headers.get_content_type(), - response.headers.get("Content-Disposition") or "", - ) + total = 0 + with destination.open("xb") as target: + while True: + chunk = response.read(DOWNLOAD_CHUNK_BYTES) + if not chunk: + break + total += len(chunk) + if total > limit: + raise ValueError("size") + target.write(chunk) + return total, media_type, disposition, resolved_name except urllib.error.HTTPError as exc: last_error = exc if exc.code not in TRANSIENT_HTTP_STATUSES or attempt >= retries: @@ -144,6 +162,25 @@ def _read_attachment(request: urllib.request.Request, *, max_bytes: int, timeout raise last_error +def _file_chunks(path: Path): + with path.open("rb") as source: + while chunk := source.read(DOWNLOAD_CHUNK_BYTES): + yield chunk + + +def _upload_artifact( + gateway_url: str, path: Path, filename: str, media_type: str, correlation: str, timeout: int, +) -> str: + upload = urllib.request.Request( + gateway_url.rstrip("/") + "/v1/artifacts", data=_file_chunks(path), method="POST", + headers={"Content-Type": media_type, "Content-Length": str(path.stat().st_size), + "X-Artifact-Filename": filename, "X-Artifact-Classification": "D0", + "X-Correlation-Id": correlation}, + ) + with urllib.request.urlopen(upload, timeout=timeout) as response: + return str(json.loads(response.read().decode("utf-8"))["data"]["artifactId"]) + + def normalize(payload: dict, base_url: str) -> list[dict]: included = {(item["type"], item["id"]): item for item in payload.get("included") or []} events = [] @@ -180,7 +217,9 @@ def upload_artifacts( ) -> list[str]: ids: list[str] = [] warnings: list[str] = list(event.get("artifactWarnings") or []) - max_bytes, timeout, retries = _attachment_policy() + max_bytes, max_archive_bytes, timeout, retries = _attachment_policy() + temp_root = Path(os.getenv("TECHFLOW_COMMUNITY_ATTACHMENT_TMP_DIR", "/var/lib/techflow-community-poller/tmp")) + temp_root.mkdir(parents=True, exist_ok=True, mode=0o700) for raw_url in event.pop("attachmentUrls", []): public_attachment_url = urllib.parse.urljoin(public_url + "/", raw_url) parsed = urllib.parse.urlparse(public_attachment_url) @@ -192,35 +231,36 @@ def upload_artifacts( internal_url = f"{internal_url}?{parsed.query}" req = urllib.request.Request(internal_url, headers={"Authorization": f"Token {token}"}) filename = Path(parsed.path).name or "community-artifact" + with tempfile.NamedTemporaryFile(prefix="attachment-", suffix=".part", dir=temp_root, delete=False) as holder: + temporary = Path(holder.name) + temporary.unlink(missing_ok=True) try: - content, media_type, disposition = _read_attachment( - req, max_bytes=max_bytes, timeout=timeout, retries=retries, - ) - filename = _attachment_filename(disposition, parsed.path) - except ValueError as exc: - if str(exc) == "size": - warnings.append(_warning(filename, "size")) + try: + _, media_type, disposition, filename = _read_attachment( + req, temporary, filename=filename, max_bytes=max_bytes, + max_archive_bytes=max_archive_bytes, timeout=timeout, retries=retries, + ) + filename = _attachment_filename(disposition, parsed.path) + except ValueError as exc: + if str(exc) == "size": + warnings.append(_warning(filename, "size")) + continue + raise + except (urllib.error.HTTPError, urllib.error.URLError, TimeoutError): + warnings.append(_warning(filename, "fetch")) continue - raise - except (urllib.error.HTTPError, urllib.error.URLError, TimeoutError): - warnings.append(_warning(filename, "fetch")) - continue - media_type = _normalized_attachment_media_type(filename, media_type) - upload = urllib.request.Request( - gateway_url.rstrip("/") + "/v1/artifacts", data=content, method="POST", - headers={"Content-Type": media_type, "X-Artifact-Filename": filename, - "X-Artifact-Classification": "D0", "X-Correlation-Id": correlation}, - ) - try: - with urllib.request.urlopen(upload, timeout=timeout) as response: - ids.append(str(json.loads(response.read().decode("utf-8"))["data"]["artifactId"])) - except urllib.error.HTTPError as exc: - if exc.code in TRANSIENT_HTTP_STATUSES: + media_type = _normalized_attachment_media_type(filename, media_type) + try: + ids.append(_upload_artifact(gateway_url, temporary, filename, media_type, correlation, timeout)) + except urllib.error.HTTPError as exc: + if exc.code in TRANSIENT_HTTP_STATUSES: + warnings.append(_warning(filename, "fetch")) + else: + warnings.append(_warning(filename, "unsafe")) + except (urllib.error.URLError, TimeoutError): warnings.append(_warning(filename, "fetch")) - else: - warnings.append(_warning(filename, "unsafe")) - except (urllib.error.URLError, TimeoutError): - warnings.append(_warning(filename, "fetch")) + finally: + temporary.unlink(missing_ok=True) event["artifactWarnings"] = warnings return ids diff --git a/services/ai-gateway/scripts/verify_large_upload_boundaries.py b/services/ai-gateway/scripts/verify_large_upload_boundaries.py new file mode 100644 index 0000000..3b18a28 --- /dev/null +++ b/services/ai-gateway/scripts/verify_large_upload_boundaries.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +"""Generate and upload exact Issue #72 boundary artifacts without loading them into memory.""" + +from __future__ import annotations + +import argparse +import hashlib +import http.client +import json +from pathlib import Path +import time +from urllib.parse import urlsplit +import uuid +import zipfile + + +MIB = 1024 * 1024 +GIB = 1024 * MIB +REGULAR_LIMIT = 1 * GIB +ARCHIVE_LIMIT = 10 * GIB +CHUNK_BYTES = 4 * MIB +LOG_PREFIX = b"2026-08-16T00:00:00Z INFO TechFlow boundary validation completed normally " +LOG_LINE = LOG_PREFIX + (b"x" * (4095 - len(LOG_PREFIX))) + b"\n" + + +def _write_log_bytes(target, size: int, digest=None) -> None: + block = (LOG_LINE * ((CHUNK_BYTES // len(LOG_LINE)) + 1))[:CHUNK_BYTES] + remaining = size + while remaining: + chunk = block[: min(len(block), remaining)] + target.write(chunk) + if digest is not None: + digest.update(chunk) + remaining -= len(chunk) + + +def create_exact_log(path: Path) -> dict[str, object]: + digest = hashlib.sha256() + with path.open("wb") as target: + _write_log_bytes(target, REGULAR_LIMIT, digest) + return {"path": str(path), "sizeBytes": path.stat().st_size, "sha256": digest.hexdigest()} + + +def create_exact_zip(path: Path) -> dict[str, object]: + # Leave room for the central directory and then pad the EOCD comment to the exact 10 GiB boundary. + member_size = ARCHIVE_LIMIT - 65_023 + info = zipfile.ZipInfo("support.log") + info.compress_type = zipfile.ZIP_STORED + info.file_size = member_size + with zipfile.ZipFile(path, "w", allowZip64=True) as archive: + with archive.open(info, "w", force_zip64=True) as target: + _write_log_bytes(target, member_size) + base_size = path.stat().st_size + padding = ARCHIVE_LIMIT - base_size + if not 0 <= padding <= 65_535: + raise RuntimeError(f"ZIP boundary padding is invalid: base={base_size}, padding={padding}") + with zipfile.ZipFile(path, "a", allowZip64=True) as archive: + archive.comment = b"T" * padding + if path.stat().st_size != ARCHIVE_LIMIT: + raise RuntimeError(f"ZIP boundary size mismatch: {path.stat().st_size}") + with zipfile.ZipFile(path, "r", allowZip64=True) as archive: + bad = archive.testzip() + if bad is not None: + raise RuntimeError(f"ZIP integrity failure: {bad}") + extracted = archive.getinfo("support.log").file_size + return {"path": str(path), "sizeBytes": path.stat().st_size, "entryBytes": extracted} + + +def _connection(base_url: str, timeout: int): + parsed = urlsplit(base_url) + if parsed.scheme not in {"http", "https"} or not parsed.hostname: + raise ValueError("base URL must be http(s)") + klass = http.client.HTTPSConnection if parsed.scheme == "https" else http.client.HTTPConnection + port = parsed.port or (443 if parsed.scheme == "https" else 80) + return klass(parsed.hostname, port, timeout=timeout), parsed.path.rstrip("/") + + +def upload(base_url: str, path: Path, filename: str, media_type: str, timeout: int) -> dict[str, object]: + connection, prefix = _connection(base_url, timeout) + started = time.monotonic() + connection.putrequest("POST", f"{prefix}/v1/artifacts") + connection.putheader("Content-Type", media_type) + connection.putheader("Content-Length", str(path.stat().st_size)) + connection.putheader("X-Artifact-Filename", filename) + connection.putheader("X-Artifact-Classification", "D0") + connection.putheader("X-Correlation-Id", f"issue72-upload-{uuid.uuid4().hex}") + connection.endheaders() + with path.open("rb") as source: + while chunk := source.read(CHUNK_BYTES): + connection.send(chunk) + response = connection.getresponse() + payload = response.read().decode("utf-8") + elapsed = round(time.monotonic() - started, 3) + if response.status != 201: + raise RuntimeError(f"upload failed: status={response.status}, payload={payload[:500]}") + artifact_id = json.loads(payload)["data"]["artifactId"] + connection.close() + return {"status": response.status, "artifactId": artifact_id, "elapsedSeconds": elapsed} + + +def preflight_rejection(base_url: str, filename: str, media_type: str, size: int, timeout: int) -> dict[str, object]: + connection, prefix = _connection(base_url, timeout) + connection.putrequest("POST", f"{prefix}/v1/artifacts") + connection.putheader("Content-Type", media_type) + connection.putheader("Content-Length", str(size)) + connection.putheader("X-Artifact-Filename", filename) + connection.putheader("X-Artifact-Classification", "D0") + connection.putheader("X-Correlation-Id", f"issue72-preflight-{uuid.uuid4().hex}") + connection.endheaders() + response = connection.getresponse() + payload = response.read().decode("utf-8") + connection.close() + if response.status != 400: + raise RuntimeError(f"oversize preflight was not rejected: status={response.status}, payload={payload[:500]}") + return {"status": response.status, "declaredBytes": size} + + +def delete(base_url: str, artifact_id: str, timeout: int) -> dict[str, object]: + connection, prefix = _connection(base_url, timeout) + headers = { + "Idempotency-Key": f"issue72-delete-{uuid.uuid4().hex}", + "X-Correlation-Id": f"issue72-delete-{uuid.uuid4().hex}", + } + connection.request("DELETE", f"{prefix}/v1/artifacts/{artifact_id}", headers=headers) + response = connection.getresponse() + payload = response.read().decode("utf-8") + connection.close() + if response.status != 200: + raise RuntimeError(f"delete failed: status={response.status}, payload={payload[:500]}") + return {"status": response.status, "artifactId": artifact_id} + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--base-url", required=True) + parser.add_argument("--workdir", type=Path, required=True) + parser.add_argument("--timeout", type=int, default=7200) + parser.add_argument("--keep-files", action="store_true") + args = parser.parse_args() + args.workdir.mkdir(parents=True, exist_ok=True) + log_path = args.workdir / "issue72-exact-1g.log" + zip_path = args.workdir / "issue72-exact-10g.zip" + results: dict[str, object] = {"limits": {"regularBytes": REGULAR_LIMIT, "archiveBytes": ARCHIVE_LIMIT}} + artifact_ids: list[str] = [] + try: + results["generatedRegular"] = create_exact_log(log_path) + results["generatedArchive"] = create_exact_zip(zip_path) + regular = upload(args.base_url, log_path, log_path.name, "text/plain", args.timeout) + artifact_ids.append(str(regular["artifactId"])) + results["regularBoundary"] = regular + archive = upload(args.base_url, zip_path, zip_path.name, "application/zip", args.timeout) + artifact_ids.append(str(archive["artifactId"])) + results["archiveBoundary"] = archive + results["regularOverBoundary"] = preflight_rejection( + args.base_url, "issue72-over-1g.log", "text/plain", REGULAR_LIMIT + 1, args.timeout + ) + results["archiveOverBoundary"] = preflight_rejection( + args.base_url, "issue72-over-10g.zip", "application/zip", ARCHIVE_LIMIT + 1, args.timeout + ) + finally: + results["cleanup"] = [delete(args.base_url, artifact_id, args.timeout) for artifact_id in artifact_ids] + if not args.keep_files: + log_path.unlink(missing_ok=True) + zip_path.unlink(missing_ok=True) + results["result"] = "PASS" + print(json.dumps(results, ensure_ascii=False, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/services/ai-gateway/tests/test_assist.py b/services/ai-gateway/tests/test_assist.py index a51c7c2..723f6c1 100644 --- a/services/ai-gateway/tests/test_assist.py +++ b/services/ai-gateway/tests/test_assist.py @@ -1,5 +1,6 @@ from __future__ import annotations +import asyncio import base64 import gzip from io import BytesIO @@ -196,6 +197,37 @@ def test_octet_stream_log_is_content_validated_and_normalized(self) -> None: self.assertEqual("text/plain", record.media_type) self.assertEqual("LOG", record.kind) + def test_regular_and_archive_upload_boundaries_are_distinct(self) -> None: + archive_buffer = BytesIO() + with zipfile.ZipFile(archive_buffer, "w", zipfile.ZIP_STORED) as archive: + archive.writestr("service.log", "INFO ready\nERROR failed\n" * 8) + self.assertGreater(len(archive_buffer.getvalue()), 64) + with tempfile.TemporaryDirectory() as root: + store = ArtifactStore( + root, retention_hours=1, max_bytes=64, max_archive_bytes=4096, + max_extracted_bytes=8192, max_compression_ratio=100, + ) + with self.assertRaises(InvalidBoundaryError): + store.put("service.log", "text/plain", b"A" * 64 + b"\n") + record = store.put("support.zip", "application/zip", archive_buffer.getvalue()) + self.assertEqual("application/zip", record.media_type) + + def test_stream_content_length_is_rejected_before_body_consumption(self) -> None: + consumed = False + + async def chunks(): + nonlocal consumed + consumed = True + yield b"INFO ready\n" + + with tempfile.TemporaryDirectory() as root: + store = ArtifactStore(root, retention_hours=1, max_bytes=64, max_archive_bytes=256) + with self.assertRaises(InvalidBoundaryError): + asyncio.run(store.put_stream( + "service.log", "text/plain", chunks(), content_length=65, + )) + self.assertFalse(consumed) + class _Responses: def __init__(self) -> None: diff --git a/services/ai-gateway/tests/test_community_poller.py b/services/ai-gateway/tests/test_community_poller.py index 16a34c3..143d6b4 100644 --- a/services/ai-gateway/tests/test_community_poller.py +++ b/services/ai-gateway/tests/test_community_poller.py @@ -5,6 +5,7 @@ from io import BytesIO import os from pathlib import Path +import tempfile import unittest from unittest.mock import patch @@ -62,42 +63,53 @@ def test_html_parser_does_not_execute_or_expand_markup(self) -> None: def test_attachment_policy_accepts_exact_boundary_and_rejects_one_byte_over(self) -> None: exact = b"A" * 2048 - with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact)): - content, media_type, _ = poll_flarum._read_attachment( - poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.log"), - max_bytes=2048, timeout=5, retries=0, - ) - self.assertEqual(exact, content) - self.assertEqual("text/plain", media_type) - - with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact + b"!")): - with self.assertRaisesRegex(ValueError, "size"): - poll_flarum._read_attachment( + with tempfile.TemporaryDirectory() as directory: + destination = Path(directory) / "a.log" + with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact)): + size, media_type, _, _ = poll_flarum._read_attachment( poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.log"), - max_bytes=2048, timeout=5, retries=0, + destination, filename="a.log", max_bytes=2048, max_archive_bytes=4096, + timeout=5, retries=0, ) + self.assertEqual(2048, size) + self.assertEqual(exact, destination.read_bytes()) + self.assertEqual("text/plain", media_type) + + with patch.object(poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(exact + b"!")): + with self.assertRaisesRegex(ValueError, "size"): + poll_flarum._read_attachment( + poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.log"), + destination, filename="a.log", max_bytes=2048, max_archive_bytes=4096, + timeout=5, retries=0, + ) def test_content_length_is_rejected_before_body_download(self) -> None: - with patch.object( - poll_flarum.urllib.request, "urlopen", return_value=FakeResponse(b"", content_length=2049), + with tempfile.TemporaryDirectory() as directory, patch.object( + poll_flarum.urllib.request, "urlopen", return_value=FakeResponse( + b"", content_type="application/zip", content_length=4097, + ), ): with self.assertRaisesRegex(ValueError, "size"): poll_flarum._read_attachment( poll_flarum.urllib.request.Request("https://community.ablecloud.io/a.zip"), - max_bytes=2048, timeout=5, retries=0, + Path(directory) / "a.zip", filename="a.zip", max_bytes=2048, + max_archive_bytes=4096, timeout=5, retries=0, ) def test_attachment_policy_environment_is_bounded(self) -> None: - with patch.dict(os.environ, {"TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES": "52428801"}, clear=False): + with patch.dict(os.environ, {"TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES": str(1024 * 1024 * 1024 + 1)}, clear=False): with self.assertRaises(RuntimeError): poll_flarum._attachment_policy() def test_external_attachment_is_skipped_with_understandable_warning(self) -> None: event = {"attachmentUrls": ["https://example.invalid/secret.log"]} - ids = poll_flarum.upload_artifacts( - event, "http://gateway:8090", "http://172.16.0.234", - "https://community.ablecloud.io", "runtime-token", "community-test-0001", - ) + with tempfile.TemporaryDirectory() as directory, patch.dict( + os.environ, {"TECHFLOW_COMMUNITY_ATTACHMENT_TMP_DIR": directory}, clear=False, + ): + ids = poll_flarum.upload_artifacts( + event, "http://gateway:8090", "http://172.16.0.234", + "https://community.ablecloud.io", "runtime-token", "community-test-0001", + ) self.assertEqual([], ids) self.assertIn("Community 외부 주소", event["artifactWarnings"][0]) diff --git a/services/ai-gateway/tests/test_config.py b/services/ai-gateway/tests/test_config.py index b1d25f9..9f89f88 100644 --- a/services/ai-gateway/tests/test_config.py +++ b/services/ai-gateway/tests/test_config.py @@ -14,18 +14,26 @@ def test_safe_defaults(self) -> None: self.assertEqual("memory", settings.store_backend) self.assertEqual("mock", settings.provider_mode) self.assertEqual(128, settings.embedding_batch_size) - self.assertEqual(50 * 1024 * 1024, settings.artifact_max_bytes) - self.assertEqual(100 * 1024 * 1024, settings.artifact_max_extracted_bytes) + self.assertEqual(1024 * 1024 * 1024, settings.artifact_max_bytes) + self.assertEqual(10 * 1024 * 1024 * 1024, settings.artifact_max_archive_bytes) + self.assertEqual(100 * 1024 * 1024 * 1024, settings.artifact_max_extracted_bytes) def test_large_upload_boundary_is_bounded(self) -> None: Settings( - artifact_max_bytes=50 * 1024 * 1024, - artifact_max_extracted_bytes=100 * 1024 * 1024, + artifact_max_bytes=1024 * 1024 * 1024, + artifact_max_archive_bytes=10 * 1024 * 1024 * 1024, + artifact_max_extracted_bytes=100 * 1024 * 1024 * 1024, ).validate() with self.assertRaises(ConfigurationError): Settings( - artifact_max_bytes=50 * 1024 * 1024 + 1, - artifact_max_extracted_bytes=100 * 1024 * 1024, + artifact_max_bytes=1024 * 1024 * 1024 + 1, + artifact_max_archive_bytes=10 * 1024 * 1024 * 1024, + artifact_max_extracted_bytes=100 * 1024 * 1024 * 1024, + ).validate() + with self.assertRaises(ConfigurationError): + Settings( + artifact_max_archive_bytes=10 * 1024 * 1024 * 1024 + 1, + artifact_max_extracted_bytes=100 * 1024 * 1024 * 1024, ).validate() def test_postgres_requires_dsn(self) -> None: diff --git a/services/ai-gateway/tests/test_container_contract.py b/services/ai-gateway/tests/test_container_contract.py index 75fc85a..9e663f3 100644 --- a/services/ai-gateway/tests/test_container_contract.py +++ b/services/ai-gateway/tests/test_container_contract.py @@ -9,6 +9,8 @@ REPO = ROOT.parents[1] DOCKERFILE = (ROOT / "Dockerfile").read_text(encoding="utf-8") COMPOSE = (REPO / "deploy" / "compose" / "ai-gateway" / "compose.yml").read_text(encoding="utf-8") +MAIN = (ROOT / "app" / "main.py").read_text(encoding="utf-8") +ARTIFACTS = (ROOT / "app" / "artifacts.py").read_text(encoding="utf-8") class ContainerContractTest(unittest.TestCase): @@ -62,6 +64,13 @@ def test_tree_sitter_parsers_are_prefetched_in_the_image(self) -> None: self.assertIn("scripts/prefetch_parsers.py", DOCKERFILE) self.assertIn("TECHFLOW_TREE_SITTER_CACHE", DOCKERFILE) + def test_large_artifacts_use_streaming_and_separate_archive_boundary(self) -> None: + self.assertIn("request.stream()", MAIN) + self.assertNotIn("await request.body()", MAIN) + self.assertIn("async def put_stream", ARTIFACTS) + self.assertIn("TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES", COMPOSE) + self.assertIn("TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES", COMPOSE) + if __name__ == "__main__": unittest.main() From 21ae59d01dd1fe7eddffe895f2a59aad8d6992cb Mon Sep 17 00:00:00 2001 From: DH Park Date: Sun, 16 Aug 2026 09:43:31 +0900 Subject: [PATCH 09/11] =?UTF-8?q?fix:=20=EB=8C=80=EC=9A=A9=EB=9F=89=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20=EA=B8=B0=EB=B3=B8=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=EC=99=80=20=EC=84=A4=EC=A0=95=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/compose/ai-gateway/.env.example | 1 - services/ai-gateway/scripts/poll_flarum.py | 4 +++- services/ai-gateway/tests/test_container_contract.py | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/deploy/compose/ai-gateway/.env.example b/deploy/compose/ai-gateway/.env.example index 225e9a9..9b89967 100644 --- a/deploy/compose/ai-gateway/.env.example +++ b/deploy/compose/ai-gateway/.env.example @@ -17,7 +17,6 @@ TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES=107374182400 TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES=1073741824 TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES=10737418240 TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS=7200 -TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS=120 TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES=2 TECHFLOW_ARTIFACT_MAINTENANCE_INTERVAL_SECONDS=900 TECHFLOW_ARTIFACT_DISK_WARN_PERCENT=70 diff --git a/services/ai-gateway/scripts/poll_flarum.py b/services/ai-gateway/scripts/poll_flarum.py index 68d75ea..e0f34b7 100644 --- a/services/ai-gateway/scripts/poll_flarum.py +++ b/services/ai-gateway/scripts/poll_flarum.py @@ -218,7 +218,9 @@ def upload_artifacts( ids: list[str] = [] warnings: list[str] = list(event.get("artifactWarnings") or []) max_bytes, max_archive_bytes, timeout, retries = _attachment_policy() - temp_root = Path(os.getenv("TECHFLOW_COMMUNITY_ATTACHMENT_TMP_DIR", "/var/lib/techflow-community-poller/tmp")) + temp_root = Path(os.getenv( + "TECHFLOW_COMMUNITY_ATTACHMENT_TMP_DIR", str(Path(tempfile.gettempdir()) / "techflow-community-poller") + )) temp_root.mkdir(parents=True, exist_ok=True, mode=0o700) for raw_url in event.pop("attachmentUrls", []): public_attachment_url = urllib.parse.urljoin(public_url + "/", raw_url) diff --git a/services/ai-gateway/tests/test_container_contract.py b/services/ai-gateway/tests/test_container_contract.py index 9e663f3..f98dff7 100644 --- a/services/ai-gateway/tests/test_container_contract.py +++ b/services/ai-gateway/tests/test_container_contract.py @@ -65,8 +65,11 @@ def test_tree_sitter_parsers_are_prefetched_in_the_image(self) -> None: self.assertIn("TECHFLOW_TREE_SITTER_CACHE", DOCKERFILE) def test_large_artifacts_use_streaming_and_separate_archive_boundary(self) -> None: - self.assertIn("request.stream()", MAIN) - self.assertNotIn("await request.body()", MAIN) + start = MAIN.index('@application.post("/v1/artifacts"') + end = MAIN.index('@application.get("/v1/artifacts', start) + artifact_route = MAIN[start:end] + self.assertIn("request.stream()", artifact_route) + self.assertNotIn("await request.body()", artifact_route) self.assertIn("async def put_stream", ARTIFACTS) self.assertIn("TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES", COMPOSE) self.assertIn("TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES", COMPOSE) From 925f6cc0616e09fd1639db5828700e7dd4490e9a Mon Sep 17 00:00:00 2001 From: DH Park Date: Sun, 16 Aug 2026 10:31:26 +0900 Subject: [PATCH 10/11] =?UTF-8?q?feat:=201GB=20=EC=9D=BC=EB=B0=98=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EA=B3=BC=2010GB=20=EC=95=95=EC=B6=95=20?= =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EA=B2=80=EC=A6=9D=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/set_large_upload_limits.py | 53 +++++++ deploy/flarum/issue72-large-upload-policy.sh | 6 + .../large-upload-production-validation.json | 70 +++++---- ...ue-72-community-large-upload-validation.md | 139 +++++++++--------- docs/runbooks/community-large-uploads.md | 115 +++++++++------ ...sue-72-large-upload-artifact-manifest.json | 52 +++---- ...low-issue-72-large-upload-presentation.pdf | Bin 200231 -> 201443 bytes .../techflow-issue-72-large-upload-report.pdf | Bin 101252 -> 102252 bytes .../techflow-issue-72-large-upload.pptx | Bin 28643 -> 28607 bytes services/ai-gateway/app/log_artifacts.py | 42 +++++- .../scripts/verify_large_upload_boundaries.py | 14 +- .../artifacts/issue-72/build_presentation.mjs | 28 ++-- tools/artifacts/issue-72/build_report.py | 60 ++++---- .../artifacts/issue-72/validate_artifacts.py | 12 +- 14 files changed, 372 insertions(+), 219 deletions(-) create mode 100644 deploy/compose/ai-gateway/scripts/set_large_upload_limits.py diff --git a/deploy/compose/ai-gateway/scripts/set_large_upload_limits.py b/deploy/compose/ai-gateway/scripts/set_large_upload_limits.py new file mode 100644 index 0000000..7f9173a --- /dev/null +++ b/deploy/compose/ai-gateway/scripts/set_large_upload_limits.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +"""Idempotently align an existing runtime .env with the Issue #72 upload limits.""" + +from __future__ import annotations + +import argparse +import os +from pathlib import Path + + +VALUES = { + "TECHFLOW_RAG_RELEASE": "issue-72-large-uploads-1g10g", + "TECHFLOW_ARTIFACT_MAX_BYTES": "1073741824", + "TECHFLOW_ARTIFACT_MAX_ARCHIVE_BYTES": "10737418240", + "TECHFLOW_ARTIFACT_MAX_EXTRACTED_BYTES": "107374182400", + "TECHFLOW_COMMUNITY_ATTACHMENT_MAX_BYTES": "1073741824", + "TECHFLOW_COMMUNITY_ARCHIVE_MAX_BYTES": "10737418240", + "TECHFLOW_COMMUNITY_ATTACHMENT_TIMEOUT_SECONDS": "7200", + "TECHFLOW_COMMUNITY_ATTACHMENT_RETRIES": "2", +} + + +def update(path: Path) -> None: + lines = path.read_text(encoding="utf-8").splitlines() + output: list[str] = [] + seen: set[str] = set() + for line in lines: + key = line.split("=", 1)[0].strip() if "=" in line and not line.lstrip().startswith("#") else "" + if key in VALUES: + output.append(f"{key}={VALUES[key]}") + seen.add(key) + else: + output.append(line) + output.extend(f"{key}={value}" for key, value in VALUES.items() if key not in seen) + temporary = path.with_name(path.name + ".issue72.tmp") + temporary.write_text("\n".join(output) + "\n", encoding="utf-8") + os.chmod(temporary, 0o600) + temporary.replace(path) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("env_file", type=Path) + args = parser.parse_args() + if not args.env_file.is_file(): + raise SystemExit("runtime env file does not exist") + update(args.env_file) + print("issue72_large_upload_limits=updated") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/deploy/flarum/issue72-large-upload-policy.sh b/deploy/flarum/issue72-large-upload-policy.sh index fa1cdfa..6712a00 100755 --- a/deploy/flarum/issue72-large-upload-policy.sh +++ b/deploy/flarum/issue72-large-upload-policy.sh @@ -21,6 +21,12 @@ nginx_site_file() { fi local candidate candidate=$(grep -lR 'server_name[[:space:]].*community\.ablecloud\.io' /etc/nginx/sites-enabled 2>/dev/null | head -n1) + if [[ -z $candidate ]]; then + mapfile -t candidates < <(find /etc/nginx/sites-enabled -maxdepth 1 \( -type f -o -type l \) -print) + if [[ ${#candidates[@]} -eq 1 ]]; then + candidate=${candidates[0]} + fi + fi [[ -n $candidate ]] || { echo "Community nginx site file not found" >&2; exit 2; } readlink -f "$candidate" } diff --git a/docs/evidence/issue-72/large-upload-production-validation.json b/docs/evidence/issue-72/large-upload-production-validation.json index 7217826..3830644 100644 --- a/docs/evidence/issue-72/large-upload-production-validation.json +++ b/docs/evidence/issue-72/large-upload-production-validation.json @@ -1,28 +1,36 @@ { - "schemaVersion": 1, + "schemaVersion": 2, "issue": 72, - "validatedAt": "2026-08-15T03:02:00+09:00", + "validatedAt": "2026-08-16T10:23:12+09:00", + "units": { + "advertised": "GB", + "enforced": "GiB", + "regularBoundaryBytes": 1073741824, + "archiveBoundaryBytes": 10737418240 + }, "environments": { "flarum": { "host": "172.16.0.234", "flarum": "1.8.18", "fofUpload": "1.8.5", "rootSizeGiB": 1006, - "rootFreeGiB": 955 + "rootFreeGiB": 955, + "policyVerify": "passed" }, "techflow": { "host": "172.16.0.231", - "release": "issue-72-large-uploads", - "rootSizeGiB": 1005, - "rootFreeGiB": 917 + "release": "issue-72-large-uploads-1g10g", + "gatewayHealth": "healthy", + "rootFreeBytes": 916826116096 } }, "policy": { - "fileMaxBytes": 52428800, - "extractedMaxBytes": 104857600, + "regularMaxBytes": 1073741824, + "archiveMaxBytes": 10737418240, + "extractedMaxBytes": 107374182400, "archiveEntriesMax": 100, "compressionRatioMax": 20, - "downloadTimeoutSeconds": 120, + "downloadTimeoutSeconds": 7200, "downloadRetries": 2, "retentionHours": 24, "maintenanceIntervalSeconds": 900, @@ -30,15 +38,23 @@ "diskCriticalPercent": 85 }, "tests": { - "runtimeRegression": {"total": 259, "passed": 259}, + "runtimeRegression": {"total": 263, "passed": 263}, "flarumBoundary": [ - {"case": "50 MiB", "status": 200, "result": "PASS"}, - {"case": "50 MiB + 1 byte", "status": 422, "result": "PASS"} + {"case": "regular exact 1 GiB", "bytes": 1073741824, "status": 200, "elapsedSeconds": 16, "cleanupStatus": 204, "result": "PASS"}, + {"case": "regular 1 GiB + 1 byte", "bytes": 1073741825, "status": 422, "residualRecords": 0, "elapsedSeconds": 12, "result": "PASS"}, + {"case": "ZIP exact 10 GiB", "bytes": 10737418240, "status": 200, "elapsedSeconds": 410, "cleanupStatus": 204, "result": "PASS"}, + {"case": "ZIP 10 GiB + 1 byte", "bytes": 10737418241, "status": 413, "residualRecords": 0, "elapsedSeconds": 227, "result": "PASS"} ], "gatewayBoundary": [ - {"case": "50 MiB", "status": 201, "result": "PASS"}, - {"case": "50 MiB + 1 byte", "status": 400, "result": "PASS"} + {"case": "regular exact 1 GiB", "bytes": 1073741824, "status": 201, "elapsedSeconds": 27.751, "result": "PASS"}, + {"case": "regular 1 GiB + 1 byte declared", "bytes": 1073741825, "status": 400, "result": "PASS"}, + {"case": "ZIP exact 10 GiB", "bytes": 10737418240, "status": 201, "elapsedSeconds": 294.814, "result": "PASS"}, + {"case": "ZIP 10 GiB + 1 byte declared", "bytes": 10737418241, "status": 400, "result": "PASS"} ], + "memory": { + "gatewayVmHwmKiB": 61732, + "gatewayVmHwmMiB": 60.3 + }, "security": [ {"case": "path traversal", "status": 400, "result": "PASS"}, {"case": "nested archive", "status": 400, "result": "PASS"}, @@ -46,29 +62,29 @@ {"case": "executable member", "status": 400, "result": "PASS"}, {"case": "image MIME mismatch", "status": 400, "result": "PASS"} ], - "communityE2E": { - "temporaryDiscussionId": 172, - "formats": ["plain log", "ZIP", "GZIP", "TAR.GZ"], - "artifactsAdded": 4, - "answerPublished": true, - "testDiscussionPermanentlyDeleted": true, - "testUploadsDeleted": 33, - "residualDatabaseRows": 0 + "cleanup": { + "flarumUploadRows": 0, + "flarumUploadFiles": 0, + "gatewayArtifactsDeleted": 2, + "testContainersDeleted": 6, + "testVolumesDeleted": 7, + "temporaryFilesDeleted": true }, "artifactMaintenance": { - "expiredRemovedOnFirstRun": 28, "level": "ok", - "diskUsedPercent": 5 + "diskUsedPercent": 11, + "freeBytes": 916826116096 }, "protectedService": { "service": "github-chat-v1", "state": "frozen", - "guard": "passed" + "guard": "passed", + "containerIdsUnchanged": true } }, "rollback": { - "flarumBackup": "/var/backups/techflow-flarum/issue72-20260814T174252Z", - "techflowBackup": "/home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z", + "flarumBackup": "/var/backups/techflow-flarum/issue72-20260816T010617Z", + "techflowBackup": "/home/ablecloud/techflow-ai-gateway/backups/issue72-1g10g-predeploy-20260816T010000Z", "stagingRollbackRehearsed": true, "databaseMigration": false } diff --git a/docs/reports/issue-72-community-large-upload-validation.md b/docs/reports/issue-72-community-large-upload-validation.md index 1170c5e..eb3b5cf 100644 --- a/docs/reports/issue-72-community-large-upload-validation.md +++ b/docs/reports/issue-72-community-large-upload-validation.md @@ -2,99 +2,102 @@ ## 결론 -Issue #72의 구현과 운영 적용을 완료했다. Community는 이미지, 일반 로그, ZIP, GZIP, TAR.GZ를 파일당 50 MiB까지 받으며, TechFlow는 같은 상한으로 다운로드한 뒤 압축 해제 100 MiB, 100개 항목, 20배 압축비 안에서만 분석한다. +Issue #72의 대용량 첨부 정책을 일반 파일 1 GiB 이하, 지원 압축 파일 10 GiB 이하로 확대하고 운영 Flarum과 TechFlow AI Gateway에 적용했다. 정확한 경계 크기의 실파일을 사용한 운영 시험에서 일반 파일 1 GiB와 ZIP 10 GiB는 수용됐고, 각각 1바이트 초과 파일은 거부됐다. -운영 시험에서 50 MiB는 Flarum HTTP 200과 Gateway HTTP 201로 통과했고, 50 MiB+1바이트는 각각 422와 400으로 거부됐다. 실제 임시 Discussion #172에 네 종류 로그를 붙인 E2E에서 Artifact 4개가 수집되고 AI 답변이 자동 게시됐다. 시험 글과 업로드는 모두 영구 삭제했다. +대용량 파일은 Poller와 Gateway가 디스크 기반으로 스트리밍하며, AI에는 원본 전체가 아니라 업로드 시 생성한 비밀정보 제거·요약 근거만 전달한다. 10 GiB 압축파일을 실제로 Gateway에서 분석했을 때 프로세스 최대 상주 메모리는 약 60.3 MiB였다. 시험 첨부, Artifact, 컨테이너, 볼륨과 임시 파일은 모두 삭제했고 운영 DB 잔존은 0건이다. -## 범위와 결과 +## 완료 범위 -| 완료 조건 | 결과 | 증적 | -|---|---|---| -| 현재값/목표값 매트릭스 | 완료 | 본 문서와 운영 Runbook | -| 이미지/텍스트/ZIP/GZIP/TAR.GZ E2E | 완료 | Discussion #172, Artifact +4, 답변 게시 | -| 이해 가능한 거부 안내 | 완료 | 크기, 외부 URL, fetch, unsafe 분리 | -| 압축 폭탄/경로/실행/MIME 차단 | 완료 | 모두 HTTP 400 | -| 보관/삭제/디스크 경보 | 완료 | 24시간, 15분, 70%/85% | -| 자동 Golden Case | 완료 | 전체 회귀 259/259 | -| 운영 적용과 롤백 | 완료 | WSL 적용-원복-재적용, 운영 백업 2종 | +| 완료 조건 | 결과 | +|---|---| +| 일반 파일 최대 1 GiB | Flarum 200, Gateway 201 | +| 지원 압축 파일 최대 10 GiB | Flarum 200, Gateway 201 | +| 각 상한 +1바이트 거부 | Flarum 422/413, Gateway 400/400 | +| 디스크 기반 스트리밍 | Poller 임시 볼륨, Gateway `.part` 파일 | +| 압축 안전 정책 | 최대 해제 100 GiB, 100개 항목, 20배 압축비 | +| 자동 회귀 | 263/263 통과 | +| 운영 적용·롤백 자산 | 적용/검증/롤백 스크립트와 백업 확보 | +| 보호 서비스 불변 | `github-chat-v1 state=frozen guard=passed` | -## 현재값에서 목표값으로 +## 계층별 운영값 | 계층 | 적용 전 | 적용 후 | |---|---:|---:| -| FoF Upload | 10 MiB | 50 MiB | -| PHP-FPM 파일/요청 | 120/120 MiB | 64/64 MiB | -| PHP-FPM 시간/메모리 | 30초, 60초, 128 MiB | 300초, 300초, 256 MiB | -| Poller | 10 MiB, 30초, 재시도 없음 | 50 MiB, 120초, 2회 | -| Gateway 원본/해제 | 10/20 MiB | 50/100 MiB | -| 유지관리 | 수동 | 15분 주기, 24시간 만료 | -| 디스크 알림 | 없음 | 70% warning, 85% critical | - -Nginx 요청 상한 120 MiB는 유지했다. 50 MiB 멀티파트 요청을 충분히 감싸면서 PHP/FoF가 실효 경계를 담당한다. - -## 구현 - -- Poller가 Content-Length를 먼저 확인하고 1 MiB 단위로 읽어 상한을 넘는 본문을 메모리에 계속 받지 않는다. -- Community 외부 URL은 다운로드하지 않는다. -- 일시적 HTTP/네트워크 오류는 최대 2회 재시도하고, 안전 거부는 재시도하지 않는다. -- Flarum이 `application/octet-stream` 또는 `application/force-download`로 전달한 ZIP/GZIP/TAR.GZ는 파일명 기준으로 안전한 허용 MIME으로 정규화한다. -- 각 첨부는 독립 처리된다. 한 파일이 거부돼도 다른 파일과 질문 처리는 계속된다. -- 유지관리 컨테이너가 만료 Artifact를 삭제하고 디스크 수준을 JSON 로그로 남긴다. -- Flarum 적용 스크립트는 설정/파일을 백업하고 apply, verify, rollback을 제공한다. +| Nginx 요청 | 120 MiB | 11 GiB, 7,200초 | +| PHP-FPM 파일/요청 | 120/120 MiB | 10/11 GiB | +| PHP-FPM 시간/메모리 | 30/60초, 128 MiB | 7,200/7,200초, 512 MiB | +| FoF Upload | 50 MiB | 전역 10 GiB | +| Flarum 유형 정책 | 50 MiB | 일반 1 GiB / 압축 10 GiB | +| Poller | 50 MiB, 120초 | 일반 1 GiB / 압축 10 GiB, 7,200초 | +| Gateway 원본/해제 | 50/100 MiB | 일반 1 GiB / 압축 10 GiB / 해제 100 GiB | + +구현 판정은 1 GiB=`1,073,741,824`바이트, 10 GiB=`10,737,418,240`바이트를 사용한다. 사용자 안내에서는 이해하기 쉽게 1GB·10GB라고 표시할 수 있으나 경계 시험과 코드 상수는 이진 단위로 고정했다. + +## 구현 내용 + +- Poller는 Flarum 첨부를 1 MiB 단위로 전용 임시 볼륨에 내려받고 Gateway로 다시 스트리밍한다. +- Gateway는 요청을 `.part` 파일에 순차 기록하면서 SHA-256을 계산한다. 알려진 Content-Length가 상한을 넘으면 본문 전송 전에 거부한다. +- ZIP, GZIP, TAR.GZ는 메모리에 한 번에 펼치지 않고 순차 검사한다. 경로 이탈, 링크·특수 파일, 실행 파일, 중첩 압축과 압축 폭탄을 거부한다. +- 대용량 원본은 AI 질의 때 다시 파싱하지 않는다. 업로드 때 만든 정규화 근거 파일의 해시를 확인한 뒤 필요한 내용만 전달한다. +- 이미지 입력의 기존 크기·해상도 정책은 유지한다. 일반 파일 1 GiB 상한이 이미지 디코딩 상한을 확대하지 않는다. +- Flarum 배포 스크립트는 실제 Nginx `server_name`이 운영 도메인과 다르더라도 단일 활성 사이트인 경우 안전하게 해당 사이트를 선택한다. ## 시험 결과 -### 자동 회귀 +### 운영 Flarum 실파일 경계 -운영 코드와 동일한 PR #65 기반 런타임 오버레이에서 259건 전부 통과했다. 설정 상한, 정확한 경계, Content-Length 선차단, 재시도, 외부 URL, 압축 안전 정책, Community 대화 및 기존 답변 품질 계약이 포함된다. +| 시험 | 바이트 | HTTP | 경과 | 저장 결과 | +|---|---:|---:|---:|---| +| 일반 파일 정확히 1 GiB | 1,073,741,824 | 200 | 16초 | 생성 후 204 삭제 | +| 일반 파일 1 GiB+1 | 1,073,741,825 | 422 | 12초 | 생성 0건 | +| ZIP 정확히 10 GiB | 10,737,418,240 | 200 | 410초 | 생성 후 204 삭제 | +| ZIP 10 GiB+1 | 10,737,418,241 | 413 | 227초 | 생성 0건 | -### 운영 경계와 보안 +Flarum DB의 시험 업로드 ID 150·151은 삭제 후 0건이며, `public/assets/files`에도 시험 파일이 남아 있지 않다. 업로드 임시 영역과 루트 파일시스템에는 955 GiB가 남아 있다. -| 시험 | 기대 | 실제 | -|---|---|---| -| Flarum 50 MiB | 허용 | 200 | -| Flarum 50 MiB+1 | 거부 | 422 | -| Gateway 50 MiB | 허용 | 201 | -| Gateway 50 MiB+1 | 거부 | 400 | -| 경로 이탈 ZIP | 거부 | 400 | -| 중첩 압축 | 거부 | 400 | -| 압축 폭탄 | 거부 | 400 | -| 실행 파일 포함 ZIP | 거부 | 400 | -| PNG MIME 위장 | 거부 | 400 | +### Gateway 독립 경계 -Gateway의 50 MiB 일반 로그 정규화는 약 18.5초로 120초 경계 안에서 끝났다. +| 시험 | HTTP | 경과 | 판정 | +|---|---:|---:|---| +| 일반 파일 정확히 1 GiB | 201 | 27.751초 | PASS | +| 일반 파일 1 GiB+1 선언 | 400 | 선차단 | PASS | +| ZIP 정확히 10 GiB | 201 | 294.814초 | PASS | +| ZIP 10 GiB+1 선언 | 400 | 선차단 | PASS | -### 실제 대화 E2E +성공 Artifact 두 건은 HTTP 200으로 삭제했다. 10 GiB 분석 중 프로세스 `VmHWM`은 61,732 KiB로 약 60.3 MiB였다. -임시 Discussion #172에 일반 로그, ZIP, GZIP, TAR.GZ를 게시했다. Poller가 네 파일을 모두 수집했고 AI 답변이 자동 게시됐다. 이후 Discussion #170~#172와 FoF 시험 업로드 33개를 관리자 권한으로 영구 삭제했다. DB 재확인 결과 시험 Discussion과 업로드 행은 0건이었다. +### 자동 회귀와 보안 + +PR #65 기반 런타임 오버레이에서 263건 전부 통과했다. 일반/압축 상한, 스트리밍 수신, Content-Length 선차단, 재시도, 외부 URL 차단, 압축 안전 정책, Community 대화와 기존 답변 품질 계약을 포함한다. + +경로 이탈 ZIP, 중첩 압축, 압축 폭탄, 실행 파일 포함 ZIP, 이미지 MIME 위장은 모두 HTTP 400으로 차단된다. ## 운영 상태 -- Flarum 1.8.18 / FoF Upload 1.8.5 -- Gateway `techflow/ai-gateway:issue-72-large-uploads`: healthy -- Community Poller: running -- Artifact Maintainer: running, restart 0 -- 최초 유지관리: 만료 Artifact 28개 삭제, 디스크 5%, level=ok +- Flarum 1.8.18 / FoF Upload 1.8.5 / 업로드 정책 검증 통과 +- Gateway `techflow/ai-gateway:issue-72-large-uploads-1g10g`: healthy +- Community Poller: 반복 처리 `failed=0` +- Artifact Maintainer: `level=ok`, 디스크 사용 11%, 약 916.8 GB 여유 - Flarum 루트: 1006 GiB 중 955 GiB 여유 -- TechFlow 루트: 1005 GiB 중 917 GiB 여유 -- GitHub→Chat 보호 서비스: `frozen`, guard passed +- GitHub→Chat 보호 서비스: 배포 전후 `frozen`, guard passed +- Activepieces app/worker/event-gateway/ingress/Redis/Postgres 컨테이너 ID 불변 + +초기 Poller는 새 Gateway가 준비되기 전에 두 번 `URLError`를 기록했지만, Gateway가 healthy가 된 뒤 반복 처리에서 `failed=0`으로 정상화됐다. -## 이탈과 보완 +## 배포와 롤백 -1. 운영 Flarum의 `config.php`가 framework helper를 사용해 배포 스크립트의 autoload가 필요했다. 설정 변경 전 실패했고, autoload를 추가해 재검증했다. -2. Flarum 서버에서 공용 HTTPS 주소로 자기 자신을 확인할 때 hairpin timeout이 발생했다. 서비스 검증을 로컬 Nginx와 Host 헤더로 고정했다. -3. Maintainer 스크립트 실행 시 Python 모듈 경로가 빠져 최초 컨테이너가 재시작했다. 실행 경로를 고정하고 새 이미지로 교체해 restart 0을 확인했다. -4. 전체 소스 압축을 기존 배포 디렉터리에 푸는 과정에서 root 소유의 비대상 도구 디렉터리에서 권한 오류가 발생했다. 실행 중 컨테이너는 변경되지 않았고, 이후 대상 파일만 교체하는 최소 범위 배포로 완료했다. +Flarum 정책 적용 전 백업은 `/var/backups/techflow-flarum/issue72-20260816T010617Z`에 있다. TechFlow 배포 전 백업은 `/home/ablecloud/techflow-ai-gateway/backups/issue72-1g10g-predeploy-20260816T010000Z`에 있으며 런타임 파일과 권한 0600의 환경 파일을 포함한다. -## 롤백 +TechFlow는 Gateway, Community Poller, Artifact Maintainer만 재생성했다. Activepieces와 GitHub→Chat 구성은 배포 대상에 포함하지 않았다. DB 스키마 변경은 없다. -- Flarum: `/var/backups/techflow-flarum/issue72-20260814T174252Z` -- TechFlow: `/home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z` -- DB 스키마 변경: 없음 -- WSL: 적용, 검증, 원복, 재적용 통과 +## 정리 결과 -상세 명령과 장애 대응은 `docs/runbooks/community-large-uploads.md`를 따른다. +- Flarum 시험 첨부 2건 삭제, 초과 파일 저장 0건 +- Gateway 시험 Artifact 2건 삭제 +- TechFlow 경계 시험 컨테이너 6개와 볼륨 7개 삭제 +- 1 GiB/10 GiB 실파일과 임시 소스·작업 디렉터리 삭제 +- 운영 백업은 롤백 자산으로 유지 ## 판정 -Issue #72 완료 조건을 모두 충족했다. 운영 배포 상태는 **GO**다. +일반 파일 1 GiB와 지원 압축 파일 10 GiB 요구사항, 초과 거부, 스트리밍 처리, 운영 배포, 보호 서비스 불변과 정리 기준을 모두 충족했다. 운영 판정은 **GO**다. diff --git a/docs/runbooks/community-large-uploads.md b/docs/runbooks/community-large-uploads.md index b78d2f2..0fc0343 100644 --- a/docs/runbooks/community-large-uploads.md +++ b/docs/runbooks/community-large-uploads.md @@ -2,60 +2,69 @@ ## 목적 -Community 질문에 이미지, 일반 로그, ZIP, GZIP, TAR.GZ를 첨부했을 때 Flarum 수신부터 TechFlow AI 분석까지 일관된 경계로 처리한다. 실행 파일, 경로 이탈, 심볼릭 링크, 중첩 압축, 압축 폭탄, MIME 위장은 닫힌 상태로 거부한다. +Community 질문에 이미지, 일반 로그, ZIP, GZIP, TAR.GZ를 첨부했을 때 Flarum 수신부터 TechFlow AI 분석까지 같은 정책으로 처리한다. 일반 파일은 파일당 1 GiB 이하, 지원 압축 파일은 파일당 10 GiB 이하를 허용한다. ```mermaid flowchart LR - U["사용자 - 파일당 최대 50 MiB"] --> N["Nginx - 요청 120 MiB, 300초"] - N --> P["PHP-FPM - 요청 64 MiB, 300초"] - P --> F["Flarum/FoF Upload - 파일 50 MiB"] - F --> C["Community Poller - 50 MiB, 120초, 2회 재시도"] - C --> G["AI Gateway - 원본 50 MiB"] - G --> S["압축 안전검사 - 해제 100 MiB, 100개, 20배"] - S --> A["AI 답변 - 24시간 보관 후 삭제"] + U["사용자"] --> N["Nginx - 요청 11 GiB"] + N --> P["PHP-FPM - 파일 10 GiB / 요청 11 GiB"] + P --> F["Flarum - 일반 1 GiB / 압축 10 GiB"] + F --> C["Poller - 디스크 임시 저장"] + C --> G["Gateway - 디스크 스트리밍 수신"] + G --> S["압축 스트리밍 검사 - 최대 해제 100 GiB"] + S --> E["정규화 근거만 AI에 전달"] ``` ## 운영 경계 | 계층 | 기준 | 운영값 | |---|---|---:| -| Nginx | 요청 본문 상한 | 120 MiB | -| Nginx | 본문/응답 대기 | 300초 | -| PHP-FPM | 파일/요청 | 64 MiB / 64 MiB | -| PHP-FPM | 실행/입력/메모리 | 300초 / 300초 / 256 MiB | -| FoF Upload | 파일당 상한 | 50 MiB (51,200 KiB) | -| Poller | 다운로드/시간/재시도 | 50 MiB / 120초 / 2회 | -| AI Gateway | 원본/압축 해제 | 50 MiB / 100 MiB | -| AI Gateway | 압축 항목/압축비 | 100개 / 20배 | +| Nginx | 요청 본문 상한 | 11 GiB | +| Nginx | 본문/응답 대기 | 7,200초 | +| PHP-FPM | 파일/요청 | 10 GiB / 11 GiB | +| PHP-FPM | 실행/입력/메모리 | 7,200초 / 7,200초 / 512 MiB | +| FoF Upload | 전역 파일 상한 | 10 GiB (10,485,760 KiB) | +| TechFlow Flarum 정책 | 일반/압축 | 1 GiB / 10 GiB | +| Poller | 일반/압축/시간/재시도 | 1 GiB / 10 GiB / 7,200초 / 2회 | +| AI Gateway | 일반/압축 | 1 GiB / 10 GiB | +| 압축 안전검사 | 해제/항목/압축비 | 100 GiB / 100개 / 20배 | | Artifact | 보관/점검 | 24시간 / 15분 | | 디스크 | 경고/위험 | 70% / 85% | -바깥 계층의 요청 한도는 안쪽의 파일 한도보다 크게 유지한다. 따라서 멀티파트 부가정보가 포함되어도 50 MiB 파일이 FoF Upload까지 도달한다. +1 GiB는 `1,073,741,824`바이트, 10 GiB는 `10,737,418,240`바이트다. 문서와 사용자 안내에서 GB라고 부르더라도 구현과 시험 판정은 이 이진 경계를 사용한다. + +## 처리 원칙 + +- Poller는 첨부를 1 MiB 단위로 전용 볼륨에 내려받고 Gateway로 다시 스트리밍한다. 전체 파일을 `bytes`나 `bytearray`로 만들지 않는다. +- Gateway는 요청을 `.part` 파일에 순차 기록하며 SHA-256을 동시에 계산한다. Content-Length가 상한을 넘으면 본문을 받기 전에 거부하고, 길이를 알 수 없는 요청은 쓰는 중 상한에서 중단한다. +- ZIP/GZIP/TAR.GZ는 항목을 메모리에 펼치지 않고 순차 읽는다. 압축 해제 크기, 압축비, 항목 수, 경로 이탈, 링크·특수 파일, 실행 파일, 중첩 압축을 검사한다. +- AI 질의에는 원본 대용량 파일을 다시 읽히지 않는다. 업로드 때 생성한 비밀정보 제거·요약 근거 파일만 사용하며 해당 근거의 SHA-256을 다시 확인한다. +- 이미지 입력은 종전 이미지 크기·차원 정책을 유지한다. 1 GiB 일반 상한은 이미지 디코딩 상한을 확대한다는 의미가 아니다. ## 허용 및 거부 -허용 대상은 PNG/JPEG/WebP 등 이미지, UTF-8 일반 텍스트 로그, ZIP, GZIP, TAR.GZ/TGZ다. PDF는 Community 보관은 가능하지만 현재 TechFlow 로그 분석 대상은 아니다. +허용 대상은 PNG/JPEG/WebP 이미지, UTF-8 텍스트 로그와 JSON/CSV/TSV, ZIP, GZIP, TAR.GZ/TGZ다. PDF는 Community 보관은 가능하지만 현재 TechFlow 로그 분석 대상은 아니다. -다음 조건은 분석에서 제외하고 사용자에게 재첨부 안내를 전달한다. +다음 조건은 안전하게 거부하고 사용자에게 재첨부 안내를 제공한다. -- 50 MiB 초과 파일 +- 일반 파일 1 GiB 초과 또는 지원 압축 파일 10 GiB 초과 - Community 외부 주소 - ZIP/TAR 내부 경로 이탈, 절대 경로, 드라이브 경로 - 심볼릭 링크, 파이프, 장치 등 특수 파일 - 실행 파일 또는 중첩 압축 -- 압축 해제 100 MiB, 항목 100개, 압축비 20배 초과 -- 확장자와 실제 바이트가 다른 이미지 및 바이너리 로그 +- 압축 해제 100 GiB, 항목 100개, 압축비 20배 초과 +- UTF-8이 아닌 로그, 바이너리 로그, 이미지 MIME 위장 ## 적용 -Flarum 서버에서 다음 스크립트를 사용한다. +Flarum 서버에서 배포 자산을 설치한 뒤 적용한다. ```bash sudo /usr/local/sbin/techflow-flarum-upload-policy apply sudo /usr/local/sbin/techflow-flarum-upload-policy verify ``` -TechFlow는 `deploy/compose/ai-gateway/compose.yml`과 런타임 전용 `.env`에 동일한 값을 설정한 뒤 다음 서비스만 교체한다. +TechFlow는 런타임 전용 `.env`에 같은 값을 설정하고 다음 세 서비스만 교체한다. ```bash docker compose -f compose.yml -f compose.openai.override.yml config --quiet @@ -63,7 +72,7 @@ docker compose -f compose.yml -f compose.openai.override.yml up -d --no-deps \ gateway community-poller artifact-maintainer ``` -GitHub→Chat 보호 서비스는 배포 대상이 아니다. 배포 후 보호 검사를 반드시 실행한다. +GitHub→Chat 보호 서비스는 배포 대상이 아니다. 배포 전후에 보호 검사를 실행하고 컨테이너 ID·이미지·시작 시각이 같아야 한다. ```bash cd /opt/ablestack-techflow/activepieces @@ -72,7 +81,31 @@ sudo python3 scripts/protected_service_guard.py \ --compose compose.yml --ingress ingress/Caddyfile ``` -## 확인 +## 경계 검증 + +Gateway 전용 시험은 정확한 1 GiB 일반 로그와 정확한 10 GiB ZIP64 파일을 디스크에서 생성·전송한다. 성공 Artifact는 시험 종료 시 삭제하고 생성 파일도 기본적으로 제거한다. + +```bash +python scripts/verify_large_upload_boundaries.py \ + --base-url http://127.0.0.1:8090 \ + --workdir /var/tmp/techflow-issue72-boundary \ + --timeout 7200 +``` + +정상 판정은 다음과 같다. + +| 시험 | 기대 HTTP | +|---|---:| +| 일반 1 GiB | 201 | +| 일반 1 GiB + 1바이트 선언 | 400 | +| ZIP 10 GiB | 201 | +| ZIP 10 GiB + 1바이트 선언 | 400 | +| Flarum 일반 1 GiB | 200 | +| Flarum 일반 1 GiB + 1바이트 | 422 | +| Flarum ZIP 10 GiB | 200 | +| Flarum ZIP 10 GiB + 1바이트 | 413 | + +## 상태 확인 ```bash sudo /usr/local/sbin/techflow-flarum-upload-policy verify @@ -81,15 +114,19 @@ docker logs --tail 20 techflow-ai-gateway-community-poller-1 docker logs --tail 20 techflow-ai-gateway-artifact-maintainer-1 ``` -정상 상태는 Gateway `healthy`, Poller/Maintainer `running`, 유지관리 로그 `level=ok`다. 50 MiB는 Flarum 200/Gateway 201, 50 MiB+1바이트는 Flarum 422/Gateway 400이어야 한다. +Gateway는 `healthy`, Poller와 Maintainer는 `running`, 유지관리 로그는 `level=ok`여야 한다. Poller 볼륨과 Artifact 볼륨에 `.part` 파일이 장시간 남아 있지 않아야 한다. + +## 용량 계획과 장애 처리 -## 보관, 삭제 및 용량 경보 +10 GiB 압축 파일 하나를 처리할 때 Community 원본, Poller 임시본, Gateway 원본이 잠시 공존할 수 있다. 최악의 정상 동시 점유량은 압축 해제 자료를 별도 저장하지 않는 조건에서도 약 30 GiB이므로, 동시 업로드 수와 24시간 보관량을 포함해 여유 공간을 잡는다. -- Artifact는 생성 후 24시간이 지나면 유지관리 컨테이너가 삭제한다. -- 파일 삭제 API는 메타데이터와 원본을 함께 제거한다. -- 디스크 사용률 70%부터 `warning`, 85%부터 `critical` 이벤트를 컨테이너 로그에 남긴다. -- `critical`이면 신규 대용량 첨부를 일시 제한하고 오래된 Artifact, 고아 파일, Flarum 업로드 용량을 순서대로 확인한다. -- Flarum 질문을 삭제하더라도 AI Artifact는 별도 보관 경계에 따라 삭제된다. +| 현상 | 확인 | 조치 | +|---|---|---| +| 413/422 | Nginx/PHP/FoF/TechFlow 정책 | 11G, 10G, 10,485,760 KiB 및 종류별 1/10 GiB 확인 | +| Poller fetch 경고 | 첨부 URL, 시간 초과, 임시 볼륨 | 외부 URL 차단과 7,200초/2회 재시도 확인 | +| 압축 안전 거부 | 항목 수, 경로, 해제 크기, 압축비 | 로그만 담아 다시 압축하도록 안내 | +| 디스크 warning/critical | `df -h`, Maintainer 로그, `.part` | 만료/고아 파일 정리 후 신규 대용량 첨부 일시 제한 | +| 처리 지연 | Gateway CPU, `VmHWM`, 업로드 경과 시간 | 동시 처리 수를 낮추고 큐 기반 비동기 분석을 후속 검토 | ## 롤백 @@ -100,14 +137,4 @@ sudo /usr/local/sbin/techflow-flarum-upload-policy rollback \ /var/backups/techflow-flarum/issue72-YYYYMMDDTHHMMSSZ ``` -TechFlow는 배포 전 `runtime-files.tar.gz`와 `.env`를 복원하고 이전 릴리스 태그로 세 서비스를 다시 만든다. DB 마이그레이션은 없으므로 데이터 스키마 롤백은 필요 없다. - -## 장애 처리 - -| 현상 | 확인 | 조치 | -|---|---|---| -| 413/422 | Nginx/PHP/FoF 실효값 | 바깥 한도 >= 64 MiB, FoF 51,200 KiB 확인 | -| Poller fetch 경고 | 첨부 URL, 시간 초과, 크기 | 외부 URL 금지 확인, 120초/2회 재시도 후 재첨부 안내 | -| 압축 안전 거부 | 파일명, 항목 수, 압축비 | 원본 로그만 다시 압축하도록 안내 | -| Maintainer 재시작 | 모듈 경로, 볼륨 권한 | 이미지 버전과 `/var/lib/techflow-artifacts` 0700/10001 확인 | -| 디스크 warning/critical | `df -h`, 유지관리 로그 | 만료 정리 확인 후 고아 파일 조사, 필요 시 업로드 일시 제한 | +TechFlow는 배포 전 런타임 파일과 `.env` 백업을 복원하고 이전 릴리스 이미지로 Gateway, Poller, Maintainer만 다시 만든다. DB 스키마 변경은 없다. diff --git a/output/issue-72-large-upload-artifact-manifest.json b/output/issue-72-large-upload-artifact-manifest.json index cc0521b..9543e2f 100644 --- a/output/issue-72-large-upload-artifact-manifest.json +++ b/output/issue-72-large-upload-artifact-manifest.json @@ -1,73 +1,73 @@ { "schemaVersion": "1.0", "issue": 72, - "generatedAt": "2026-08-14T18:04:01.821213+00:00", + "generatedAt": "2026-08-16T01:28:31.074233+00:00", "artifactCount": 13, "artifacts": [ { "path": "deploy/flarum/issue72-large-upload-policy.sh", - "bytes": 5162, - "sha256": "dd69929df026743965fb99ec1d7c056fd809bbc9b5c63c71d508c3e4478968f5" + "bytes": 9822, + "sha256": "b8794b38c55722bf46e7297422d7c9d364dc5652aec9f5603723e151c415312a" }, { "path": "docs/evidence/issue-72/large-upload-production-validation.json", - "bytes": 2307, - "sha256": "be95bf98e171e5d06880fc8db34960403024e716ec6aa34378d9494068e38b30" + "bytes": 3348, + "sha256": "b1f0d6bb22507ca052996345a295c80be3e59d6574aee1093bc7f7b0d9f0fcda" }, { "path": "docs/runbooks/community-large-uploads.md", - "bytes": 5240, - "sha256": "93da4da98385da51421b7a5e142faec4c8697cc1dd7fcb91fc8aa14373a9d78e" + "bytes": 6924, + "sha256": "486f95e17d2bd69b920d6b2af8334b4a90917984247aa1ce5500801c99f6e197" }, { "path": "docs/reports/issue-72-community-large-upload-validation.md", - "bytes": 5619, - "sha256": "354c435aaa809583e66244be716d7889b793a4f5b53ff4dcb0b0d67c5d4ec371" + "bytes": 6429, + "sha256": "32492c4890fe14cd3a6761050cb1d86cb24bc2f60983afc822bd1fac0c2463d8" }, { "path": "output/pdf/techflow-issue-72-large-upload-report.pdf", - "bytes": 101252, - "sha256": "0941e05dbab5bc9a120490b06d0c8bc21ffd5bb0811ffaabc6c78fcf83e5e569" + "bytes": 102252, + "sha256": "41a63e6c5e222b024c5c313711440536bb4c2b49bb579b71d0bfa66c3b32fd00" }, { "path": "output/presentation/techflow-issue-72-large-upload.pptx", - "bytes": 28643, - "sha256": "231a1e38db3ed048e407ad4a600b9d0a7cc8445a607afc825f787a00f51c031f" + "bytes": 28607, + "sha256": "1bc2299df1374c31ae3f8674ad28c19a0ee185c8766c86410e14c90815f2f4c8" }, { "path": "output/pdf/techflow-issue-72-large-upload-presentation.pdf", - "bytes": 200231, - "sha256": "a536808d699b0c8f5ea25e48c93aa7d3eb24dbda9ec79fdb236b326a38adb051" + "bytes": 201443, + "sha256": "dbd9f7166b41c9b82bfde65a3bfd9fd4cbc1b9b8752fcbec7f56a44a9b398aa8" }, { "path": "tools/artifacts/issue-72/README.md", - "bytes": 773, - "sha256": "341c22e635cd6d92dc8f3fb55a3aa2ecf3ff6a0fcbc369d392401f1e9b0147a7" + "bytes": 772, + "sha256": "c9adfcd5583d57749c23e0fab19ee738da9fb3ea82c2606b4197b89cf9cc4a42" }, { "path": "tools/artifacts/issue-72/build_report.py", - "bytes": 9445, - "sha256": "a52d86963961d6ae3a7eaa3ac0624f9ef0b7a769acc3829eb5ec794c77643e0f" + "bytes": 9319, + "sha256": "9ea946589c8ba0d63a9ca8a58a0cca08e3dd8fec37b93f539c3b0496f115641a" }, { "path": "tools/artifacts/issue-72/build_presentation.mjs", "bytes": 7036, - "sha256": "0fa71ae7f7335578629cfcbfa6291698746c7aca4dfcca78c701bca09011f988" + "sha256": "3223003b538e0691387b4e53848545c5a572eb24de14006acae2a130e0f46ff7" }, { "path": "tools/artifacts/issue-72/build_presentation_pdf.py", - "bytes": 956, - "sha256": "dfff24f0d119f5c8be7af713cdb072bf02a8518118b03827faf9c2df374487c8" + "bytes": 955, + "sha256": "c3f6ef0d6f859c393db8badac856b0d3007e6a374bc84d05ef84e1c23f0153a0" }, { "path": "tools/artifacts/issue-72/build_manifest.py", - "bytes": 1393, - "sha256": "10000e54e1b0fc9289aab5b4b84857ab721ddf6c233ea8442cbc9d81032d3e49" + "bytes": 1392, + "sha256": "0835ae666c6e8814de5a8cb64d3870ac37e9d3238f06d0a2d5d9e6bb146b2baa" }, { "path": "tools/artifacts/issue-72/validate_artifacts.py", - "bytes": 1531, - "sha256": "dce9d92e43ab34a7fd8c8b6e94e2efc76db2b613fadd0aad66cb1b4c169445a8" + "bytes": 1750, + "sha256": "779c8effc1128f9346cd3f7e1e10f9e37c40485465d6643709e60740b8d9a1d0" } ] } diff --git a/output/pdf/techflow-issue-72-large-upload-presentation.pdf b/output/pdf/techflow-issue-72-large-upload-presentation.pdf index ba1500beec528e5095bc9d541fd5f07772ba1e66..ba03c27351955b49e5ac6b3d46eef8288222cde6 100644 GIT binary patch literal 201443 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

POIyi}tjjdm`AF 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 C?*D%P literal 200231 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 z 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

i#4gs?oT6qj0iXIbO9{O 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
Cv(f*y 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 diff --git a/output/pdf/techflow-issue-72-large-upload-report.pdf b/output/pdf/techflow-issue-72-large-upload-report.pdf index 3c12e97a14198c6f0b223c4c7657dec76e271c11..0f11889da1d78167a4603774152656265d82813b 100644 GIT binary patch delta 94646 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 F{trW=n*;y= diff --git a/output/presentation/techflow-issue-72-large-upload.pptx b/output/presentation/techflow-issue-72-large-upload.pptx index bfa97afbececaf6e7efcf65f9f8d30c0338df808..efc612eb16f51108d6fa71d814e039c6ed37a294 100644 GIT binary patch delta 17545 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 JO@5F5{{SZ|htU84 delta 17243 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 diff --git a/services/ai-gateway/app/log_artifacts.py b/services/ai-gateway/app/log_artifacts.py index e1cb546..dbec15e 100644 --- a/services/ai-gateway/app/log_artifacts.py +++ b/services/ai-gateway/app/log_artifacts.py @@ -27,6 +27,10 @@ INTERESTING = re.compile( r"(?i)(fatal|panic|exception|traceback|error|failed|failure|timeout|timed out|out of memory|oom|warn|denied|refused)" ) +INTERESTING_TOKENS = ( + b"fatal", b"panic", b"exception", b"traceback", b"error", b"failed", b"failure", b"timeout", + b"timed out", b"out of memory", b"oom", b"warn", b"denied", b"refused", +) SECRET_PATTERNS = ( re.compile(r"(?i)\b(authorization\s*:\s*(?:bearer|basic))\s+\S+"), re.compile(r"(?i)\b(password|passwd|pwd|secret|token|api[_-]?key)\b(\s*[:=]\s*)[^\s,;]+"), @@ -160,6 +164,27 @@ def line(self, raw: str) -> None: self.after -= 1 self.previous.append(item) + def plain_chunk(self, text: str) -> None: + """Advance a complete, non-interesting block without per-line regex calls.""" + line_count = text.count("\n") + if not line_count: + return + first_number = self.line_number + 1 + needed = max(0, 20 - len(self.first)) + if needed: + take = min(needed, line_count) + for offset, line in enumerate(text.split("\n", take)[:take]): + self.first.append((first_number + offset, line.rstrip("\r"))) + trailing = text[:-1].rsplit("\n", 20)[-20:] + trailing_start = first_number + line_count - len(trailing) + for offset, line in enumerate(trailing): + self.last.append((trailing_start + offset, line.rstrip("\r"))) + self.previous.clear() + self.previous.extend(self.last) + while len(self.previous) > 2: + self.previous.popleft() + self.line_number += line_count + def result(self, bytes_read: int) -> _EntryScan: if not self.line_number: raise InvalidBoundaryError("empty log entries are not permitted") @@ -196,10 +221,19 @@ def _scan_log_stream(name: str, stream: BinaryIO, *, max_bytes: int, max_evidenc text = decoder.decode(chunk) controls += len(CONTROL_BYTES.findall(chunk)) characters += len(text) - lines = (buffered + text).split("\n") - buffered = lines.pop() - for line in lines: - selector.line(line) + combined = buffered + text + last_newline = combined.rfind("\n") + if last_newline < 0: + buffered = combined + else: + complete = combined[:last_newline + 1] + buffered = combined[last_newline + 1:] + lowered = complete.encode("utf-8").lower() + if selector.after or any(token in lowered for token in INTERESTING_TOKENS): + for line in complete[:-1].split("\n"): + selector.line(line) + else: + selector.plain_chunk(complete) if len(buffered) > MAX_LOG_LINE_CHARS: raise InvalidBoundaryError("log line exceeds the permitted boundary") buffered += decoder.decode(b"", final=True) diff --git a/services/ai-gateway/scripts/verify_large_upload_boundaries.py b/services/ai-gateway/scripts/verify_large_upload_boundaries.py index 3b18a28..084b3f7 100644 --- a/services/ai-gateway/scripts/verify_large_upload_boundaries.py +++ b/services/ai-gateway/scripts/verify_large_upload_boundaries.py @@ -136,6 +136,7 @@ def main() -> int: parser.add_argument("--workdir", type=Path, required=True) parser.add_argument("--timeout", type=int, default=7200) parser.add_argument("--keep-files", action="store_true") + parser.add_argument("--reuse-files", action="store_true") args = parser.parse_args() args.workdir.mkdir(parents=True, exist_ok=True) log_path = args.workdir / "issue72-exact-1g.log" @@ -143,8 +144,17 @@ def main() -> int: results: dict[str, object] = {"limits": {"regularBytes": REGULAR_LIMIT, "archiveBytes": ARCHIVE_LIMIT}} artifact_ids: list[str] = [] try: - results["generatedRegular"] = create_exact_log(log_path) - results["generatedArchive"] = create_exact_zip(zip_path) + if args.reuse_files: + if log_path.stat().st_size != REGULAR_LIMIT or zip_path.stat().st_size != ARCHIVE_LIMIT: + raise RuntimeError("reused boundary files do not have the exact required sizes") + with zipfile.ZipFile(zip_path, "r", allowZip64=True) as archive: + if archive.testzip() is not None: + raise RuntimeError("reused ZIP boundary file failed integrity validation") + results["generatedRegular"] = {"path": str(log_path), "sizeBytes": log_path.stat().st_size} + results["generatedArchive"] = {"path": str(zip_path), "sizeBytes": zip_path.stat().st_size} + else: + results["generatedRegular"] = create_exact_log(log_path) + results["generatedArchive"] = create_exact_zip(zip_path) regular = upload(args.base_url, log_path, log_path.name, "text/plain", args.timeout) artifact_ids.append(str(regular["artifactId"])) results["regularBoundary"] = regular diff --git a/tools/artifacts/issue-72/build_presentation.mjs b/tools/artifacts/issue-72/build_presentation.mjs index d82d426..7bdfa45 100644 --- a/tools/artifacts/issue-72/build_presentation.mjs +++ b/tools/artifacts/issue-72/build_presentation.mjs @@ -32,21 +32,21 @@ function notes(slide) { const s=deck.slides.add(); s.background.fill=C.white; text(s,"cover-kicker","ABLESTACK TECHFLOW · ISSUE #72",42,42,560,42,20,true,C.gray); text(s,"cover-title","Community 대용량\n첨부 개선 완료",42,190,560,190,66,true); - text(s,"cover-subtitle","50 MiB 경계 · 압축 안전검사 · 운영 E2E",42,430,560,70,28,false,C.gray); + text(s,"cover-subtitle","실파일 경계 · 디스크 스트리밍 · 운영 검증",42,430,560,70,28,false,C.gray); box(s,"cover-hero",660,42,578,588,C.pale,C.rule); - text(s,"cover-stat","50\nMiB",708,160,480,240,90,true,C.blue,"center"); - text(s,"cover-detail","파일당 운영 상한\n2026.08.15",708,430,480,100,26,false,C.gray,"center"); + text(s,"cover-stat","1 / 10\nGiB",708,160,480,240,84,true,C.blue,"center"); + text(s,"cover-detail","일반 / 압축 파일 상한\n2026.08.16",708,430,480,100,26,false,C.gray,"center"); notes(s); } { - const s=deck.slides.add(); title(s,"하나의 50 MiB 경계가 전 계층을 관통합니다",2); - const labels=["Nginx\n120 MiB","PHP-FPM\n64 MiB","FoF Upload\n50 MiB","Poller\n50 MiB","Gateway\n50 MiB","압축 해제\n100 MiB"]; + const s=deck.slides.add(); title(s,"1 GiB / 10 GiB 정책이 전 계층을 관통합니다",2); + const labels=["Nginx\n11 GiB","PHP-FPM\n10 / 11 GiB","Flarum\n1 / 10 GiB","Poller\n디스크 저장","Gateway\n스트리밍","압축 해제\n100 GiB"]; labels.forEach((label,i)=>{ const left=42+i*199; box(s,`flow-${i}`,left,260,164,150,i===2||i===4?C.pale:C.panel,i===2||i===4?C.blue:C.rule); text(s,`flow-text-${i}`,label,left+12,300,140,70,24,true,C.ink,"center"); if(i<5) text(s,`arrow-${i}`,"→",left+166,313,34,40,30,true,C.gray,"center"); }); - text(s,"flow-foot","다운로드 120초 · 일시 오류 2회 재시도 · 100개 항목 · 압축비 20배 · 24시간 보관",42,500,1196,62,24,false,C.gray,"center"); notes(s); + text(s,"flow-foot","7,200초 · 2회 재시도 · 100개 항목 · 압축비 20배 · AI에는 정규화 근거만 전달",42,500,1196,62,24,false,C.gray,"center"); notes(s); } { - const s=deck.slides.add(); title(s,"병목은 10 MiB에서 50 MiB로 이동했습니다",3); - const values=[["계층","적용 전","적용 후"],["FoF Upload","10 MiB","50 MiB"],["PHP-FPM","120 MiB · 30/60초 · 128 MiB","64 MiB · 300/300초 · 256 MiB"],["Poller","10 MiB · 30초 · 재시도 없음","50 MiB · 120초 · 2회"],["Gateway","원본 10 / 해제 20 MiB","원본 50 / 해제 100 MiB"],["유지관리","수동","15분 · 24시간 · 70%/85%"]]; + const s=deck.slides.add(); title(s,"수신·분석 경계를 함께 확장했습니다",3); + const values=[["계층","적용 전","적용 후"],["Nginx","120 MiB","11 GiB · 7,200초"],["PHP-FPM","120 / 120 MiB","파일 10 / 요청 11 GiB"],["Flarum","50 MiB","일반 1 / 압축 10 GiB"],["Poller","50 MiB · 120초","1 / 10 GiB · 7,200초"],["Gateway","원본 50 / 해제 100 MiB","원본 1/10 · 해제 100 GiB"]]; const t=s.tables.add({rows:6,columns:3,left:42,top:170,width:1196,height:430,columnWidths:[250,430,516],values}); t.borders.assign({style:"solid",fill:C.rule,width:1}); for(let c=0;c<3;c++){t.getCell(0,c).fill="#243B64"; t.getCell(0,c).text.style={fontSize:22,bold:true,color:C.white,typeface:FONT};} @@ -54,10 +54,10 @@ function notes(slide) { notes(s); } { - const s=deck.slides.add(); title(s,"운영 검증은 코드, 경계, 실제 대화를 모두 통과했습니다",4); - const cards=[{v:"259/259",d:"전체 런타임 회귀"},{v:"50 MiB",d:"허용 · +1 byte 거부"},{v:"4종",d:"로그 · ZIP · GZIP · TAR.GZ"}]; + const s=deck.slides.add(); title(s,"정확한 경계 크기로 운영 경로를 검증했습니다",4); + const cards=[{v:"263/263",d:"전체 런타임 회귀"},{v:"1 / 10 GiB",d:"허용 · +1 byte 거부"},{v:"60.3 MiB",d:"10 GiB 분석 최대 메모리"}]; cards.forEach((card,i)=>{const left=42+i*411;box(s,`metric-${i}`,left,300,374,270,C.panel,C.panel);text(s,`metric-value-${i}`,card.v,left+28,350,318,100,56,true,i===1?C.blue:C.ink,"center");text(s,`metric-detail-${i}`,card.d,left+28,478,318,46,23,false,C.gray,"center");}); - text(s,"metric-caption","Discussion #172: Artifact 4개 수집 · AI 답변 자동 게시 · 시험 데이터 영구 삭제",42,160,1196,72,25,false,C.gray,"center"); notes(s); + text(s,"metric-caption","Flarum 1 GiB 16초 · 10 GiB 410초 | Gateway 1 GiB 27.751초 · 10 GiB 294.814초",42,160,1196,72,25,false,C.gray,"center"); notes(s); } { const s=deck.slides.add(); title(s,"위험한 압축과 위장 파일은 모두 닫힌 상태로 거부됩니다",5); @@ -65,14 +65,14 @@ function notes(slide) { const t=s.tables.add({rows:6,columns:3,left:42,top:176,width:760,height:420,columnWidths:[450,130,180],values}); t.borders.assign({style:"solid",fill:C.rule,width:1}); for(let c=0;c<3;c++){t.getCell(0,c).fill="#243B64";t.getCell(0,c).text.style={fontSize:22,bold:true,color:C.white,typeface:FONT};} for(let r=1;r<6;r++)for(let c=0;c<3;c++){t.getCell(r,c).fill=r%2?C.white:"#F7F9FC";t.getCell(r,c).text.style={fontSize:20,bold:c===2,color:c===2?C.green:C.ink,typeface:FONT};} - box(s,"security-side",850,176,388,420,C.pale,C.blue); text(s,"security-side-title","운영 안전망",884,220,320,45,28,true,C.blue); - text(s,"security-side-body","24시간 만료 삭제\n15분 주기 점검\n70% 경고\n85% 위험\n\n최초 실행에서\n만료 28개 정리",884,292,320,250,25,false,C.ink); notes(s); + box(s,"security-side",850,176,388,420,C.pale,C.blue); text(s,"security-side-title","검증 후 정리",884,220,320,45,28,true,C.blue); + text(s,"security-side-body","Flarum 첨부 2건 삭제\nGateway Artifact 2건 삭제\n시험 컨테이너 6개 삭제\n시험 볼륨 7개 삭제\n\nDB·파일 잔존\n0건",884,292,320,250,24,false,C.ink); notes(s); } { const s=deck.slides.add(); s.background.fill=C.white; text(s,"close-kicker","ISSUE #72 · COMPLETE",42,42,420,42,20,true,C.gray); text(s,"close-title","운영 상태는\nGO입니다",42,188,850,190,82,true); - text(s,"close-detail","Gateway healthy · Poller running · Maintainer running\nGitHub→Chat 보호 서비스 frozen / guard passed",42,485,760,85,28,false,C.gray); + text(s,"close-detail","Gateway healthy · Poller failed=0 · Maintainer level=ok\nGitHub→Chat 보호 서비스 frozen / guard passed",42,485,800,85,28,false,C.gray); box(s,"close-badge",934,208,304,304,C.pale,C.blue); text(s,"close-go","GO",964,296,244,100,72,true,C.blue,"center"); notes(s); } diff --git a/tools/artifacts/issue-72/build_report.py b/tools/artifacts/issue-72/build_report.py index c0b40bf..2827c17 100644 --- a/tools/artifacts/issue-72/build_report.py +++ b/tools/artifacts/issue-72/build_report.py @@ -78,42 +78,42 @@ def footer(canvas, doc) -> None: story=[ Spacer(1,19*mm), para("ABLESTACK TECHFLOW · ISSUE #72","meta"), Spacer(1,8*mm), para("Community 대용량 로그·압축파일\n업로드 개선 완료 보고서","title"), Spacer(1,6*mm), - para("Flarum 수신부터 TechFlow AI 분석까지 50 MiB 경계를 일치시키고 압축 안전검사, 자동 정리, 운영 E2E를 완료한 결과입니다.","subtitle"), - Spacer(1,17*mm), callout("GO - 운영 적용 완료, 전체 회귀 259/259, 실제 대화에서 네 종류 첨부 수집과 AI 답변 게시 확인"), - Spacer(1,8*mm), para("운영 반영일 2026-08-15 · Flarum 1.8.18 · FoF Upload 1.8.5","meta"), PageBreak(), + para("일반 파일 1 GiB, 지원 압축 파일 10 GiB를 실제 운영 경로에서 수용하고 초과 파일은 거부하도록 전 계층을 정렬한 결과입니다.","subtitle"), + Spacer(1,17*mm), callout("GO - 운영 적용 완료 · 실파일 1 GiB/10 GiB 경계 통과 · 전체 회귀 263/263"), + Spacer(1,8*mm), para("운영 검증일 2026-08-16 · Flarum 1.8.18 · FoF Upload 1.8.5","meta"), PageBreak(), para("1. 판단 요약","h1"), - make_table([["항목","결과","판정"],["파일 경계","50 MiB 허용 / +1 byte 거부","PASS"],["압축 분석","100 MiB, 100개, 20배","PASS"], - ["실제 대화","로그·ZIP·GZIP·TAR.GZ + AI 답변","PASS"],["보안 거부","경로·중첩·폭탄·실행·MIME","PASS"], - ["운영 회귀","259/259","PASS"],["보호 서비스","github-chat-v1 frozen","PASS"]],[54*mm,83*mm,37*mm]), - Spacer(1,7*mm), callout("시험 Discussion과 업로드 33개는 영구 삭제했으며 DB 잔존 행은 0건입니다.",BLUE), PageBreak(), + make_table([["항목","결과","판정"],["일반 파일","1 GiB 허용 / +1 byte 거부","PASS"],["압축 파일","10 GiB 허용 / +1 byte 거부","PASS"], + ["압축 분석","100 GiB, 100개, 20배","PASS"],["운영 회귀","263/263","PASS"], + ["정리","첨부·Artifact·시험 자원 잔존 0","PASS"],["보호 서비스","github-chat-v1 frozen","PASS"]],[54*mm,83*mm,37*mm]), + Spacer(1,7*mm), callout("정확한 경계 크기 파일을 직접 전송했고 성공 데이터는 검증 직후 삭제했습니다.",BLUE), PageBreak(), para("2. 계층별 현재값과 목표값","h1"), - make_table([["계층","적용 전","적용 후"],["FoF Upload","10 MiB","50 MiB"],["PHP-FPM","120 MiB, 30/60초, 128 MiB","64 MiB, 300/300초, 256 MiB"], - ["Poller","10 MiB, 30초, 재시도 없음","50 MiB, 120초, 2회"],["Gateway","10/20 MiB","50/100 MiB"], - ["유지관리","수동","15분, 24시간, 70%/85%"]],[46*mm,61*mm,67*mm]), - Spacer(1,6*mm), para("Nginx의 120 MiB 요청 상한은 유지해 50 MiB 파일과 멀티파트 부가정보를 충분히 감쌉니다."), PageBreak(), + make_table([["계층","적용 전","적용 후"],["Nginx","120 MiB","11 GiB · 7,200초"],["PHP-FPM","120/120 MiB","파일 10 / 요청 11 GiB"], + ["FoF Upload","50 MiB","전역 10 GiB"],["유형 정책","50 MiB","일반 1 / 압축 10 GiB"], + ["Poller","50 MiB · 120초","1/10 GiB · 7,200초 · 2회"],["Gateway","50/100 MiB","원본 1/10 · 해제 100 GiB"]],[43*mm,58*mm,73*mm]), + Spacer(1,6*mm), para("판정 경계는 1,073,741,824바이트와 10,737,418,240바이트로 고정했습니다."), PageBreak(), para("3. 안전한 처리 흐름","h1"), - make_table([["단계","처리","실패 시"],["1. Community","허용 MIME, 50 MiB","사용자에게 크기/형식 안내"],["2. Poller","동일 출처, bounded read, 2회 재시도","파일별 경고 후 다른 첨부 계속"], - ["3. Gateway","원본 50 MiB","400 안전 거부"],["4. 압축 검사","100 MiB, 100개, 20배","경로/링크/실행/중첩 차단"], - ["5. 보관","24시간, 15분 정리","70%/85% 용량 이벤트"]],[37*mm,86*mm,51*mm]), - Spacer(1,6*mm), para("Flarum이 압축 파일을 범용 다운로드 MIME으로 전달해도 ZIP, GZIP, TAR.GZ 파일명만 허용 MIME으로 정규화합니다."), PageBreak(), - para("4. 경계 및 보안 시험","h1"), - make_table([["시험","Flarum/Gateway","결과"],["50 MiB","200 / 201","허용"],["50 MiB + 1 byte","422 / 400","거부"], - ["경로 이탈 ZIP","- / 400","거부"],["중첩 압축","- / 400","거부"],["압축 폭탄","- / 400","거부"], - ["실행 파일 포함","- / 400","거부"],["PNG MIME 위장","- / 400","거부"]],[58*mm,58*mm,58*mm]), - Spacer(1,6*mm), callout("Gateway 50 MiB 일반 로그 정규화 18.5초 - 운영 제한 120초 안에서 완료",BLUE), PageBreak(), - para("5. 실제 Community E2E","h1"), - make_table([["검증","결과"],["임시 Discussion","#172"],["첨부","일반 로그, ZIP, GZIP, TAR.GZ"],["Gateway Artifact","4개 증가"], - ["AI 답변","자동 게시"],["시험 글","#170~#172 영구 삭제"],["시험 업로드","33개 영구 삭제"],["DB 잔존","0건"]],[66*mm,108*mm]), - Spacer(1,7*mm), para("질문 생성부터 Poller 전달, Artifact 생성, OpenAI 답변, Community 게시까지 약 1분의 운영 흐름을 끝까지 확인했습니다."), PageBreak(), + make_table([["단계","처리","안전 장치"],["1. Community","10 GiB 요청 수신","일반 1 / 압축 10 GiB"],["2. Poller","1 MiB 단위 디스크 임시 저장","동일 출처 · 2회 재시도"], + ["3. Gateway",".part 스트리밍 + SHA-256","상한 초과 즉시 중단"],["4. 압축 검사","순차 해제 · 근거 선택","100 GiB · 100개 · 20배"], + ["5. AI 질의","정규화 근거만 전달","원본 재파싱 금지"],["6. 보관","24시간 · 15분 정리","70%/85% 용량 이벤트"]],[37*mm,78*mm,59*mm]), + Spacer(1,6*mm), para("10 GiB 압축 분석 중 Gateway 최대 상주 메모리는 약 60.3 MiB로 측정됐습니다."), PageBreak(), + para("4. 실파일 경계 시험","h1"), + make_table([["시험","Flarum","Gateway"],["일반 1 GiB","200 · 16초","201 · 27.751초"],["일반 1 GiB + 1","422 · 저장 0","400 · 선차단"], + ["ZIP 10 GiB","200 · 410초","201 · 294.814초"],["ZIP 10 GiB + 1","413 · 저장 0","400 · 선차단"]],[73*mm,50*mm,51*mm]), + Spacer(1,6*mm), callout("성공 첨부와 Artifact는 모두 삭제했고 Flarum DB와 파일시스템 잔존은 0건입니다.",BLUE), PageBreak(), + para("5. 보안 및 회귀 시험","h1"), + make_table([["시험","Gateway","결과"], + ["경로 이탈 ZIP","400","거부"],["중첩 압축","400","거부"],["압축 폭탄","400","거부"], + ["실행 파일 포함","400","거부"],["PNG MIME 위장","400","거부"]],[66*mm,54*mm,54*mm]), + Spacer(1,6*mm), callout("PR #65 기반 런타임 오버레이 전체 회귀 263/263 통과",GREEN), PageBreak(), para("6. 운영 상태와 롤백","h1"), - make_table([["항목","상태"],["Gateway","issue-72-large-uploads / healthy"],["Poller","running"],["Maintainer","running / restart 0"], - ["최초 만료 정리","28개"],["TechFlow 디스크","5% 사용, level=ok"],["Flarum 여유","955 GiB"],["TechFlow 여유","917 GiB"]],[63*mm,111*mm]), - Spacer(1,6*mm), para("Flarum 백업: /var/backups/techflow-flarum/issue72-20260814T174252Z","small"), - para("TechFlow 백업: /home/ablecloud/techflow-ai-gateway/backups/issue72-predeploy-20260814T174430Z","small"), - Spacer(1,7*mm), callout("WSL 적용-검증-원복-재적용 통과 · DB 스키마 변경 없음",GREEN), PageBreak(), + make_table([["항목","상태"],["Gateway","issue-72-large-uploads-1g10g · healthy"],["Poller","반복 처리 failed=0"],["Maintainer","level=ok · 디스크 11%"], + ["Flarum 여유","955 GiB"],["TechFlow 여유","916,826,116,096 bytes"],["보호 서비스","frozen · guard passed"]],[62*mm,112*mm]), + Spacer(1,6*mm), para("Flarum 백업: /var/backups/techflow-flarum/issue72-20260816T010617Z","small"), + para("TechFlow 백업: /home/ablecloud/techflow-ai-gateway/backups/issue72-1g10g-predeploy-20260816T010000Z","small"), + Spacer(1,7*mm), callout("Gateway, Poller, Maintainer만 교체 · DB 스키마 변경 없음",GREEN), PageBreak(), para("7. 최종 판정","h1"), callout("Issue #72 완료 조건을 모두 충족했습니다. 운영 상태는 GO입니다.",GREEN), Spacer(1,7*mm), - para("운영자는 50 MiB 파일 허용, 50 MiB 초과 거부, Maintainer level=ok, github-chat-v1 guard passed를 핵심 상태로 확인합니다."), + para("운영자는 일반 파일 1 GiB, 압축 파일 10 GiB, Maintainer level=ok, github-chat-v1 guard passed를 핵심 상태로 확인합니다."), para("근거 자산","h2"), para("Runbook: docs/runbooks/community-large-uploads.md\n완료 보고서: docs/reports/issue-72-community-large-upload-validation.md\n구조화 증적: docs/evidence/issue-72/large-upload-production-validation.json","small") ] doc.build(story); print(OUTPUT) diff --git a/tools/artifacts/issue-72/validate_artifacts.py b/tools/artifacts/issue-72/validate_artifacts.py index 93d4fb4..49daf91 100644 --- a/tools/artifacts/issue-72/validate_artifacts.py +++ b/tools/artifacts/issue-72/validate_artifacts.py @@ -10,10 +10,14 @@ PPTX=ROOT/"output/presentation/techflow-issue-72-large-upload.pptx" MANIFEST=ROOT/"output/issue-72-large-upload-artifact-manifest.json" data=json.loads(EVIDENCE.read_text(encoding="utf-8")); tests=data["tests"] -assert data["issue"]==72 and data["policy"]["fileMaxBytes"]==52428800 -assert tests["runtimeRegression"]=={"total":259,"passed":259} -assert tests["communityE2E"]["artifactsAdded"]==4 and tests["communityE2E"]["answerPublished"] is True -assert tests["communityE2E"]["residualDatabaseRows"]==0 +assert data["issue"]==72 +assert data["policy"]["regularMaxBytes"]==1073741824 +assert data["policy"]["archiveMaxBytes"]==10737418240 +assert data["policy"]["extractedMaxBytes"]==107374182400 +assert tests["runtimeRegression"]=={"total":263,"passed":263} +assert [item["status"] for item in tests["flarumBoundary"]]==[200,422,200,413] +assert [item["status"] for item in tests["gatewayBoundary"]]==[201,400,201,400] +assert tests["cleanup"]["flarumUploadRows"]==0 and tests["cleanup"]["temporaryFilesDeleted"] is True assert all(item["result"]=="PASS" for item in tests["security"]) assert tests["protectedService"]["guard"]=="passed" assert len(PdfReader(str(REPORT)).pages)>=7 and len(PdfReader(str(PRESENTATION)).pages)==6 From 6b23b46f8bffe720573c0e371371bee95bf315b1 Mon Sep 17 00:00:00 2001 From: DH Park Date: Sun, 16 Aug 2026 10:33:29 +0900 Subject: [PATCH 11/11] =?UTF-8?q?docs:=20=EC=8B=9C=ED=97=98=20=EC=9E=90?= =?UTF-8?q?=EC=9B=90=20=EC=A0=95=EB=A6=AC=20=ED=9B=84=20=EC=9A=B4=EC=98=81?= =?UTF-8?q?=20=EC=9A=A9=EB=9F=89=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../large-upload-production-validation.json | 6 +++--- ...ue-72-community-large-upload-validation.md | 2 +- ...sue-72-large-upload-artifact-manifest.json | 18 +++++++++--------- .../techflow-issue-72-large-upload-report.pdf | Bin 102252 -> 102255 bytes tools/artifacts/issue-72/build_report.py | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/evidence/issue-72/large-upload-production-validation.json b/docs/evidence/issue-72/large-upload-production-validation.json index 3830644..aea220f 100644 --- a/docs/evidence/issue-72/large-upload-production-validation.json +++ b/docs/evidence/issue-72/large-upload-production-validation.json @@ -21,7 +21,7 @@ "host": "172.16.0.231", "release": "issue-72-large-uploads-1g10g", "gatewayHealth": "healthy", - "rootFreeBytes": 916826116096 + "rootFreeBytes": 983218327552 } }, "policy": { @@ -72,8 +72,8 @@ }, "artifactMaintenance": { "level": "ok", - "diskUsedPercent": 11, - "freeBytes": 916826116096 + "diskUsedPercent": 5, + "freeBytes": 983218327552 }, "protectedService": { "service": "github-chat-v1", diff --git a/docs/reports/issue-72-community-large-upload-validation.md b/docs/reports/issue-72-community-large-upload-validation.md index eb3b5cf..922341e 100644 --- a/docs/reports/issue-72-community-large-upload-validation.md +++ b/docs/reports/issue-72-community-large-upload-validation.md @@ -77,7 +77,7 @@ PR #65 기반 런타임 오버레이에서 263건 전부 통과했다. 일반/ - Flarum 1.8.18 / FoF Upload 1.8.5 / 업로드 정책 검증 통과 - Gateway `techflow/ai-gateway:issue-72-large-uploads-1g10g`: healthy - Community Poller: 반복 처리 `failed=0` -- Artifact Maintainer: `level=ok`, 디스크 사용 11%, 약 916.8 GB 여유 +- Artifact Maintainer: `level=ok`, 디스크 사용 5%, 약 983.2 GB 여유 - Flarum 루트: 1006 GiB 중 955 GiB 여유 - GitHub→Chat 보호 서비스: 배포 전후 `frozen`, guard passed - Activepieces app/worker/event-gateway/ingress/Redis/Postgres 컨테이너 ID 불변 diff --git a/output/issue-72-large-upload-artifact-manifest.json b/output/issue-72-large-upload-artifact-manifest.json index 9543e2f..3052a4f 100644 --- a/output/issue-72-large-upload-artifact-manifest.json +++ b/output/issue-72-large-upload-artifact-manifest.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", "issue": 72, - "generatedAt": "2026-08-16T01:28:31.074233+00:00", + "generatedAt": "2026-08-16T01:33:18.483764+00:00", "artifactCount": 13, "artifacts": [ { @@ -11,8 +11,8 @@ }, { "path": "docs/evidence/issue-72/large-upload-production-validation.json", - "bytes": 3348, - "sha256": "b1f0d6bb22507ca052996345a295c80be3e59d6574aee1093bc7f7b0d9f0fcda" + "bytes": 3347, + "sha256": "46319a0ecb7a6fc6b889db70c9d4817ac2d20ef3f848542aa88f579276f6efda" }, { "path": "docs/runbooks/community-large-uploads.md", @@ -21,13 +21,13 @@ }, { "path": "docs/reports/issue-72-community-large-upload-validation.md", - "bytes": 6429, - "sha256": "32492c4890fe14cd3a6761050cb1d86cb24bc2f60983afc822bd1fac0c2463d8" + "bytes": 6428, + "sha256": "10302837c332eda773addf302de242d13720c0832ae2c7a21b534853f9192d55" }, { "path": "output/pdf/techflow-issue-72-large-upload-report.pdf", - "bytes": 102252, - "sha256": "41a63e6c5e222b024c5c313711440536bb4c2b49bb579b71d0bfa66c3b32fd00" + "bytes": 102255, + "sha256": "7ff48ce4887a042ecd62eda7070137ae541e864829ce17eafc84a00fc502a0ee" }, { "path": "output/presentation/techflow-issue-72-large-upload.pptx", @@ -46,8 +46,8 @@ }, { "path": "tools/artifacts/issue-72/build_report.py", - "bytes": 9319, - "sha256": "9ea946589c8ba0d63a9ca8a58a0cca08e3dd8fec37b93f539c3b0496f115641a" + "bytes": 9318, + "sha256": "39dabe021fe8fdd7b40dab63e07f72572f72ddea2f29940ffebaa9928c48cb3d" }, { "path": "tools/artifacts/issue-72/build_presentation.mjs", diff --git a/output/pdf/techflow-issue-72-large-upload-report.pdf b/output/pdf/techflow-issue-72-large-upload-report.pdf index 0f11889da1d78167a4603774152656265d82813b..6a7ea57c03cecebbd872ece219bdef6eb9bd4a73 100644 GIT binary patch delta 1367 zcmaiq%Z{oB06;TIbJO?@U5q-259Be33L+|~ppF8LBZ46ER0MhWSleB9-QGo$yX&I+ zCikbBG)m$CY7@oPYTM0o^kKT1)xl1AzYs0l7_n|Q(2NRhxnTv|0uC~H3lsu zxwYL7^yD?(T50rhGez1r7C~EfAg9UDQ)xgp>9a~64AHd`&f|B}J9DHPaOBuSTR5&e zV|u==_^%hfWF7++6qDwhdOy&YV4QLy>0@zy_*Pu@A(T^Ku+1Ge> ze}wgPm>{kE&>n?{lBmYPUhbTs!?+Pq#D*MI4d(`y0B2Tc0y|Sw9jsp~LbW+u1_jVT zZhb^$#e8dpf*GKduL+ShuX}`-AYn?@M~6k2+9rM6HI&J_UB-M40( zs~wTmNwhlYoqK^Nr&c~dt{&(=HZ5FcU&kpxo$t~c)(wuT_j2}i|@FXa0| zm>^zaIT$P&QLj;5Bi9;oEciPOENv-x!O91G#eq}mKE?%g;sUdoKaU=V!#-&&1z@h= zMh7m1%sfVzGid9Y=K8$VdVM)Lr)}P99y+d)@pj&*UM}P^dM79)VCk&E*S6lcP?8v# z=?wa>oRC5=bzk--i`#7F>oD7ld(#26vFd!r3;KMW5vjF82CP10%gG~Ze?U%>gaqOl z;qaV%yp#d7vW&!=xj#u-_gV}LVIS`5VW3*~QX(70YPMGlr#CAc-M2^B6YzLhXJ9RTh;CXtMHNpkn!=M7FxHV+`G5jc`$3G7fdxvtOu1=AGHojRE8n| zF8tOStBpq06t3>=6((UDj%~-qD0`Ko88=c*$<)^`{YxAa!Y~eJccuGq4H0*1N-UhI zkSzxpZSLF`a4KB7fv468?$UD5svWvU^(_Luzv<^W6@dw`u3xIfR=LXG1xh}_gsCB29yC92Tv8x~VIJ$r%GAq4wUm;J ztdjQ@_EHY|qey!73;n`&PrWt(Ca5=V!sf2)>#l5}?H+GTAgx=B+kCZnwN}G=#jRN=2(eL8hukem$Kq+e=IMQiP>T+tZ%+arzkVW z>#!ii-F!8{?O8UNcUt2;rntp@P$nrV4+sz`(NjJjBW`iH6`s2%|AAf)OHTVvr(AwwUf|ucc^z~ctBLDCtGaQ$> zKT_X2XNKP6OgD*eHitT*SO?N}fzOk|jK1x+BVHc?$2%aRQb%4dyi5Y{l#EH)jsip|iC3!{SqMRj>~JYE*a+y!r7>`nSd zM)oaR0ZMoA8kDuR7SCmNPQ+%)p7)+$7EU{rX|`{1s;q7W#i3kRt$UYdP6(fJ1>&HT z$0M?+s&r}Qzq1TqW0lVB-FQ1aj(PA>IGA+gZ)O z=+?zp_t1sam{s(sdau&1*ubURR2UQnTuwy!I*XkQ;Yuxmxac4%F=;YR(0%gPMHT6^ zmU@We*4w(Z8L7c+&hBk@g#pIC;ownW(&nX59$s@$4>{1ts;Lia7Esus>Vccg6`Lfp zee=3U@+btdCA)-iJ~Ha&16{1GmNURe_mR*`uU)<5%%n;fmfp=4z!|7?T*~6-=Z&1ls+AaZ5r^XzR9v3VGAtx*f&3y_LtYv>Unv=NQzg@LM zC10#i5aUsu;~i#_bUG8^CSQ41)XlKHKd3X#_Bk)bjbzs9aIANFt@m)QeNY0s2^Q1G&?}w1W;IS>7H?k$%@F}e*`nF?< zcyJ1WJgXY(_iBz1JbyN|YmekCMc6o1ldR5o-r=zz!a7iEY{y`Gm?l|f`7ABq{(Kne zt&bZO(@ChYcYaspX$I5>?-(nOgEQ@R6_)Zm(!jyv>HmS?hvV+bf@ zkK7rYz3IAnyL82k+zMBnsItjzdP&k}8$0-8S= zjj0+F)oWII5NM0sci}`egk<9a$NXrVe3;7%9Fu@PDi#8^6}6G6WuBrPKkkY_#EF|O zN5p%~jLf*r^q~`WSryO8LJu}&3cBz^dR None: ["실행 파일 포함","400","거부"],["PNG MIME 위장","400","거부"]],[66*mm,54*mm,54*mm]), Spacer(1,6*mm), callout("PR #65 기반 런타임 오버레이 전체 회귀 263/263 통과",GREEN), PageBreak(), para("6. 운영 상태와 롤백","h1"), - make_table([["항목","상태"],["Gateway","issue-72-large-uploads-1g10g · healthy"],["Poller","반복 처리 failed=0"],["Maintainer","level=ok · 디스크 11%"], - ["Flarum 여유","955 GiB"],["TechFlow 여유","916,826,116,096 bytes"],["보호 서비스","frozen · guard passed"]],[62*mm,112*mm]), + make_table([["항목","상태"],["Gateway","issue-72-large-uploads-1g10g · healthy"],["Poller","반복 처리 failed=0"],["Maintainer","level=ok · 디스크 5%"], + ["Flarum 여유","955 GiB"],["TechFlow 여유","983,218,327,552 bytes"],["보호 서비스","frozen · guard passed"]],[62*mm,112*mm]), Spacer(1,6*mm), para("Flarum 백업: /var/backups/techflow-flarum/issue72-20260816T010617Z","small"), para("TechFlow 백업: /home/ablecloud/techflow-ai-gateway/backups/issue72-1g10g-predeploy-20260816T010000Z","small"), Spacer(1,7*mm), callout("Gateway, Poller, Maintainer만 교체 · DB 스키마 변경 없음",GREEN), PageBreak(),