feat(diarization-ui): render markdown in document preview
This commit is contained in:
11
app.py
11
app.py
@@ -4,6 +4,7 @@ import sqlite3
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import markdown as md
|
||||||
import requests
|
import requests
|
||||||
from fastapi import FastAPI, File, Form, HTTPException, UploadFile
|
from fastapi import FastAPI, File, Form, HTTPException, UploadFile
|
||||||
from fastapi.responses import HTMLResponse, PlainTextResponse, Response
|
from fastapi.responses import HTMLResponse, PlainTextResponse, Response
|
||||||
@@ -116,6 +117,13 @@ button{{background:linear-gradient(90deg,var(--acc),var(--acc2));color:#001018;b
|
|||||||
button:hover{{filter:brightness(1.05)}}
|
button:hover{{filter:brightness(1.05)}}
|
||||||
textarea{{width:100%;min-height:150px}}
|
textarea{{width:100%;min-height:150px}}
|
||||||
pre{{white-space:pre-wrap;background:#020617;color:#86efac;padding:12px;border-radius:12px;border:1px solid #1e293b}}
|
pre{{white-space:pre-wrap;background:#020617;color:#86efac;padding:12px;border-radius:12px;border:1px solid #1e293b}}
|
||||||
|
.mdview{{line-height:1.55}}
|
||||||
|
.mdview h1,.mdview h2,.mdview h3{{margin:16px 0 8px}}
|
||||||
|
.mdview p{{margin:10px 0}}
|
||||||
|
.mdview ul,.mdview ol{{padding-left:22px}}
|
||||||
|
.mdview code{{background:#0b1222;padding:2px 5px;border-radius:6px}}
|
||||||
|
.mdview pre code{{display:block;padding:10px}}
|
||||||
|
.mdview blockquote{{border-left:3px solid #334155;padding-left:10px;color:#cbd5e1}}
|
||||||
.row{{display:flex;gap:8px;flex-wrap:wrap;align-items:center}}
|
.row{{display:flex;gap:8px;flex-wrap:wrap;align-items:center}}
|
||||||
small{{color:var(--muted)}}
|
small{{color:var(--muted)}}
|
||||||
.hint{{color:var(--muted);font-size:13px}}
|
.hint{{color:var(--muted);font-size:13px}}
|
||||||
@@ -344,11 +352,12 @@ def view_document(doc_id: int):
|
|||||||
if not d:
|
if not d:
|
||||||
raise HTTPException(404, "not found")
|
raise HTTPException(404, "not found")
|
||||||
|
|
||||||
|
rendered = md.markdown(d["content_md"] or "", extensions=["fenced_code", "tables", "nl2br"])
|
||||||
body = f"""
|
body = f"""
|
||||||
<h2>Dokument #{d['id']} – {d['title']}</h2>
|
<h2>Dokument #{d['id']} – {d['title']}</h2>
|
||||||
<p><small>Projekt: {d['project']} · Typ: {d['kind']} · {d['created_at']}</small></p>
|
<p><small>Projekt: {d['project']} · Typ: {d['kind']} · {d['created_at']}</small></p>
|
||||||
<p><a href='/document/{doc_id}/download.md'>Download .md</a></p>
|
<p><a href='/document/{doc_id}/download.md'>Download .md</a></p>
|
||||||
<pre>{(d['content_md'] or '').replace('<','<')}</pre>
|
<div class='card mdview'>{rendered}</div>
|
||||||
"""
|
"""
|
||||||
return layout("Dokument", body)
|
return layout("Dokument", body)
|
||||||
|
|
||||||
|
|||||||
@@ -2,3 +2,4 @@ fastapi==0.115.6
|
|||||||
uvicorn[standard]==0.32.1
|
uvicorn[standard]==0.32.1
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
python-multipart==0.0.12
|
python-multipart==0.0.12
|
||||||
|
markdown==3.7
|
||||||
|
|||||||
Reference in New Issue
Block a user