feat(platform): harden telemetry pipeline and unify Semi UI workspaces

This commit is contained in:
lingniu
2026-07-18 00:26:36 +08:00
parent 65b4e4f055
commit 159c80b0ae
136 changed files with 21616 additions and 1785 deletions

View File

@@ -0,0 +1,10 @@
FROM python:3.11-slim
RUN pip install --no-cache-dir \
--index-url https://mirrors.aliyun.com/pypi/simple \
ddddocr==1.6.1
WORKDIR /app
COPY ocr.py /app/ocr.py
USER nobody
ENTRYPOINT ["python", "/app/ocr.py"]

22
deploy/feichi-ocr/ocr.py Normal file
View File

@@ -0,0 +1,22 @@
import re
import sys
import ddddocr
def main() -> int:
image = sys.stdin.buffer.read()
if not image:
print("captcha image is empty", file=sys.stderr)
return 2
result = ddddocr.DdddOcr(show_ad=False).classification(image)
code = re.sub(r"[^0-9A-Za-z]", "", result).upper()
if not re.fullmatch(r"[0-9A-Z]{4}", code):
print(f"invalid OCR result: {code!r}", file=sys.stderr)
return 3
print(code)
return 0
if __name__ == "__main__":
raise SystemExit(main())

View File

@@ -0,0 +1,15 @@
FEICHI_BASE_URL=http://mob.fsfeichi.com.cn:8000
FEICHI_AUTH_SECRET_FILE=/opt/lingniu-go-native/secrets/feichi-auth.json
FEICHI_TARGET_SECRET_FILE=/opt/lingniu-go-native/secrets/feichi-target.json
FEICHI_TARGET_ADDR=127.0.0.1:32960
FEICHI_STATE_FILE=/var/lib/lingniu-feichi-bridge/state.json
FEICHI_OCR_IMAGE=lingniu/feichi-captcha-ocr:1.0.0
FEICHI_LOGIN_MAX_ATTEMPTS=20
FEICHI_LOGIN_RETRY_SECONDS=1
FEICHI_POLL_INTERVAL_SECONDS=10
FEICHI_DISCOVERY_INTERVAL_SECONDS=300
FEICHI_FETCH_CONCURRENCY=4
FEICHI_SOURCE_STALE_SECONDS=120
FEICHI_STALE_REISSUE_ENABLED=true
FEICHI_BACKFILL_ENABLED=false
HEALTH_ADDR=127.0.0.1:20219

View File

@@ -0,0 +1,28 @@
[Unit]
Description=Lingniu Feichi HTTP to GB/T 32960 Bridge
Documentation=file:/opt/lingniu-go-native/current/docs/ops/feichi-bridge.md
After=network-online.target docker.service lingniu-go-gateway.service
Wants=network-online.target
Requires=docker.service
[Service]
Type=simple
WorkingDirectory=/opt/lingniu-go-native/current
EnvironmentFile=/opt/lingniu-go-native/env/base.env
EnvironmentFile=/opt/lingniu-go-native/env/feichi-bridge.env
Environment=GOMEMLIMIT=256MiB
ExecStart=/opt/lingniu-go-native/current/feichi-bridge
Restart=always
RestartSec=5
LimitNOFILE=65536
MemoryLimit=384M
KillSignal=SIGTERM
TimeoutStopSec=30
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWriteDirectories=/var/lib/lingniu-feichi-bridge
[Install]
WantedBy=multi-user.target