Fix: save_block_content now writes draft file + writer must update status

Two issues that caused QA agent to fail:
1. save_block_content saved to DB only — now also rebuilds drafts/decision.md
2. legal-writer.md now has explicit mandatory step: case_update(status="drafted")

Without these, workflow_status reports has_draft=false and QA can't run.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 15:25:53 +00:00
parent 85880c482e
commit 4df2040a40
2 changed files with 44 additions and 4 deletions

View File

@@ -81,12 +81,21 @@ tools:
3. שמור (`save_block_content`)
4. דווח התקדמות ל-Paperclip
### שלב 3: דיווח — חובה!
פרסם comment ב-Paperclip עם:
### שלב 3: סיום — חובה!
**אחרי שכל הבלוקים נשמרו, חובה לבצע את שתי הפעולות הבאות:**
1. **עדכן סטטוס התיק ל-drafted:**
```
case_update(case_number, status="drafted")
```
2. **פרסם comment ב-Paperclip עם:**
- אילו בלוקים נכתבו
- ספירת מילים לכל בלוק
- יחסי משקל (% מהמסמך)
- עדכן סטטוס ל-drafted
**אם לא תעדכן סטטוס ל-drafted — בודק האיכות לא יוכל לרוץ!**
## בלוק י — דיון (הבלוק החשוב ביותר)

View File

@@ -685,7 +685,10 @@ async def get_block_context(case_id: UUID, block_id: str, instructions: str = ""
async def save_block_content(case_id: UUID, block_id: str, content: str) -> dict:
"""Save block content written by Claude Code (or any external writer)."""
"""Save block content written by Claude Code (or any external writer).
Saves to DB and also writes/updates the draft file on disk.
"""
if block_id not in BLOCK_CONFIG:
raise ValueError(f"Unknown block: {block_id}")
@@ -699,9 +702,37 @@ async def save_block_content(case_id: UUID, block_id: str, content: str) -> dict
result["model_used"] = "claude-code"
await store_block(UUID(decision["id"]), result)
# Also write/update the draft file on disk
await _update_draft_file(case_id, UUID(decision["id"]))
return result
async def _update_draft_file(case_id: UUID, decision_id: UUID) -> None:
"""Rebuild drafts/decision.md from all blocks in DB."""
from pathlib import Path
case = await db.get_case(case_id)
if not case:
return
case_dir = config.find_case_dir(case["case_number"])
draft_dir = case_dir / "drafts"
draft_dir.mkdir(parents=True, exist_ok=True)
pool = await db.get_pool()
async with pool.acquire() as conn:
rows = await conn.fetch(
"SELECT content FROM decision_blocks WHERE decision_id = $1 AND content != '' ORDER BY block_index",
decision_id,
)
draft_path = draft_dir / "decision.md"
draft_path.write_text("\n\n".join(row["content"] for row in rows if row["content"]), encoding="utf-8")
logger.info("Draft file updated: %s (%d blocks)", draft_path, len(rows))
# ── Renumbering ───────────────────────────────────────────────────
async def renumber_all_blocks(decision_id: UUID) -> dict: