feat(feedback): דף מרכזי /feedback להערות יו"ר + תיקון קישורי מרכז אישורים
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 37s

- דף /feedback חדש: מאגד את כל הערות chair_feedback מכל התיקים, סינון
  טרם-יושמו/הכל + לפי קטגוריה, כפתור "סמן כיושם" לכל הערה
- מרכז אישורים: כרטיס "הערות יו"ר" קישר ל-/ (חסר תועלת) → עכשיו /feedback
- מרכז אישורים: כרטיס "תיקים שנכשלו ב-QA" — כל תיק במדגם קליקבילי לדף
  התיק, והכרטיס מקשר ישירות לתיק כשיש רק אחד
- ApprovalSample.href אופציונלי; פריטי מדגם נהפכים ל-Link כשיש href
- ניווט: הוספת "הערות יו"ר" לקבוצת work ב-app-shell

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 12:38:04 +00:00
parent 59ff4e31cf
commit e3e3da09e5
5 changed files with 282 additions and 12 deletions

View File

@@ -5058,17 +5058,21 @@ async def api_chair_pending():
"key": "chair_feedback", "label": "הערות יו\"ר שטרם יושמו",
"description": "הערות שרשמת על טיוטות וטרם הופקו מהן לקחים/תיקונים.",
"count": cf_count, "severity": "medium" if cf_count else "ok",
"href": "/", "sample": [{"text": (r["feedback_text"] or "")[:120], "source": r["case_number"]} for r in cf_sample],
"href": "/feedback", "sample": [{"text": (r["feedback_text"] or "")[:120], "source": r["case_number"]} for r in cf_sample],
})
# 4) תיקים שנכשלו ב-QA
qa_rows = await conn.fetch(
"SELECT case_number, coalesce(title,'') AS title FROM cases WHERE status='qa_failed' ORDER BY updated_at DESC")
# Single failed case → link straight to it; multiple → home dashboard
# (the donut/table surface them). Each sample row links to its own case.
qa_href = f"/cases/{qa_rows[0]['case_number']}" if len(qa_rows) == 1 else "/"
categories.append({
"key": "qa_failed", "label": "תיקים שנכשלו ב-QA",
"description": "תיקים שבדיקת-האיכות חסמה — דורשים התייחסותך לפני המשך.",
"count": len(qa_rows), "severity": "high" if qa_rows else "ok", "href": "/",
"sample": [{"text": r["case_number"], "source": r["title"]} for r in qa_rows[:5]],
"count": len(qa_rows), "severity": "high" if qa_rows else "ok", "href": qa_href,
"sample": [{"text": r["case_number"], "source": r["title"],
"href": f"/cases/{r['case_number']}"} for r in qa_rows[:5]],
})
total_pending = sum(c["count"] for c in categories)