mirror of
https://github.com/wasrusgen/wasrusgen1-crm.git
synced 2026-06-03 19:04:47 +00:00
feat: presentation arch v3 — SVG иконки по брендбуку, убраны эмодзи
This commit is contained in:
parent
1995710cc5
commit
2a570833f4
@ -304,7 +304,7 @@
|
|||||||
.seccard{
|
.seccard{
|
||||||
background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 18px;
|
background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 18px;
|
||||||
}
|
}
|
||||||
.seccard .si{font-size:22px;margin-bottom:8px;display:block}
|
.seccard .si{display:block;margin-bottom:8px}
|
||||||
.seccard h4{font-size:16px;font-weight:700;margin-bottom:5px}
|
.seccard h4{font-size:16px;font-weight:700;margin-bottom:5px}
|
||||||
.seccard p{color:var(--muted);font-size:12.5px;line-height:1.5}
|
.seccard p{color:var(--muted);font-size:12.5px;line-height:1.5}
|
||||||
.seccard.b1{border-color:rgba(118,189,34,.35)}
|
.seccard.b1{border-color:rgba(118,189,34,.35)}
|
||||||
@ -443,12 +443,12 @@
|
|||||||
<div class="grid g4" style="flex:1;align-content:center">
|
<div class="grid g4" style="flex:1;align-content:center">
|
||||||
<div class="card"><div class="ic">🖥️</div><h3>Frontend</h3><p>HTML/JS (текущий прототип) → <b style="color:var(--accent2)">React</b> в v2</p></div>
|
<div class="card"><div class="ic">🖥️</div><h3>Frontend</h3><p>HTML/JS (текущий прототип) → <b style="color:var(--accent2)">React</b> в v2</p></div>
|
||||||
<div class="card"><div class="ic">⚙️</div><h3>Backend</h3><p>Node.js + Express — REST API, авторизация</p></div>
|
<div class="card"><div class="ic">⚙️</div><h3>Backend</h3><p>Node.js + Express — REST API, авторизация</p></div>
|
||||||
<div class="card success"><div class="ic">🗄️</div><h3>База данных</h3><p>PostgreSQL — <b style="color:var(--success)">одна БД на клиента</b></p></div>
|
<div class="card success"><div class="ic"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"/><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"/></svg></div><h3>База данных</h3><p>PostgreSQL — <b style="color:var(--success)">одна БД на клиента</b></p></div>
|
||||||
<div class="card"><div class="ic">⚡</div><h3>Кеш / сессии</h3><p>Redis — сессии, очереди, кеш</p></div>
|
<div class="card"><div class="ic">⚡</div><h3>Кеш / сессии</h3><p>Redis — сессии, очереди, кеш</p></div>
|
||||||
<div class="card"><div class="ic">📦</div><h3>Файлы</h3><p>S3 / MinIO — фото, документы, экспорты</p></div>
|
<div class="card"><div class="ic">📦</div><h3>Файлы</h3><p>S3 / MinIO — фото, документы, экспорты</p></div>
|
||||||
<div class="card accent"><div class="ic">🚀</div><h3>Деплой</h3><p>Docker Compose + GitHub Actions CI/CD</p></div>
|
<div class="card accent"><div class="ic">🚀</div><h3>Деплой</h3><p>Docker Compose + GitHub Actions CI/CD</p></div>
|
||||||
<div class="card"><div class="ic">☁️</div><h3>Хостинг</h3><p>VPS: Hetzner / Timeweb / Selectel</p></div>
|
<div class="card"><div class="ic"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z"/></svg></div><h3>Хостинг</h3><p>VPS: Hetzner / Timeweb / Selectel</p></div>
|
||||||
<div class="card"><div class="ic">🔒</div><h3>Сеть</h3><p>Nginx reverse-proxy + Let's Encrypt HTTPS</p></div>
|
<div class="card"><div class="ic"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg></div><h3>Сеть</h3><p>Nginx reverse-proxy + Let's Encrypt HTTPS</p></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -500,7 +500,7 @@
|
|||||||
<p class="sub">Что нужно разработать для управления всем парком проектов из одного места.</p>
|
<p class="sub">Что нужно разработать для управления всем парком проектов из одного места.</p>
|
||||||
<div class="slide-body">
|
<div class="slide-body">
|
||||||
<div class="grid g2" style="flex:1;align-content:center">
|
<div class="grid g2" style="flex:1;align-content:center">
|
||||||
<div class="card accent"><div class="ic">📋</div><h3>Список проектов</h3><p>Все клиентские инстансы: статус, last activity, число пользователей, тариф.</p></div>
|
<div class="card accent"><div class="ic"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2"/><rect x="9" y="3" width="6" height="4" rx="2"/></svg></div><h3>Список проектов</h3><p>Все клиентские инстансы: статус, last activity, число пользователей, тариф.</p></div>
|
||||||
<div class="card success"><div class="ic">➕</div><h3>Создать новый проект</h3><p>Кнопка «Новый проект» → деплой инстанса в 1 клик (или скриптом).</p></div>
|
<div class="card success"><div class="ic">➕</div><h3>Создать новый проект</h3><p>Кнопка «Новый проект» → деплой инстанса в 1 клик (или скриптом).</p></div>
|
||||||
<div class="card"><div class="ic">📡</div><h3>Мониторинг</h3><p>Uptime, ошибки, нагрузка CPU/RAM, статус БД по каждому клиенту.</p></div>
|
<div class="card"><div class="ic">📡</div><h3>Мониторинг</h3><p>Uptime, ошибки, нагрузка CPU/RAM, статус БД по каждому клиенту.</p></div>
|
||||||
<div class="card"><div class="ic">🔄</div><h3>Массовое обновление</h3><p>Выкатить новую версию на все проекты одновременно одной командой.</p></div>
|
<div class="card"><div class="ic">🔄</div><h3>Массовое обновление</h3><p>Выкатить новую версию на все проекты одновременно одной командой.</p></div>
|
||||||
@ -703,12 +703,12 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="tag" style="margin-bottom:12px">B · Безопасность</div>
|
<div class="tag" style="margin-bottom:12px">B · Безопасность</div>
|
||||||
<div class="secgrid">
|
<div class="secgrid">
|
||||||
<div class="seccard b1"><span class="si">🔐</span><h4>Физическая изоляция</h4><p>Каждый клиент — отдельная PostgreSQL БД. Код одного клиента физически не может достать данные другого.</p></div>
|
<div class="seccard b1"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><polyline points="9,12 11,14 15,10"/></svg></div><h4>Физическая изоляция</h4><p>Каждый клиент — отдельная PostgreSQL БД. Код одного клиента физически не может достать данные другого.</p></div>
|
||||||
<div class="seccard b2"><span class="si">🔑</span><h4>Авторизация JWT</h4><p>Access (15 мин) + Refresh (30 дней). Роль и salonId в payload. Проверка на каждом запросе.</p></div>
|
<div class="seccard b2"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.778 7.778 5.5 5.5 0 017.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg></div><h4>Авторизация JWT</h4><p>Access (15 мин) + Refresh (30 дней). Роль и salonId в payload. Проверка на каждом запросе.</p></div>
|
||||||
<div class="seccard b2"><span class="si">🔒</span><h4>HTTPS / TLS</h4><p>Let's Encrypt, автообновление. HTTP → 301 redirect. HSTS включён.</p></div>
|
<div class="seccard b2"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg></div><h4>HTTPS / TLS</h4><p>Let's Encrypt, автообновление. HTTP → 301 redirect. HSTS включён.</p></div>
|
||||||
<div class="seccard b1"><span class="si">💾</span><h4>Резервные копии</h4><p>Ежедневный pg_dump в S3. Хранение 30 дней. RTO < 1 ч, RPO < 24 ч.</p></div>
|
<div class="seccard b1"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><polyline points="1,4 1,10 7,10"/><path d="M3.51 15a9 9 0 102.13-9.36L1 10"/></svg></div><h4>Резервные копии</h4><p>Ежедневный pg_dump в S3. Хранение 30 дней. RTO < 1 ч, RPO < 24 ч.</p></div>
|
||||||
<div class="seccard b2"><span class="si">👁</span><h4>Аудит-лог</h4><p>Каждое изменение заказа/клиента — с userId + timestamp. Просмотр только admin/owner.</p></div>
|
<div class="seccard b2"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14,2 14,8 20,8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10,9 9,9 8,9"/></svg></div><h4>Аудит-лог</h4><p>Каждое изменение заказа/клиента — с userId + timestamp. Просмотр только admin/owner.</p></div>
|
||||||
<div class="seccard b1"><span class="si">🛡</span><h4>RBAC</h4><p>5 ролей (owner, admin, manager, measurer, assembler). Матрица прав в SCHEMA.md.</p></div>
|
<div class="seccard b1"><div style="display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:rgba(0,62,126,.15);border-radius:10px;flex-shrink:0;margin-bottom:8px"><svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h4>RBAC</h4><p>5 ролей (owner, admin, manager, measurer, assembler). Матрица прав в SCHEMA.md.</p></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user