Edge 端新增 3 个端点:
- POST /api/edge/video/chunk: 接收单块,保存到 task_{id}/chunk_{index:04d}
- GET /api/edge/video/chunks: 查询已上传分块(断点续传)
- POST /api/edge/video/assemble: 合并全部分块入队
NAS Dispatcher 重写:
- 大文件(>50MB)自动分块上传(20MB/块)
- 每块最多重试 3 次(分块级重试,非整文件级)
- 上传前查询已上传分块,跳过已有的(断点续传)
- 全部上传后调 /assemble 合并入队
- 小文件(<=50MB)走直接上传路径
- max_retries 3→5(文件级重试次数)
- scheduler 切回生产目录
解决: 360MB 视频跨公网单次上传超时/断连问题
50 lines
1.5 KiB
YAML
50 lines
1.5 KiB
YAML
# FAM-Core 配置文件 (NAS 端) - 实际部署配置
|
||
# 注: Tailscale 防火墙待修复,当前 edge_url 使用 Oracle 公网 IP
|
||
# 异步队列模式 + 分块断点续传:
|
||
# 小文件(<=50MB): 直接上传 /enqueue
|
||
# 大文件(>50MB): 分块(20MB/块)上传 /chunk → /assemble 合并入队
|
||
# → NAS Poller 定期从 /api/edge/results 拉取结果写库
|
||
# Ollama 未对外暴露,chat_handler 通过 FAM-Edge 代理
|
||
|
||
server:
|
||
host: "0.0.0.0"
|
||
port: 8000
|
||
|
||
database:
|
||
host: "127.0.0.1"
|
||
port: 3306
|
||
user: "root"
|
||
password: "iLoveJava5!"
|
||
database: "sentinel_home_ai"
|
||
unix_socket: "/run/mysqld/mysqld10.sock"
|
||
|
||
scheduler:
|
||
scan_interval: 60
|
||
# 正式目录 /volume1/surveillance/Generic_ONVIF-001
|
||
video_dir: "/volume1/surveillance/Generic_ONVIF-001"
|
||
video_extensions: [".mp4", ".mkv", ".avi"]
|
||
file_stable_seconds: 60
|
||
camera_name: "客厅"
|
||
|
||
dispatcher:
|
||
poll_interval: 30
|
||
edge_url: "http://129.146.203.203:5000/api/edge/video/enqueue"
|
||
max_retries: 5 # 文件级重试次数(分块级重试另计,每块3次)
|
||
stale_timeout: 600 # PROCESSING 超时回收(10分钟)
|
||
|
||
poller:
|
||
poll_interval: 30
|
||
results_url: "http://129.146.203.203:5000/api/edge/results"
|
||
batch_size: 10
|
||
timeout: 30
|
||
|
||
video_server:
|
||
base_url: "http://127.0.0.1:8000/media"
|
||
token: "sentinel-media-2026"
|
||
video_dir: "/volume1/surveillance"
|
||
|
||
chat_handler:
|
||
# 智能问答统一走 FAM-Edge 编排端点(Gemini → NVIDIA → 本地 Ollama 兜底)
|
||
qa_url: "http://129.146.203.203:5000/api/edge/chat/ask"
|
||
timeout: 120
|