Public Access
maj auto 1
This commit is contained in:
1 parent
e651049b4e
commit
db2b137d6b
9 files changed
+479
-410
No files matched your search
@@ -1,5 +1,6 @@
|
||||
from fasthtml.common import *
|
||||
from modules.database import load_history
|
||||
from modules.paypal import render_paypal_donation_widget
|
||||
|
||||
def render_user_msg(text):
|
||||
return Div(P(text, style="margin:0; font-weight:bold; white-space: pre-wrap;"), cls="user-bubble")
|
||||
@@ -11,7 +12,6 @@ def render_ai_msg(text, intention, nom_fournisseur, nom_modele, couleur):
|
||||
Span(f"🧠 {nom_modele}", style=f"margin-right: 10px; color:{couleur}; font-weight:bold; font-size:0.8em;"),
|
||||
style="border-bottom: 1px solid #333; padding-bottom: 10px; margin-bottom: 15px; display: flex; flex-wrap: wrap; gap: 5px;"
|
||||
)
|
||||
|
||||
actions = Div(
|
||||
Button("📄 PDF", onclick="downloadResponsePDF(this)", cls="msg-action-btn", title="Télécharger en PDF"),
|
||||
Button("📘 DOC", onclick="downloadResponseDOC(this)", cls="msg-action-btn", title="Télécharger en Word"),
|
||||
@@ -21,7 +21,6 @@ def render_ai_msg(text, intention, nom_fournisseur, nom_modele, couleur):
|
||||
Button("📧 Email", onclick="shareEmail(this)", cls="msg-action-btn", title="Envoyer par Email"),
|
||||
cls="msg-actions"
|
||||
)
|
||||
|
||||
return Div(
|
||||
encart_info,
|
||||
Div(text, cls="markdown-raw", style="display:none;"),
|
||||
@@ -33,7 +32,6 @@ def render_ai_msg(text, intention, nom_fournisseur, nom_modele, couleur):
|
||||
def render_sidebar():
|
||||
history = load_history()
|
||||
sorted_chats = sorted(history.items(), key=lambda x: (not x[1].get('pinned', False), -x[1].get('timestamp', 0)))
|
||||
|
||||
items = []
|
||||
for chat_id, data in sorted_chats:
|
||||
pin_icon = "📌" if data.get('pinned', False) else "📍"
|
||||
@@ -47,3 +45,59 @@ def render_sidebar():
|
||||
)
|
||||
)
|
||||
return Div(*items, id="sidebar-content", cls="sidebar-history", hx_swap_oob="true")
|
||||
|
||||
def render_main_page(chat_id):
|
||||
history = load_history()
|
||||
messages_ui = []
|
||||
if chat_id in history:
|
||||
for msg in history[chat_id].get('messages', []):
|
||||
if msg['role'] == 'user':
|
||||
messages_ui.append(render_user_msg(msg['content']))
|
||||
else:
|
||||
messages_ui.append(render_ai_msg(msg['content'], msg.get('intention', ''), msg.get('fournisseur', ''), msg.get('modele', ''), msg.get('couleur', '#333')))
|
||||
if messages_ui:
|
||||
messages_ui.append(Script("setTimeout(renderMarkdown, 150);"))
|
||||
|
||||
return Title("Aethas38 - Core"), Body(
|
||||
Div(
|
||||
Div(
|
||||
# L'image est appelée depuis le dossier local "Logo" monté dans FastHTML
|
||||
Img(src="/Logo/logo_aethas.svg", style="max-width: 80%; height: auto; display: block; margin: 0 auto 20px;"),
|
||||
Div(
|
||||
A("+ Nouvelle discussion", href="/new_chat", cls="new-chat-btn"),
|
||||
A("💾 Exporter JSON", href="/export_json", target="_blank", cls="export-btn"),
|
||||
render_paypal_donation_widget(),
|
||||
cls="nav-buttons"
|
||||
),
|
||||
cls="sidebar-top"
|
||||
),
|
||||
render_sidebar(),
|
||||
Div(P("👤 Admin (Xavier)", style="color: #aaa; margin: 0; font-size: 0.9em;"), cls="sidebar-footer"),
|
||||
cls="sidebar"
|
||||
),
|
||||
Div(
|
||||
Div(*messages_ui, id="chat-history", cls="chat-container"),
|
||||
Div(Div(Div(cls="tech-spinner"), Span("Aethas Core analyse la requête..."), cls="tech-loader-container"), id="global-loader", cls="htmx-indicator", style="max-width: 1000px; margin: 0 auto; width: 100%; padding: 0 20px; box-sizing: border-box; padding-bottom: 120px;"),
|
||||
Div(
|
||||
Form(
|
||||
Input(type="hidden", name="chat_id", value=chat_id),
|
||||
Div(
|
||||
Div(id="file-preview-list"),
|
||||
Div(
|
||||
Label("+", _for="file-upload", cls="file-btn"),
|
||||
Input(type="file", name="files", id="file-upload", multiple=True, style="display:none;", onchange="handleFileSelection(this)"),
|
||||
Textarea(name="prompt", id="prompt-input", placeholder="Requête, lien ou glissez vos fichiers ici...", cls="input-field", rows="1", oninput="autoResize(this)"),
|
||||
Button("↑", type="submit", cls="btn-submit"),
|
||||
cls="input-row"
|
||||
),
|
||||
cls="input-container-box"
|
||||
),
|
||||
hx_post="/chat", hx_target="#chat-history", hx_swap="beforeend", hx_indicator="#global-loader",
|
||||
hx_on__after_request="this.reset(); document.getElementById('file-preview-list').innerHTML=''; document.getElementById('prompt-input').style.height='36px';",
|
||||
enctype="multipart/form-data", style="width: 100%; display: flex; justify-content: center;"
|
||||
),
|
||||
cls="input-area"
|
||||
),
|
||||
cls="main-content"
|
||||
)
|
||||
)
|
||||
Reference in new issue
Block a user