Diagrams是一个云系统架构原型图制作库,它的诞生是为了在没有任何设计工具的情况下对新的系统架构进行原型设计。您还可以描述或可视化现有系统架构,Diagram as Code允许您跟踪任何版本控制系统中的架构图更改。相比于在 UI 上面对各种图标进行拖拽和调整,这种方式更符合我们程序员的使用习惯。
Extend the media post-processing subsystem (APP-101) to video, sharing
the media_process_task table via the media_type discriminator but running
on its own dedicated queue so a long transcode never blocks image work.
- Upload hook (enqueueMediaProcessIfEligible) now branches by mime: image/*
and video/* each gate on their own master switch + per-user opt-in +
min_size, then Enqueue with the matching MediaType.
- Cron runs two independent lanes (enqueueMediaProcessLane): images ->
MediaProcessQueue, videos -> MediaVideoQueue.
- New dedicated MediaVideoQueue (dependency.go), MediaCompressVideoTaskType,
started in application.go, live-reloaded via mediaVideoQueuePostProcessor,
metric in GetQueueMetrics.
- MediaCompressTask.compress branches by media_type; new compressVideo builds
the ffmpeg command (codec/CRF/preset, videoScaleFilter cap without upscale,
audio, -threads, optional nice on non-Windows); normalizeVideoContainer
defaults to "keep" so the file is not renamed.
- Settings block media_compress_video_* + MediaProcessVideo(ctx) getter;
engine is always ffmpeg for video. cpu_num virtual key in GetSetting feeds
the frontend threads selector. AutoCompressVideos user opt-in + Codec added
to the JSON props (no schema/migration/BackendVersion bump).
- Tests: TestMediaProcessEnqueueVideo (discriminator isolation),
TestNormalizeVideoContainer + TestVideoScaleFilter (ffmpeg arg building).
Bumps the assets submodule pointer to the APP-103 frontend.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>