fix: CI failures — QR test timeout and Python dependency CVEs

- Increase QR generate max-size test timeout to 120s (10000x10000
  PNG generation exceeds 30s default on CI runners)
- Update Pillow 11.1.0 → >=12.2.0 (CVE-2026-25990, CVE-2026-40192)
- Update rembg 2.0.62 → >=2.0.75 (CVE-2026-40086)
- Update opencv-python-headless to flexible range >=4.10,<4.12
- Ignore CVE-2024-27763 in pip-audit (basicsr transitive dep from
  realesrgan, no fix available upstream)
- Align requirements-gpu.txt and Dockerfile with same versions
This commit is contained in:
SnapOtter
2026-04-27 01:19:25 +08:00
parent b2a1769c8f
commit b926e5d1be
5 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -87,7 +87,7 @@ jobs:
python-version: "3.11"
- run: pip install pip-audit
- run: pip-audit -r packages/ai/python/requirements.txt
- run: pip-audit -r packages/ai/python/requirements.txt --ignore-vuln CVE-2024-27763
build:
name: Build
+2 -2
View File
@@ -185,9 +185,9 @@ RUN --mount=type=cache,target=/root/.cache/pip \
python3 -m venv /opt/venv && \
/opt/venv/bin/pip install --upgrade pip && \
/opt/venv/bin/pip install \
Pillow==11.1.0 \
"Pillow>=12.2.0,<13.0.0" \
numpy==1.26.4 \
opencv-python-headless==4.10.0.84
"opencv-python-headless>=4.10.0,<4.12.0"
# On-demand AI feature installer and manifest
COPY docker/feature-manifest.json /app/docker/feature-manifest.json
+3 -3
View File
@@ -1,10 +1,10 @@
rembg==2.0.62
rembg>=2.0.75,<2.1.0
realesrgan==0.3.0
paddleocr==2.9.1
paddlepaddle-gpu==3.0.0
mediapipe==0.10.21
onnxruntime-gpu==1.20.1
numpy==1.26.4
Pillow==11.1.0
opencv-python-headless==4.10.0.84
Pillow>=12.2.0,<13.0.0
opencv-python-headless>=4.10.0,<4.12.0
codeformer-pip==0.0.4
+3 -3
View File
@@ -1,10 +1,10 @@
rembg[cpu]==2.0.62
rembg[cpu]>=2.0.75,<2.1.0
realesrgan==0.3.0
paddleocr[doc-parser]>=3.4.0,<3.5.0
paddlepaddle>=3.0.0,<3.1.0
mediapipe==0.10.21
onnxruntime==1.20.1
numpy==1.26.4
Pillow==11.1.0
opencv-python-headless==4.10.0.84
Pillow>=12.2.0,<13.0.0
opencv-python-headless>=4.10.0,<4.12.0
codeformer-pip==0.0.4
+1 -1
View File
@@ -460,7 +460,7 @@ describe("QR Generate", () => {
expect(res.statusCode).toBe(200);
const result = JSON.parse(res.body);
expect(result.processedSize).toBeGreaterThan(0);
});
}, 120_000);
it("generates QR with transparent background (3-char hex)", async () => {
const res = await app.inject({