Добавлен экран информации о диалоге: шапка с кнопкой ⋯, окно с редактированием названия, отображением агента, даты создания/обновления, признака временности и кнопкой удаления.

This commit is contained in:
2026-09-29 10:35:19 +03:00
parent e9f3fe96fe
commit 7a9f60274b
10 changed files with 1260 additions and 115 deletions
+252 -89
View File
@@ -169,7 +169,7 @@
</div>
<div class="composer">
<div class="composer-row">
<div class="field">Сообщение агенту…</div>
<div class="composer-input">Сообщение агенту…</div>
<button class="mic" title="Голос">🎤</button>
<button class="send off" title="Отправить">➤</button>
</div>
@@ -253,92 +253,6 @@
</div>
</section>
<!-- ============ 5 · модалка нового диалога ============ -->
<section class="screen">
<div class="lbl"><b>5 · модалка нового диалога</b> выбор агента для нового диалога</div>
<div class="win" style="position:relative">
<section class="list">
<div class="l-head"><h1>Диалоги</h1></div>
<div class="chips">
<div class="chip on">Все чаты<b>3</b></div>
<div class="chip">Работа</div>
<div class="chip">Дом</div>
<button class="chip-act" title="Группы"><svg viewBox="0 0 24 24"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg></button>
</div>
<div class="q">🔍 Поиск…</div>
<div class="rows">
<div class="row">
<span class="strip" style="background:var(--a1)"></span>
<div class="ava" style="background:var(--a1)">С</div>
<div class="mid">
<div class="l1"><span class="n">agentik · рабочий</span><span class="t">14:22</span></div>
<div class="l2"><span class="p">Собрал отчёт, жду правок</span></div>
</div>
</div>
</div>
</section>
<main class="main">
<div class="empty">
<div class="big">💬</div>
<h3>Выберите диалог слева</h3>
<p>Или нажмите <b>+</b> в шапке списка, чтобы создать новый.</p>
</div>
</main>
<div class="scrim">
<div class="modal">
<h2>Новый диалог</h2>
<div class="sub">Выберите ассистента — он отвечает на «/agentik» на своём адресе</div>
<div class="body">
<div class="agent on">
<div class="sign" style="background:var(--a1)">С</div>
<div class="mid">
<div class="nm">Строитель</div>
<div class="ad">http://192.168.88.135:8080/agentik</div>
</div>
<div class="radio"></div>
</div>
<div class="agent">
<div class="sign" style="background:var(--a2)">К</div>
<div class="mid">
<div class="nm">Книги</div>
<div class="ad">http://192.168.76.199:8080/agentik</div>
</div>
<div class="radio"></div>
</div>
<div class="agent">
<div class="sign" style="background:var(--a3)">Р</div>
<div class="mid">
<div class="nm">Разбор логов <span class="bad">· не отвечает</span></div>
<div class="ad">http://192.168.10.42:8080/agentik</div>
</div>
<div class="radio"></div>
</div>
<div class="agent">
<div class="sign" style="background:var(--a4)">S</div>
<div class="mid">
<div class="nm">Solana-бэкенд</div>
<div class="ad">http://192.168.88.24:8080/agentik</div>
</div>
<div class="radio"></div>
</div>
<div class="agent">
<div class="sign" style="background:var(--a5)">Д</div>
<div class="mid">
<div class="nm">DevOps · деплой</div>
<div class="ad">http://192.168.5.10:8080/agentik</div>
</div>
<div class="radio"></div>
</div>
</div>
<div class="foot">
<button class="btn">Отмена</button>
<button class="btn prim">Создать →</button>
</div>
</div>
</div>
</div>
</section>
<!-- ============ 6 · управление группами ============ -->
<section class="screen">
<div class="lbl"><b>6 · управление группами</b> модалка со списком групп + добавить</div>
@@ -967,7 +881,7 @@
<div class="head-name">agentik · рабочий</div>
<div class="head-sub"><span class="dot">●</span> на связи</div>
</div>
<button class="icon-btn" title="Параметры диалога">⋯</button>
<button class="icon-btn" title="Параметры диалога"><svg viewBox="0 0 24 24"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg></button>
</header>
<div class="messages">
@@ -1040,7 +954,7 @@
<div class="avatar pic"></div>
<div class="ag-mid">
<div class="ag-name">Кот-ассистент</div>
<div class="ag-addr">http://192.168.88.24:8080/agentik</div>
<div class="ag-addr">http://192.168.24.8080:8080/agentik</div>
<div class="ag-state err"><span class="d"></span>не отвечает</div>
</div>
<div class="pick"></div>
@@ -1051,6 +965,20 @@
<span>Ассистент сейчас не отвечает. Диалог создать можно, но
сообщение не уйдёт, пока он не поднимется.</span>
</div>
<div class="field">
<label>Название</label>
<input type="text" value="" placeholder="как назвать диалог">
<div class="note">Можно оставить пустым — диалог покажется как «Без названия». Переименуете в ⋯ в шапке чата.</div>
</div>
<div class="checkbox-row on">
<div class="box"></div>
<div class="mid">
<div class="lbl">Временный диалог</div>
<div class="desc">История не сохраняется на сервере. Подходит для коротких проверок и отладки.</div>
</div>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Отмена</button>
@@ -1422,5 +1350,240 @@
</div>
</section>
<!-- ============ вход в окно информации о диалоге ============ -->
<section class="screen">
<div class="lbl"><b>вход в окно информации о диалоге</b> кнопка <code>⋯</code> в шапке открытого чата с подсветкой</div>
<div class="window">
<aside class="sidebar">
<div class="sb-head"><div class="sb-title"><span>Диалоги</span><button class="icon-btn" title="Новый диалог">+</button></div></div>
<input class="search" placeholder="Поиск диалога…" style="margin:0 16px 10px;width:calc(100% - 32px);">
<div class="chat-list">
<div class="chat-row active">
<div class="avatar">АГ</div>
<div class="chat-mid">
<div class="chat-name"><span>Spring Boot · настройка логов</span><span class="chat-time">14:22</span></div>
<div class="chat-prev">Логи теперь пишутся в отдельный файл…</div>
</div>
</div>
</div>
</aside>
<main class="main">
<header class="chat-head">
<div class="avatar">АГ</div>
<div class="head-meta">
<div class="head-name">Spring Boot · настройка логов</div>
<div class="head-sub"><span class="dot">●</span> на связи · agentik</div>
</div>
<button class="icon-btn hi-btn" title="Параметры диалога"><svg viewBox="0 0 24 24"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg></button>
</header>
</main>
</div>
</section>
<!-- ============ 20 · параметры диалога · обычный ============ -->
<section class="screen">
<div class="lbl"><b>20 · параметры диалога · обычный</b> чекбокс выключен и задизейблен (<code>isTemporal=false</code>). Открывается по <code>⋯</code> в шапке чата</div>
<div class="dialog">
<div class="d-head">
<h2>Spring Boot · настройка логов</h2>
<button class="x-btn">✕</button>
</div>
<div class="d-body">
<div class="field">
<label>Название</label>
<input type="text" value="Spring Boot · настройка логов">
<div class="note">Пустое имя — диалог покажется как «Без названия».</div>
</div>
<label style="display:block;font-size:12px;color:var(--dim);margin:0 0 6px">Агент</label>
<div class="agent-card" style="margin-bottom:0">
<div class="avatar" style="background:var(--accent);color:var(--on-accent)">АГ</div>
<div class="ag-mid">
<div class="ag-name">agentik</div>
<div class="ag-addr">http://192.168.88.135:8080/agentik</div>
</div>
<div class="state"><span class="d"></span>на связи</div>
</div>
<div class="checkbox-row off" style="margin-top:14px">
<div class="box"></div>
<div class="mid">
<div class="lbl">Временный диалог</div>
<div class="desc">Задаётся только при создании. Изменить временность существующего диалога нельзя.</div>
</div>
</div>
<div class="probe-list">
<div><span>Создан</span><b>1 окт 2026, 22:07</b></div>
<div><span>Обновлён</span><b>5 окт 2026, 11:30</b></div>
</div>
<div class="danger-zone">
<div class="lbl">Опасное</div>
<button class="btn dang" style="width:100%">Удалить диалог</button>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Закрыть</button>
<button class="btn prim" style="flex:1">Сохранить</button>
</div>
</div>
</section>
<!-- ============ 21 · параметры диалога · временный ============ -->
<section class="screen">
<div class="lbl"><b>21 · параметры диалога · временный</b> чекбокс включён и задизейблен (<code>isTemporal=true</code>)</div>
<div class="dialog">
<div class="d-head">
<h2>Черновик ТЗ</h2>
<button class="x-btn">✕</button>
</div>
<div class="d-body">
<div class="field">
<label>Название</label>
<input type="text" value="Черновик ТЗ">
</div>
<label style="display:block;font-size:12px;color:var(--dim);margin:0 0 6px">Агент</label>
<div class="agent-card" style="margin-bottom:0">
<div class="avatar" style="background:#C9A886;color:var(--on-accent)">КО</div>
<div class="ag-mid">
<div class="ag-name">coder</div>
<div class="ag-addr">http://192.168.76.199:8080/agentik</div>
</div>
<div class="state"><span class="d"></span>на связи</div>
</div>
<div class="checkbox-row on off" style="margin-top:14px">
<div class="box"></div>
<div class="mid">
<div class="lbl">Временный диалог</div>
<div class="desc">История не сохраняется на сервере.</div>
</div>
</div>
<div class="probe-list">
<div><span>Создан</span><b>только что</b></div>
</div>
<div class="danger-zone">
<div class="lbl">Опасное</div>
<button class="btn dang" style="width:100%">Удалить диалог</button>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Закрыть</button>
<button class="btn prim" style="flex:1">Сохранить</button>
</div>
</div>
</section>
<!-- ============ 22 · параметры диалога · без названия ============ -->
<section class="screen">
<div class="lbl"><b>22 · параметры диалога · без названия</b> пустое имя</div>
<div class="dialog">
<div class="d-head">
<h2>Без названия</h2>
<button class="x-btn">✕</button>
</div>
<div class="d-body">
<div class="field">
<label>Название</label>
<input type="text" value="" placeholder="как назвать диалог">
<div class="note">Пока имя не задано, диалог показывается как «Без названия».</div>
</div>
<label style="display:block;font-size:12px;color:var(--dim);margin:0 0 6px">Агент</label>
<div class="agent-card" style="margin-bottom:0">
<div class="avatar" style="background:#86C99A;color:var(--on-accent)">ДМ</div>
<div class="ag-mid">
<div class="ag-name">home-assistant</div>
<div class="ag-addr">http://192.168.76.199:8080/agentik</div>
</div>
<div class="state err"><span class="d"></span>не отвечает</div>
</div>
<div class="checkbox-row off" style="margin-top:14px">
<div class="box"></div>
<div class="mid">
<div class="lbl">Временный диалог</div>
<div class="desc">Задаётся только при создании. Изменить временность существующего диалога нельзя.</div>
</div>
</div>
<div class="probe-list">
<div><span>Создан</span><b>сегодня, 09:11</b></div>
</div>
<div class="danger-zone">
<div class="lbl">Опасное</div>
<button class="btn dang" style="width:100%">Удалить диалог</button>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Закрыть</button>
<button class="btn prim" style="flex:1">Сохранить</button>
</div>
</div>
</section>
<!-- ============ 23 · параметры диалога · ошибка сохранения ============ -->
<section class="screen">
<div class="lbl"><b>23 · параметры диалога · ошибка</b> сервер не принял имя — warn + «Повторить»</div>
<div class="dialog">
<div class="d-head">
<h2>Spring Boot · настройка логов</h2>
<button class="x-btn">✕</button>
</div>
<div class="d-body">
<div class="field">
<label>Название</label>
<input type="text" value="Spring Boot · настройка логов">
</div>
<div class="warn">
<span class="i">⚠</span>
<span>Не удалось сохранить имя: агент не отвечает. Проверьте связь и попробуйте снова.</span>
</div>
<div class="danger-zone">
<div class="lbl">Опасное</div>
<button class="btn dang" style="width:100%">Удалить диалог</button>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Закрыть</button>
<button class="btn prim" style="flex:1">Повторить</button>
</div>
</div>
</section>
<!-- ============ 24 · удаление диалога · подтверждение ============ -->
<section class="screen">
<div class="lbl"><b>24 · удаление диалога · подтверждение</b> открывается по «Удалить диалог» из 20–23. Действие необратимо — warn + красный CTA</div>
<div class="dialog">
<div class="d-head">
<h2>Удалить диалог?</h2>
<button class="x-btn">✕</button>
</div>
<div class="d-body">
<div class="warn">
<span class="i">⚠</span>
<span>Диалог <b>«Spring Boot · настройка логов»</b> и вся его история будут
безвозвратно удалены с сервера. Это действие нельзя отменить.</span>
</div>
<div class="info">
<span>ℹ</span>
<span>Корзины нет. Если передумаете — диалог придётся создавать заново, и
контекст будет потерян.</span>
</div>
</div>
<div class="d-foot">
<button class="btn" style="flex:1">Отмена</button>
<button class="btn dang solid" style="flex:1">Удалить</button>
</div>
</div>
</section>
</body>
</html>