Stop automatic AI retry on failed posts
This commit is contained in:
+6
-1
@@ -786,10 +786,15 @@ AI получает JSON-массив:
|
|||||||
|
|
||||||
- `status='storage_ready'`
|
- `status='storage_ready'`
|
||||||
- `qualification_status='accepted'`
|
- `qualification_status='accepted'`
|
||||||
- `rewrite_status is NULL/pending/failed`
|
- `rewrite_status is NULL/pending`
|
||||||
|
|
||||||
И переписать их в короткую публикацию для Telegram/VK-канала.
|
И переписать их в короткую публикацию для Telegram/VK-канала.
|
||||||
|
|
||||||
|
Важно: автоматический AI writer не должен забирать `rewrite_status='failed'`.
|
||||||
|
2026-07-30 один пост (`id=2348`) был платно отправлен в Sonnet 4.6 983 раза,
|
||||||
|
потому что failed снова попадал в claim и цикл сразу продолжал работу. Failed
|
||||||
|
посты нужно возвращать в `pending` только явным ручным действием.
|
||||||
|
|
||||||
### 10.2. Вход в модель
|
### 10.2. Вход в модель
|
||||||
|
|
||||||
AI получает JSON-объект:
|
AI получает JSON-объект:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# N8 Parser: current state
|
# N8 Parser: current state
|
||||||
|
|
||||||
Last updated: 2026-07-29
|
Last updated: 2026-07-30
|
||||||
|
|
||||||
This file is the short handoff state for future Codex threads. Read this first before touching the project, so the whole chat history does not need to be carried forward.
|
This file is the short handoff state for future Codex threads. Read this first before touching the project, so the whole chat history does not need to be carried forward.
|
||||||
|
|
||||||
@@ -102,6 +102,7 @@ As of 2026-07-29:
|
|||||||
|
|
||||||
- Current live writer model setting checked on 2026-07-29: `ai_writer_model = anthropic/claude-sonnet-4-6`.
|
- Current live writer model setting checked on 2026-07-29: `ai_writer_model = anthropic/claude-sonnet-4-6`.
|
||||||
- Sonnet 4.6 can return `rewrites` as a JSON string instead of a list. `validate_rewrites()` in `src/vk_parser_app/workers/ai_writer.py` now parses stringified `rewrites` before validation.
|
- Sonnet 4.6 can return `rewrites` as a JSON string instead of a list. `validate_rewrites()` in `src/vk_parser_app/workers/ai_writer.py` now parses stringified `rewrites` before validation.
|
||||||
|
- 2026-07-30 incident: post `2348` was retried 983 times by AI writer because automatic claim included `rewrite_status='failed'`; estimated internal cost was `$16.465977`. Live setting `ai_writer_enabled` was switched to `false` to stop spend. Automatic AI qualifier/writer claims must not include `failed`; failed posts require an explicit manual reset to `pending`.
|
||||||
|
|
||||||
## Prompt Architecture
|
## Prompt Architecture
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ class AIQualifierWorker:
|
|||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
FROM raw_posts
|
FROM raw_posts
|
||||||
WHERE status='storage_ready'
|
WHERE status='storage_ready'
|
||||||
AND COALESCE(qualification_status, 'pending') IN ('pending', 'failed')
|
AND COALESCE(qualification_status, 'pending') = 'pending'
|
||||||
AND EXISTS (
|
AND EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM raw_post_media m
|
FROM raw_post_media m
|
||||||
@@ -178,7 +178,7 @@ class AIQualifierWorker:
|
|||||||
SELECT id
|
SELECT id
|
||||||
FROM raw_posts
|
FROM raw_posts
|
||||||
WHERE status='storage_ready'
|
WHERE status='storage_ready'
|
||||||
AND COALESCE(qualification_status, 'pending') IN ('pending', 'failed')
|
AND COALESCE(qualification_status, 'pending') = 'pending'
|
||||||
AND EXISTS (
|
AND EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM raw_post_media m
|
FROM raw_post_media m
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ class AIWriterWorker:
|
|||||||
FROM raw_posts
|
FROM raw_posts
|
||||||
WHERE status='storage_ready'
|
WHERE status='storage_ready'
|
||||||
AND qualification_status='accepted'
|
AND qualification_status='accepted'
|
||||||
AND COALESCE(rewrite_status, 'pending') IN ('pending', 'failed')
|
AND COALESCE(rewrite_status, 'pending') = 'pending'
|
||||||
AND EXISTS (
|
AND EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM raw_post_media m
|
FROM raw_post_media m
|
||||||
@@ -263,7 +263,7 @@ class AIWriterWorker:
|
|||||||
FROM raw_posts
|
FROM raw_posts
|
||||||
WHERE status='storage_ready'
|
WHERE status='storage_ready'
|
||||||
AND qualification_status='accepted'
|
AND qualification_status='accepted'
|
||||||
AND COALESCE(rewrite_status, 'pending') IN ('pending', 'failed')
|
AND COALESCE(rewrite_status, 'pending') = 'pending'
|
||||||
AND EXISTS (
|
AND EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM raw_post_media m
|
FROM raw_post_media m
|
||||||
|
|||||||
Reference in New Issue
Block a user