forked from admin/zeropost-engine
feat: post drafts system — batch generation + daily auto-drafts
DB: post_drafts(channel_id, topic, text, image_url, status), channels.auto_draft_*
Engine:
services/draftService.js: generateOneDraft, generateBatch, generateDailyDrafts,
approveDraft(→scheduled_post), rejectDraft, updateDraft, listDrafts
routes/drafts.js: GET/PATCH/DELETE /api/drafts/:id, /approve, /reject
POST /api/channels/:channelId/drafts/generate?count=N (async, returns immediately)
index.js: cron каждые 30 мин → generateDailyDrafts() для каналов с auto_draft_enabled
channels.js: updateChannel сохраняет auto_draft_enabled/count/time
This commit is contained in:
@@ -106,7 +106,8 @@ app.use('/api/metrics', metricsRoutes);
|
||||
app.use('/api/usage', usageRoutes);
|
||||
app.use('/api/billing', require('./src/routes/billing'));
|
||||
app.use('/api/channels', require('./src/routes/polls'));
|
||||
app.use('/api', inboxRoutes); // /inbox/:id, /inbox/:id/reply, /tg-webhook/:channelId
|
||||
app.use('/api', inboxRoutes);
|
||||
app.use('/api', require('./src/routes/drafts'));
|
||||
|
||||
app.get('/health', (req, res) => {
|
||||
res.json({ ok: true, service: 'zeropost-engine', time: new Date() });
|
||||
@@ -120,6 +121,17 @@ const start = async () => {
|
||||
// Автоматический ретрай SVG-заглушек
|
||||
require('./src/services/coverRetry').start();
|
||||
|
||||
// Ежедневные авто-черновики (каждые 30 мин проверяем каналы с auto_draft_enabled)
|
||||
const draftSvc = require('./src/services/draftService');
|
||||
setInterval(async () => {
|
||||
try {
|
||||
const n = await draftSvc.generateDailyDrafts();
|
||||
if (n > 0) console.log(`[Drafts] Daily auto-drafts: generated for ${n} channels`);
|
||||
} catch (err) { console.error('[Drafts] daily error:', err.message); }
|
||||
}, 30 * 60 * 1000);
|
||||
// Первый запуск через 5 мин после старта
|
||||
setTimeout(() => draftSvc.generateDailyDrafts().catch(() => {}), 5 * 60 * 1000);
|
||||
|
||||
app.listen(config.port, () => {
|
||||
console.log(`[Engine] Running on port ${config.port}`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user