릴리스: v1.3.5 이미지 최적화 대시보드 기간 필터와 실사용 통계
This commit is contained in:
@@ -34,6 +34,7 @@ const {
|
||||
deleteImageAssets,
|
||||
getImageAssetStats,
|
||||
listRecentImageOptimizationJobs,
|
||||
clearImageOptimizationJobs,
|
||||
} = require('../db')
|
||||
const { requireAdmin } = require('../middleware/auth')
|
||||
const { createMemoryUpload, writeOptimizedImage, getImageOptimizationQueueState } = require('../lib/image-storage')
|
||||
@@ -251,17 +252,37 @@ router.post('/image-assets/cleanup', requireAdmin, async (req, res) => {
|
||||
})
|
||||
|
||||
router.get('/image-assets/stats', requireAdmin, async (req, res) => {
|
||||
const schema = z.object({
|
||||
month: z.string().regex(/^\d{4}-\d{2}$/).optional(),
|
||||
limit: z.coerce.number().int().min(1).max(24).optional().default(12),
|
||||
})
|
||||
const parsed = schema.safeParse(req.query)
|
||||
if (!parsed.success) return res.status(400).json({ error: 'bad_request' })
|
||||
|
||||
const filters = { month: parsed.data.month }
|
||||
const [stats, recentJobs] = await Promise.all([
|
||||
getImageAssetStats(),
|
||||
listRecentImageOptimizationJobs(6),
|
||||
getImageAssetStats(filters),
|
||||
listRecentImageOptimizationJobs(parsed.data.limit, filters),
|
||||
])
|
||||
res.json({
|
||||
stats,
|
||||
filters,
|
||||
queue: getImageOptimizationQueueState(),
|
||||
recentJobs,
|
||||
})
|
||||
})
|
||||
|
||||
router.post('/image-assets/stats/reset', requireAdmin, async (req, res) => {
|
||||
const schema = z.object({
|
||||
month: z.string().regex(/^\d{4}-\d{2}$/).optional().nullable(),
|
||||
})
|
||||
const parsed = schema.safeParse(req.body || {})
|
||||
if (!parsed.success) return res.status(400).json({ error: 'bad_request' })
|
||||
|
||||
const deletedCount = await clearImageOptimizationJobs({ month: parsed.data.month || undefined })
|
||||
res.json({ deletedCount })
|
||||
})
|
||||
|
||||
async function removeCustomItemFiles(items) {
|
||||
await Promise.all(
|
||||
items.map(async (item) => {
|
||||
|
||||
Reference in New Issue
Block a user