Files

52 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Design: rewrite-as-author
## 1. candidates.html (блок пересказа)
```diff
{% if selected.rewritten_text %}
<div class="mt-2">
- <label ...>✍️ Черновик пересказа (редактируйте и копируйте):</label>
- <textarea class="form-control form-control-sm" rows="4" readonly>{{ selected.rewritten_text }}</textarea>
+ <label ...>✍️ Пересказ (редактируйте и сохраните — он пойдёт в канал от вашего имени):</label>
+ <form method="post" action="/posts/{{ selected.id }}/rewrite-save" class="row g-1">
+ {{ hid }}
+ <textarea class="form-control form-control-sm" name="rewritten_text" rows="5">{{ selected.rewritten_text }}</textarea>
+ <div class="col-auto mt-1"><button class="btn btn-sm btn-outline-primary" type="submit">💾 Сохранить пересказ</button></div>
+ </form>
</div>
{% endif %}
```
## 2. app.py — новый эндпоинт
```python
@app.post("/posts/{post_id}/rewrite-save")
async def post_rewrite_save(post_id, request, group_by="", direction="", own="", q=""):
_require_auth(request)
conn = _db()
p = conn.execute("SELECT id FROM posts WHERE id=?", (post_id,)).fetchone()
if not p: return RedirectResponse(..., status_code=302)
form = await request.form()
draft = str(form.get("rewritten_text") or "").strip()
conn.execute("UPDATE posts SET rewritten_text=? WHERE id=?", (draft or None, post_id))
conn.commit(); conn.close()
return RedirectResponse(..., status_code=302)
```
## 3. card.py — тело и подпись
```python
body = (post.get("rewritten_text") or post.get("text") or "").strip()
rewritten = bool((post.get("rewritten_text") or "").strip())
...
if rewritten:
tail = "✍️ Дед в АйТи (@dedinit)" + (f" · Источник: {orig}" if orig else "")
elif is_own: ... # как было
elif orig: tail = f"🔗 Оригинал: {orig}"
```
## Верификация
- `py_compile web/app.py publisher/card.py`
- Реальный кандидат с rewritten_text (id=4): GET /candidates?selected=4 → textarea без readonly, есть «Сохранить пересказ».
- `make_card` (read-only БД) с постом id=4 → текст начинается с пересказа, содержит «Дед в АйТи», не содержит «🔗 Оригинал»; media сохраняется (если есть).