mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
fix(candidates): только внешние new-посты в списке кандидатов
- _fetch_candidates: в WHERE всегда is_own=0 AND status='new' → свои посты канала @dedinit (is_own=1, backfill) и published/rejected больше не показываются как кандидаты - counts табов: считаются по внешним постам (не по жёсткому where), чтобы табы статусов показывали реальные счётчики - change: candidates-only-external-new (skip_specs)
This commit is contained in:
+12
-3
@@ -150,10 +150,18 @@ def _fetch_candidates(conn, direction: str, status: str, own: str, q: str, group
|
||||
flat — сгруппированный список; counts — {статус: число} для фильтра-табов."""
|
||||
where = []
|
||||
params = []
|
||||
# Кандидаты = только внешние (is_own=0) посты в статусе new.
|
||||
# Свои посты канала (is_own=1) не являются кандидатами — это контент
|
||||
# собственного канала, управляется отдельно (fan-out); published/rejected —
|
||||
# уже решённые посты, им не место в очереди кандидатов.
|
||||
where.append("p.is_own=0")
|
||||
where.append("p.status='new'")
|
||||
if direction:
|
||||
where.append("p.direction=?")
|
||||
params.append(direction)
|
||||
if status:
|
||||
if status and status != "new":
|
||||
# Явный фильтр статуса (rejected/published) — просмотр решённых;
|
||||
# для 'new' условие уже добавлено выше.
|
||||
where.append("p.status=?")
|
||||
params.append(status)
|
||||
if own in ("1", "0"):
|
||||
@@ -168,9 +176,10 @@ def _fetch_candidates(conn, direction: str, status: str, own: str, q: str, group
|
||||
FROM posts p LEFT JOIN sources s ON s.id=p.source_id
|
||||
{w}"""
|
||||
rows = conn.execute(sql + " ORDER BY COALESCE(p.published_at,p.fetched_at) DESC LIMIT ?", params + [limit]).fetchall()
|
||||
# counts для табов статуса: сколько кандидатов (внешних new) и сколько
|
||||
# решённых (rejected/published) доступно для просмотра.
|
||||
counts = {r["status"]: r["c"] for r in conn.execute(
|
||||
"SELECT p.status, COUNT(*) c FROM posts p" + (" WHERE " + " AND ".join(where) if where else "") + " GROUP BY p.status",
|
||||
params,
|
||||
"SELECT p.status, COUNT(*) c FROM posts p WHERE p.is_own=0 GROUP BY p.status",
|
||||
)}
|
||||
counts[""] = sum(counts.values())
|
||||
# статус по умолчанию для табов: если в выборке нет ничего "нового" — смотрим rejected
|
||||
|
||||
Reference in New Issue
Block a user