Files
fa053529af 图片请求统一异步处理 (#11)
* fix:未导入unicode包

* feat:图片异步转换

* feat:添加R2支持

* feat:新增文件管理

* fix:修复错误信息双写导致响应异常

* chore:渠道列表中添加快捷启用停止按钮

* fix:修复模型异常终端导致报错的问题

* improve:优化无可用渠道的日志打印,减少日志污染

* fix:在线体验出错缺少提示信息

* fix:修复日志库问题,只有请求日志保存到独立的库中

* feat:新增阿里图片模型说明文档

* fix:阿里千问图片生成

* fix:修复图片异步控制无效问题

* improve:优化文件展示,支持缩略图查看

* feat:实时监控中添加图片异步转换池状态信息

* improve:优化在线体验页面布局

* fix:修复异步任务状态显示异常问题

* feat:图片异步任务停止时等待任务完成后再退出程序

* chore:调整存储路径

---------

Co-authored-by: qian <wuchengqian5@163.com>
Co-authored-by: chengqian <wuchengqian@kkidc.com>
2026-07-18 00:26:13 +08:00

36 lines
1.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package monitor
// SyncImagePoolSnapshot 是同步图片「异步化」worker 池的一次性状态快照。
// 由 internal/logic/task 在启动 worker 池时通过 RegisterSyncImagePoolProvider 注入取数函数,
// monitor 反向持有该函数即可,避免 monitor → task 的导入环(task 已 import monitor)。
type SyncImagePoolSnapshot struct {
WorkerTotal int `json:"worker_total"` // 池大小(固定)
WorkerBusy int `json:"worker_busy"` // 忙碌 worker 数(瞬时)
QueueDepth int `json:"queue_depth"` // 当前排队深度
QueueCap int `json:"queue_cap"` // 队列容量
Enqueued int64 `json:"enqueued"` // 累计入队成功
Rejected int64 `json:"rejected"` // 累计拒绝(队列满 → 429 退款)
Succeeded int64 `json:"succeeded"` // 累计 worker 处理成功
Failed int64 `json:"failed"` // 累计 worker 处理失败
ChannelInflight map[int64]int `json:"channel_inflight"` // 每渠道在途数(层② per-channel 容量)
Enabled bool `json:"enabled"` // 池是否已启动(未注册 provider 时 false)
}
// syncImagePoolProvider 由 task 包在启动 worker 池时注册。
var syncImagePoolProvider func() SyncImagePoolSnapshot
// RegisterSyncImagePoolProvider 注册同步图片 worker 池状态取数函数。
func RegisterSyncImagePoolProvider(f func() SyncImagePoolSnapshot) {
syncImagePoolProvider = f
}
// GetSyncImagePoolSnapshot 返回当前 worker 池状态;未注册(池未启动)时返回 Enabled=false。
func GetSyncImagePoolSnapshot() SyncImagePoolSnapshot {
if syncImagePoolProvider == nil {
return SyncImagePoolSnapshot{Enabled: false}
}
s := syncImagePoolProvider()
s.Enabled = true
return s
}