wasrusgen1-crm/Mokap/consult_demo.html
wasrusgen ffa56b1d18 add: Mokap mockups, CLAUDE.md, project structure
- 15 HTML mockups (admin, assembler, manager, owner и др.)
- CLAUDE.md с политикой работы с файлами
- .claude/launch.json

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 13:39:30 +03:00

734 lines
42 KiB
HTML
Raw 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.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI КОНСАЛТИНГ CRM — Демо</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Montserrat:wght@700;800&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #0F172A;
--bg2: #1E293B;
--bg3: #152033;
--sidebar: #0D1829;
--accent: #047857;
--accent2: #10B981;
--accent3: #34D399;
--text: #F1F5F9;
--muted: #94A3B8;
--border: #1E3A5F;
--border2: #334155;
--danger: #EF4444;
--warning: #F59E0B;
--info: #3B82F6;
}
html, body { height: 100%; }
body { background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; font-size: 14px; -webkit-font-smoothing: antialiased; display: flex; flex-direction: column; min-height: 100vh; }
/* TOP NAV */
.top-nav {
background: var(--sidebar); border-bottom: 1px solid var(--border);
padding: 0 24px; height: 56px; display: flex; align-items: center; gap: 0;
flex-shrink: 0; position: sticky; top: 0; z-index: 50;
}
.nav-logo { font-family: 'Montserrat', sans-serif; font-weight: 800; font-size: 17px; color: var(--accent2); margin-right: 32px; white-space: nowrap; }
.nav-logo span { color: var(--muted); }
.tab-bar { display: flex; gap: 2px; flex: 1; overflow-x: auto; }
.tab {
padding: 8px 16px; border-radius: 7px; font-size: 13px; font-weight: 500;
color: var(--muted); cursor: pointer; white-space: nowrap; transition: all 0.15s;
border: 1px solid transparent;
}
.tab:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.tab.active { background: rgba(4,120,87,0.15); color: var(--accent2); border-color: rgba(4,120,87,0.3); }
.nav-badge { margin-left: 16px; background: rgba(4,120,87,0.15); color: var(--accent2); padding: 4px 12px; border-radius: 100px; font-size: 12px; font-weight: 600; border: 1px solid rgba(4,120,87,0.3); white-space: nowrap; }
/* SCREENS */
.screen { display: none; flex: 1; overflow-y: auto; }
.screen.active { display: flex; flex-direction: column; }
/* ─── SCREEN 1: WORKSPACE ─── */
.workspace { display: flex; height: calc(100vh - 56px); }
.ws-sidebar {
width: 260px; flex-shrink: 0; background: var(--sidebar); border-right: 1px solid var(--border);
display: flex; flex-direction: column; padding: 20px 16px;
}
.ws-sidebar h3 { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); font-weight: 600; margin-bottom: 12px; padding: 0 4px; }
.sidebar-nav { display: flex; flex-direction: column; gap: 2px; margin-bottom: 24px; }
.sidebar-item {
padding: 8px 12px; border-radius: 8px; font-size: 13px; color: var(--muted);
cursor: pointer; display: flex; align-items: center; gap: 8px; transition: all 0.15s;
}
.sidebar-item:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.sidebar-item.active { background: rgba(4,120,87,0.12); color: var(--accent2); }
.sidebar-item .icon { font-size: 15px; width: 20px; text-align: center; }
.ws-main { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.ws-header {
padding: 16px 24px; border-bottom: 1px solid var(--border);
background: var(--bg2); display: flex; align-items: center; justify-content: space-between;
}
.ws-header-left h2 { font-size: 16px; font-weight: 700; }
.ws-header-left p { font-size: 12px; color: var(--muted); margin-top: 2px; }
.status-badge { padding: 4px 10px; border-radius: 100px; font-size: 11px; font-weight: 600; }
.status-active { background: rgba(52,211,153,0.12); color: var(--accent3); border: 1px solid rgba(52,211,153,0.25); }
.banners { padding: 16px 24px 0; display: flex; flex-direction: column; gap: 10px; }
.banner {
border-radius: 10px; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.banner-info { display: flex; align-items: center; gap: 10px; }
.banner-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.banner.blue { background: rgba(59,130,246,0.1); border: 1px solid rgba(59,130,246,0.25); }
.banner.blue .banner-dot { background: var(--info); }
.banner.green { background: rgba(4,120,87,0.1); border: 1px solid rgba(4,120,87,0.3); }
.banner.green .banner-dot { background: var(--accent2); }
.banner-title { font-size: 13px; font-weight: 600; }
.banner-sub { font-size: 12px; color: var(--muted); margin-top: 1px; }
.banner-btn {
padding: 6px 14px; border-radius: 7px; font-size: 12px; font-weight: 600; border: none; cursor: pointer; white-space: nowrap; transition: opacity 0.15s;
}
.banner-btn:hover { opacity: 0.85; }
.banner-btn.blue-btn { background: var(--info); color: #fff; }
.banner-btn.green-btn { background: var(--accent); color: #fff; }
.chat-area { flex: 1; overflow-y: auto; padding: 24px; display: flex; flex-direction: column; gap: 16px; }
.msg { display: flex; gap: 10px; max-width: 75%; }
.msg.bot { align-self: flex-start; }
.msg.user { align-self: flex-end; flex-direction: row-reverse; }
.msg-avatar {
width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700;
}
.bot .msg-avatar { background: rgba(4,120,87,0.2); color: var(--accent2); }
.user .msg-avatar { background: rgba(59,130,246,0.2); color: var(--info); }
.msg-bubble { padding: 10px 14px; border-radius: 12px; font-size: 13px; line-height: 1.6; }
.bot .msg-bubble { background: var(--bg2); border: 1px solid var(--border2); border-radius: 2px 12px 12px 12px; }
.user .msg-bubble { background: rgba(4,120,87,0.15); border: 1px solid rgba(4,120,87,0.25); border-radius: 12px 2px 12px 12px; }
.msg-time { font-size: 10px; color: var(--muted); margin-top: 4px; text-align: right; }
.typing { display: flex; gap: 4px; align-items: center; padding: 6px 0; }
.typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); animation: blink 1.2s infinite; }
.typing span:nth-child(2) { animation-delay: 0.2s; }
.typing span:nth-child(3) { animation-delay: 0.4s; }
@keyframes blink { 0%,100%{opacity:0.3} 50%{opacity:1} }
.chat-input-area { padding: 16px 24px; border-top: 1px solid var(--border); background: var(--bg2); display: flex; gap: 10px; align-items: flex-end; }
.chat-input {
flex: 1; background: var(--bg3); border: 1px solid var(--border2); border-radius: 10px;
padding: 10px 14px; color: var(--text); font-size: 13px; font-family: inherit;
resize: none; outline: none; min-height: 42px; max-height: 120px; transition: border-color 0.15s;
}
.chat-input:focus { border-color: rgba(4,120,87,0.5); }
.chat-input::placeholder { color: var(--muted); }
.send-btn {
width: 42px; height: 42px; border-radius: 10px; background: var(--accent); border: none; cursor: pointer;
display: flex; align-items: center; justify-content: center; color: #fff; font-size: 16px; transition: background 0.15s;
}
.send-btn:hover { background: var(--accent2); }
/* ─── SCREEN 2: ADMIN ─── */
.admin-view { padding: 28px 32px; flex: 1; }
.page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; }
.page-title h2 { font-size: 20px; font-weight: 700; }
.page-title p { font-size: 13px; color: var(--muted); margin-top: 2px; }
.page-actions { display: flex; gap: 10px; }
.btn { padding: 8px 16px; border-radius: 8px; font-size: 13px; font-weight: 600; cursor: pointer; border: none; transition: all 0.15s; }
.btn-green { background: var(--accent); color: #fff; }
.btn-green:hover { background: var(--accent2); }
.btn-ghost { background: transparent; color: var(--muted); border: 1px solid var(--border2); }
.btn-ghost:hover { color: var(--text); border-color: var(--muted); }
.stats-row { display: flex; gap: 16px; margin-bottom: 28px; flex-wrap: wrap; }
.stat-card {
background: var(--bg2); border: 1px solid var(--border); border-radius: 12px;
padding: 18px 20px; flex: 1; min-width: 130px;
}
.stat-card .label { font-size: 12px; color: var(--muted); font-weight: 500; }
.stat-card .value { font-family: 'Montserrat', sans-serif; font-size: 26px; font-weight: 800; margin-top: 4px; }
.stat-card .change { font-size: 11px; color: var(--accent3); margin-top: 2px; }
.clients-table { background: var(--bg2); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
.table-head { display: grid; grid-template-columns: 2fr 1.2fr 1.2fr 1fr 1fr 1.2fr; padding: 12px 20px; border-bottom: 1px solid var(--border); background: var(--bg3); }
.table-head span { font-size: 11px; text-transform: uppercase; letter-spacing: 0.8px; color: var(--muted); font-weight: 600; }
.table-row { display: grid; grid-template-columns: 2fr 1.2fr 1.2fr 1fr 1fr 1.2fr; padding: 14px 20px; border-bottom: 1px solid var(--border); align-items: center; transition: background 0.15s; }
.table-row:last-child { border-bottom: none; }
.table-row:hover { background: rgba(255,255,255,0.02); }
.client-name-cell { display: flex; flex-direction: column; }
.client-name { font-size: 14px; font-weight: 600; }
.client-company { font-size: 12px; color: var(--muted); margin-top: 2px; }
.priority { display: flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; }
.priority-dot { width: 7px; height: 7px; border-radius: 50%; }
.p-high .priority-dot { background: var(--danger); }
.p-high { color: var(--danger); }
.p-mid .priority-dot { background: var(--warning); }
.p-mid { color: var(--warning); }
.p-low .priority-dot { background: var(--accent2); }
.p-low { color: var(--accent2); }
.phase-badge { padding: 3px 10px; border-radius: 100px; font-size: 11px; font-weight: 600; display: inline-flex; }
.phase-be { background: rgba(59,130,246,0.12); color: #60A5FA; border: 1px solid rgba(59,130,246,0.2); }
.phase-asis { background: rgba(239,68,68,0.12); color: #F87171; border: 1px solid rgba(239,68,68,0.2); }
.phase-audit { background: rgba(245,158,11,0.12); color: #FCD34D; border: 1px solid rgba(245,158,11,0.2); }
.tobe-badge { background: rgba(4,120,87,0.12); color: var(--accent3); border: 1px solid rgba(4,120,87,0.3); }
.row-actions { display: flex; gap: 6px; }
.action-btn { padding: 5px 10px; border-radius: 6px; font-size: 11px; font-weight: 600; border: 1px solid var(--border2); background: transparent; color: var(--muted); cursor: pointer; transition: all 0.15s; }
.action-btn:hover { color: var(--text); border-color: var(--muted); }
.action-btn.primary { background: rgba(4,120,87,0.12); color: var(--accent2); border-color: rgba(4,120,87,0.3); }
.action-btn.primary:hover { background: var(--accent); color: #fff; }
/* ─── SCREEN 3: CLIENT CARD ─── */
.card-view { padding: 28px 32px; flex: 1; }
.card-header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 28px; flex-wrap: wrap; gap: 16px; }
.card-title-block h2 { font-size: 22px; font-weight: 700; }
.card-title-block p { font-size: 13px; color: var(--muted); margin-top: 4px; }
.card-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.tag { padding: 4px 12px; border-radius: 100px; font-size: 12px; font-weight: 600; border: 1px solid; }
.tag-green { background: rgba(4,120,87,0.12); color: var(--accent3); border-color: rgba(4,120,87,0.3); }
.tag-blue { background: rgba(59,130,246,0.1); color: #60A5FA; border-color: rgba(59,130,246,0.25); }
.tag-orange { background: rgba(249,115,22,0.1); color: #FB923C; border-color: rgba(249,115,22,0.25); }
.card-grid { display: grid; grid-template-columns: 1fr 300px; gap: 20px; }
.card-main { display: flex; flex-direction: column; gap: 20px; }
.card-side { display: flex; flex-direction: column; gap: 16px; }
.card-section { background: var(--bg2); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
.section-head { padding: 14px 18px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; }
.section-head h3 { font-size: 13px; font-weight: 700; }
.section-body { padding: 18px; }
.funnel-steps { display: flex; gap: 6px; }
.funnel-pill {
flex: 1; text-align: center; padding: 8px 6px; border-radius: 8px;
font-size: 11px; font-weight: 600; border: 1px solid var(--border); color: var(--muted);
cursor: pointer; transition: all 0.15s; position: relative;
}
.funnel-pill.done { background: rgba(4,120,87,0.08); color: var(--accent2); border-color: rgba(4,120,87,0.25); }
.funnel-pill.current { background: rgba(4,120,87,0.2); color: var(--accent3); border-color: var(--accent2); box-shadow: 0 0 12px rgba(4,120,87,0.2); }
.funnel-pill.done::after { content: '✓'; position: absolute; top: -5px; right: -3px; background: var(--accent); color: #fff; font-size: 9px; width: 14px; height: 14px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.info-item label { font-size: 11px; color: var(--muted); font-weight: 500; display: block; margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.5px; }
.info-item .val { font-size: 14px; font-weight: 500; }
.brief-items { display: flex; flex-direction: column; gap: 12px; }
.brief-item { background: var(--bg3); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; }
.brief-item .brief-q { font-size: 11px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; }
.brief-item .brief-a { font-size: 13px; line-height: 1.5; }
.timeline { display: flex; flex-direction: column; gap: 0; }
.tl-item { display: flex; gap: 12px; padding-bottom: 16px; position: relative; }
.tl-item:not(:last-child)::before { content: ''; position: absolute; left: 11px; top: 24px; bottom: 0; width: 1px; background: var(--border); }
.tl-dot { width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 11px; margin-top: 2px; }
.tl-green { background: rgba(4,120,87,0.2); color: var(--accent2); }
.tl-blue { background: rgba(59,130,246,0.15); color: #60A5FA; }
.tl-yellow { background: rgba(245,158,11,0.15); color: #FCD34D; }
.tl-content p { font-size: 13px; line-height: 1.5; }
.tl-content .tl-time { font-size: 11px; color: var(--muted); margin-top: 2px; }
.side-card { background: var(--bg2); border: 1px solid var(--border); border-radius: 14px; padding: 16px; }
.side-card h4 { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.8px; color: var(--muted); margin-bottom: 12px; }
.side-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.side-row:last-child { border-bottom: none; }
.side-row .sl { color: var(--muted); }
.side-row .sv { font-weight: 600; }
.prog-bar { height: 6px; border-radius: 4px; background: var(--border); overflow: hidden; margin-top: 8px; }
.prog-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--accent) 0%, var(--accent2) 100%); }
/* ─── SCREEN 4: INTERVIEW ─── */
.interview-view { padding: 28px 32px; flex: 1; max-width: 800px; }
.interview-header { margin-bottom: 28px; }
.interview-header h2 { font-size: 20px; font-weight: 700; }
.interview-header p { font-size: 13px; color: var(--muted); margin-top: 4px; }
.progress-block { background: var(--bg2); border: 1px solid var(--border); border-radius: 12px; padding: 16px 20px; margin-bottom: 24px; }
.prog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.prog-label { font-size: 13px; font-weight: 600; }
.prog-pct { font-size: 13px; color: var(--accent2); font-weight: 700; }
.steps-row { display: flex; gap: 6px; margin-top: 12px; }
.step-pill { flex: 1; height: 6px; border-radius: 4px; background: var(--border); }
.step-pill.done { background: var(--accent); }
.step-pill.active { background: var(--accent2); animation: pulse 1.5s infinite; }
@keyframes pulse { 0%,100%{opacity:0.7} 50%{opacity:1} }
.q-section { display: flex; flex-direction: column; gap: 16px; }
.q-card { background: var(--bg2); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
.q-card.answered { border-color: rgba(4,120,87,0.3); }
.q-card-head { padding: 14px 18px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; }
.q-num { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.8px; }
.answered-check { background: rgba(4,120,87,0.15); color: var(--accent2); padding: 3px 10px; border-radius: 100px; font-size: 11px; font-weight: 700; }
.q-body { padding: 16px 18px; }
.q-text { font-size: 15px; font-weight: 600; margin-bottom: 12px; line-height: 1.4; }
.q-hint { font-size: 12px; color: var(--muted); margin-bottom: 14px; line-height: 1.5; }
.q-answer { background: rgba(4,120,87,0.06); border: 1px solid rgba(4,120,87,0.2); border-radius: 8px; padding: 10px 14px; font-size: 13px; color: var(--text); line-height: 1.6; }
.q-textarea {
width: 100%; background: var(--bg3); border: 1px solid var(--border2); border-radius: 10px;
padding: 12px 14px; color: var(--text); font-size: 13px; font-family: inherit;
min-height: 90px; resize: vertical; outline: none; transition: border-color 0.15s;
}
.q-textarea:focus { border-color: rgba(4,120,87,0.5); }
.q-footer { padding: 12px 18px; border-top: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; }
.q-footer-right { display: flex; gap: 8px; }
.voice-btn { padding: 7px 14px; border-radius: 8px; background: rgba(59,130,246,0.12); color: #60A5FA; border: 1px solid rgba(59,130,246,0.25); font-size: 12px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 6px; }
.save-btn { padding: 7px 14px; border-radius: 8px; background: var(--accent); color: #fff; border: none; font-size: 12px; font-weight: 600; cursor: pointer; }
.save-btn:hover { background: var(--accent2); }
/* scrollbar */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--muted); }
@media(max-width: 768px) {
.ws-sidebar { display: none; }
.card-grid { grid-template-columns: 1fr; }
.table-head, .table-row { grid-template-columns: 2fr 1fr 1fr; }
.table-head span:nth-child(n+4), .table-row > *:nth-child(n+4) { display: none; }
.admin-view, .card-view, .interview-view { padding: 16px; }
.card-view { padding: 16px; }
.funnel-steps { flex-wrap: wrap; }
}
</style>
</head>
<body>
<!-- TOP NAV -->
<nav class="top-nav">
<div class="nav-logo">@wasrusgen<span>1</span></div>
<div class="tab-bar">
<div class="tab active" onclick="showScreen(0, this)">💬 Workspace клиента</div>
<div class="tab" onclick="showScreen(1, this)">🗂️ Admin панель</div>
<div class="tab" onclick="showScreen(2, this)">👤 Карточка клиента</div>
<div class="tab" onclick="showScreen(3, this)">📋 Интервью</div>
</div>
<div class="nav-badge">Demo Mode</div>
</nav>
<!-- ─── SCREEN 1: WORKSPACE ─── -->
<div class="screen active" id="screen-0">
<div class="workspace">
<div class="ws-sidebar">
<h3>Навигация</h3>
<div class="sidebar-nav">
<div class="sidebar-item active">
<span class="icon">💬</span> Чат с Еленой
</div>
<div class="sidebar-item">
<span class="icon">📝</span> Первичный бриф
</div>
<div class="sidebar-item">
<span class="icon">🎙️</span> Интервью
</div>
<div class="sidebar-item">
<span class="icon">📄</span> Документы
</div>
</div>
<h3>Текущий проект</h3>
<div style="background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:14px 12px;">
<div style="font-size:13px;font-weight:600;margin-bottom:6px;">ООО «ШвейМастер»</div>
<div style="font-size:11px;color:var(--muted);margin-bottom:10px;">Швейное производство · Самара</div>
<div style="font-size:11px;font-weight:600;color:var(--accent2);">Фаза: TO-BE</div>
<div class="prog-bar" style="margin-top:8px;"><div class="prog-fill" style="width:60%"></div></div>
<div style="font-size:11px;color:var(--muted);margin-top:4px;">3 из 5 этапов завершены</div>
</div>
</div>
<div class="ws-main">
<div class="ws-header">
<div class="ws-header-left">
<h2>AI-ассистент Елена</h2>
<p>Помогает структурировать информацию и сопровождает на всех этапах</p>
</div>
<div class="status-badge status-active">● Онлайн</div>
</div>
<div class="banners">
<div class="banner blue">
<div class="banner-info">
<div class="banner-dot"></div>
<div>
<div class="banner-title">Первичный бриф — 3/5 блоков заполнено</div>
<div class="banner-sub">Осталось заполнить блоки «Цели» и «Финансы»</div>
</div>
</div>
<button class="banner-btn blue-btn">Продолжить</button>
</div>
<div class="banner green">
<div class="banner-info">
<div class="banner-dot"></div>
<div>
<div class="banner-title">Интервью доступно — 8 вопросов</div>
<div class="banner-sub">Отвечено 2 из 8 · ~20 минут</div>
</div>
</div>
<button class="banner-btn green-btn">Пройти интервью</button>
</div>
</div>
<div class="chat-area" id="chatArea">
<div class="msg bot">
<div class="msg-avatar">Е</div>
<div>
<div class="msg-bubble">Добрый день! Я Елена, ваш AI-ассистент в рамках проекта «Оптимизация швейного производства». Мы находимся на этапе TO-BE — проектирования целевого состояния. Вы уже заполнили 3 блока первичного брифа. Готовы продолжить?</div>
<div class="msg-time">10:42</div>
</div>
</div>
<div class="msg user">
<div class="msg-avatar">В</div>
<div>
<div class="msg-bubble">Да, давай продолжим. Сегодня хочу разобраться с целевыми показателями.</div>
<div class="msg-time">10:44</div>
</div>
</div>
<div class="msg bot">
<div class="msg-avatar">Е</div>
<div>
<div class="msg-bubble">Отлично. Для блока «Цели» мне нужно понять: какой результат для вас будет считаться успехом через 6 месяцев после внедрения? Конкретные метрики — производительность, количество позиций, сроки пошива. Можете описать?</div>
<div class="msg-time">10:44</div>
</div>
</div>
<div class="msg user">
<div class="msg-avatar">В</div>
<div>
<div class="msg-bubble">Хочу увеличить выпуск с 200 до 350 единиц в день, снизить брак с 8% до 3%, и уложить пошив стандартного изделия в 45 минут вместо нынешних 70.</div>
<div class="msg-time">10:47</div>
</div>
</div>
<div class="msg bot">
<div class="msg-avatar">Е</div>
<div>
<div class="msg-bubble">Зафиксировала. Целевые показатели TO-BE:<br>• Выпуск: 200 → 350 ед/день (+75%)<br>• Брак: 8% → 3% (сокращение в 2.7 раза)<br>• Цикл пошива: 70 → 45 мин (-36%)<br><br>Эти данные автоматически добавлены в карточку проекта. Переходим к блоку «Финансы»?</div>
<div class="msg-time">10:47</div>
</div>
</div>
</div>
<div class="chat-input-area">
<textarea class="chat-input" placeholder="Напишите сообщение Елене..." rows="1"></textarea>
<button class="send-btn"></button>
</div>
</div>
</div>
</div>
<!-- ─── SCREEN 2: ADMIN ─── -->
<div class="screen" id="screen-1">
<div class="admin-view">
<div class="page-header">
<div class="page-title">
<h2>Клиенты</h2>
<p>Управление проектами · 3 активных клиента</p>
</div>
<div class="page-actions">
<button class="btn btn-ghost">Фильтр</button>
<button class="btn btn-green">+ Новый клиент</button>
</div>
</div>
<div class="stats-row">
<div class="stat-card">
<div class="label">Всего клиентов</div>
<div class="value">3</div>
<div class="change">↑ +1 за месяц</div>
</div>
<div class="stat-card">
<div class="label">Активных проектов</div>
<div class="value">3</div>
<div class="change">в работе</div>
</div>
<div class="stat-card">
<div class="label">Ср. этап воронки</div>
<div class="value" style="color:var(--accent2)">TO-BE</div>
<div class="change">3 из 5 этапов</div>
</div>
<div class="stat-card">
<div class="label">Документов готово</div>
<div class="value">5</div>
<div class="change">ТЗ, договоры</div>
</div>
</div>
<div class="clients-table">
<div class="table-head">
<span>Клиент / Компания</span>
<span>Приоритет</span>
<span>Фаза</span>
<span>Бриф</span>
<span>Интервью</span>
<span>Действия</span>
</div>
<div class="table-row">
<div class="client-name-cell">
<span class="client-name">Васильев Роман</span>
<span class="client-company">ООО «ШвейМастер» · Самара</span>
</div>
<div class="priority p-high"><div class="priority-dot"></div>Высокий</div>
<div><span class="phase-badge tobe-badge">TO-BE</span></div>
<div style="font-size:13px;color:var(--accent2);font-weight:600;">3/5 ✓</div>
<div style="font-size:13px;color:var(--warning);font-weight:600;">2/8</div>
<div class="row-actions">
<button class="action-btn primary">Открыть</button>
<button class="action-btn">Интервью</button>
</div>
</div>
<div class="table-row">
<div class="client-name-cell">
<span class="client-name">Крылова Марина</span>
<span class="client-company">ИП Крылова · Краснодар</span>
</div>
<div class="priority p-mid"><div class="priority-dot"></div>Средний</div>
<div><span class="phase-badge phase-audit">Аудит</span></div>
<div style="font-size:13px;color:var(--warning);font-weight:600;">2/5</div>
<div style="font-size:13px;color:var(--muted);"></div>
<div class="row-actions">
<button class="action-btn primary">Открыть</button>
<button class="action-btn">Интервью</button>
</div>
</div>
<div class="table-row">
<div class="client-name-cell">
<span class="client-name">Ломов Дмитрий</span>
<span class="client-company">ООО «ТекстильПро» · Москва</span>
</div>
<div class="priority p-low"><div class="priority-dot"></div>Обычный</div>
<div><span class="phase-badge phase-asis">AS-IS</span></div>
<div style="font-size:13px;color:var(--danger);font-weight:600;">0/5</div>
<div style="font-size:13px;color:var(--muted);"></div>
<div class="row-actions">
<button class="action-btn primary">Открыть</button>
<button class="action-btn">Бриф</button>
</div>
</div>
</div>
</div>
</div>
<!-- ─── SCREEN 3: CLIENT CARD ─── -->
<div class="screen" id="screen-2">
<div class="card-view">
<div class="card-header">
<div class="card-title-block">
<h2>Васильев Роман · ООО «ШвейМастер»</h2>
<p>Швейное производство, Самара · Создан 14.03.2025</p>
<div class="card-tags">
<span class="tag tag-green">Лид: Активен</span>
<span class="tag tag-blue">TO-BE</span>
<span class="tag tag-orange">Приоритет: Высокий</span>
</div>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap;">
<button class="btn btn-ghost" style="font-size:12px;">📄 Договор</button>
<button class="btn btn-ghost" style="font-size:12px;">📋 ТЗ</button>
<button class="btn btn-green" style="font-size:12px;">Запустить интервью</button>
</div>
</div>
<div class="card-grid">
<div class="card-main">
<!-- Воронка -->
<div class="card-section">
<div class="section-head">
<h3>Воронка проекта</h3>
<span style="font-size:12px;color:var(--accent2);font-weight:600;">Этап 3/5</span>
</div>
<div class="section-body">
<div class="funnel-steps">
<div class="funnel-pill done">AS-IS</div>
<div class="funnel-pill done">Аудит</div>
<div class="funnel-pill current">TO-BE</div>
<div class="funnel-pill">Внедрение</div>
<div class="funnel-pill">Сопровождение</div>
</div>
<div style="margin-top:16px;padding:12px 14px;background:var(--bg3);border-radius:8px;border:1px solid rgba(4,120,87,0.2);">
<div style="font-size:12px;font-weight:700;color:var(--accent2);margin-bottom:6px;">TO-BE — Проектирование целевого состояния</div>
<div style="font-size:13px;color:var(--muted);">Определение целевых показателей, разработка новых процессов, согласование ресурсов и сроков внедрения.</div>
</div>
</div>
</div>
<!-- Бриф -->
<div class="card-section">
<div class="section-head">
<h3>Первичный бриф</h3>
<span style="font-size:12px;color:var(--warning);font-weight:600;">3/5 заполнено</span>
</div>
<div class="section-body">
<div class="brief-items">
<div class="brief-item">
<div class="brief-q">📌 Текущая ситуация</div>
<div class="brief-a">Швейный цех в Самаре, 45 сотрудников. Выпуск: 200 единиц/день (джинсы, платья). Основные проблемы: высокий % брака (8%), долгий цикл пошива (70 мин), неравномерная загрузка швей.</div>
</div>
<div class="brief-item">
<div class="brief-q">🏢 Структура бизнеса</div>
<div class="brief-a">ООО «ШвейМастер», основан 2018. Прямые продажи + маркетплейсы (Wildberries 60%). Оборот ~18 млн руб/год. Есть технолог, нет операционного директора.</div>
</div>
<div class="brief-item">
<div class="brief-q">⚡ Ключевые боли</div>
<div class="brief-a">Брак 8% = потери ~1.4 млн руб/год. Простои 30% рабочего времени. Нет системы учёта операций — всё в Excel и голове технолога.</div>
</div>
</div>
</div>
</div>
<!-- История -->
<div class="card-section">
<div class="section-head"><h3>История взаимодействий</h3></div>
<div class="section-body">
<div class="timeline">
<div class="tl-item">
<div class="tl-dot tl-green"></div>
<div class="tl-content">
<p><strong>Завершён этап AS-IS</strong> — зафиксировано 12 ключевых процессов производства</p>
<div class="tl-time">18 марта 2025, 14:30</div>
</div>
</div>
<div class="tl-item">
<div class="tl-dot tl-blue">📋</div>
<div class="tl-content">
<p><strong>Заполнен бриф (блок 3/5)</strong> — добавлены ключевые боли и цели проекта</p>
<div class="tl-time">22 марта 2025, 11:15</div>
</div>
</div>
<div class="tl-item">
<div class="tl-dot tl-yellow">🎙️</div>
<div class="tl-content">
<p><strong>Проведено интервью (2/8)</strong> — голосовой ввод, расшифрован и структурирован</p>
<div class="tl-time">25 марта 2025, 09:50</div>
</div>
</div>
<div class="tl-item">
<div class="tl-dot tl-green"></div>
<div class="tl-content">
<p><strong>Зафиксированы целевые показатели TO-BE</strong> — производительность +75%, брак до 3%</p>
<div class="tl-time">28 мая 2025, 10:47</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- SIDE -->
<div class="card-side">
<div class="side-card">
<h4>Контакт</h4>
<div class="side-row"><span class="sl">Имя</span><span class="sv">Васильев Роман</span></div>
<div class="side-row"><span class="sl">Компания</span><span class="sv">ООО «ШвейМастер»</span></div>
<div class="side-row"><span class="sl">Телефон</span><span class="sv">+7 846 XXX-XX-XX</span></div>
<div class="side-row"><span class="sl">Email</span><span class="sv">roman@sh-master.ru</span></div>
<div class="side-row"><span class="sl">Город</span><span class="sv">Самара</span></div>
</div>
<div class="side-card">
<h4>Прогресс проекта</h4>
<div class="side-row"><span class="sl">Бриф</span><span class="sv" style="color:var(--warning)">3/5</span></div>
<div class="prog-bar"><div class="prog-fill" style="width:60%"></div></div>
<div class="side-row" style="margin-top:10px;"><span class="sl">Интервью</span><span class="sv" style="color:var(--warning)">2/8</span></div>
<div class="prog-bar"><div class="prog-fill" style="width:25%"></div></div>
<div class="side-row" style="margin-top:10px;"><span class="sl">Документы</span><span class="sv" style="color:var(--accent2)">2 готово</span></div>
</div>
<div class="side-card">
<h4>Документы</h4>
<div class="side-row">
<span class="sl">📄 Договор</span>
<span class="sv" style="color:var(--accent2);font-size:12px;">Готов</span>
</div>
<div class="side-row">
<span class="sl">📋 ТЗ v1</span>
<span class="sv" style="color:var(--accent2);font-size:12px;">Черновик</span>
</div>
<div class="side-row">
<span class="sl">📊 Отчёт AS-IS</span>
<span class="sv" style="color:var(--accent2);font-size:12px;">Готов</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- ─── SCREEN 4: INTERVIEW ─── -->
<div class="screen" id="screen-3">
<div class="interview-view">
<div class="interview-header">
<h2>Интервью: ООО «ШвейМастер»</h2>
<p>Структурированный опрос для этапа TO-BE · Клиент: Васильев Роман</p>
</div>
<div class="progress-block">
<div class="prog-header">
<span class="prog-label">Прогресс интервью</span>
<span class="prog-pct">25% — 2 из 8 вопросов</span>
</div>
<div class="prog-bar"><div class="prog-fill" style="width:25%"></div></div>
<div class="steps-row">
<div class="step-pill done"></div>
<div class="step-pill done"></div>
<div class="step-pill active"></div>
<div class="step-pill"></div>
<div class="step-pill"></div>
<div class="step-pill"></div>
<div class="step-pill"></div>
<div class="step-pill"></div>
</div>
</div>
<div class="q-section">
<!-- Отвеченный вопрос -->
<div class="q-card answered">
<div class="q-card-head">
<span class="q-num">Вопрос 1 из 8</span>
<span class="answered-check">✓ Отвечено</span>
</div>
<div class="q-body">
<div class="q-text">Опишите ваш текущий производственный поток: от получения ткани до отгрузки готовых изделий. Какие ключевые этапы и сколько времени занимает каждый?</div>
<div class="q-answer">Получение и складирование ткани → 1 день. Раскрой — 2-3 часа на партию 50 изделий. Пошив — в среднем 70 минут на изделие (зависит от модели). ОТК и упаковка — 15 минут. Итого от раскроя до готового изделия — примерно 1.5-2 смены.</div>
</div>
</div>
<!-- Ещё один отвеченный -->
<div class="q-card answered">
<div class="q-card-head">
<span class="q-num">Вопрос 2 из 8</span>
<span class="answered-check">✓ Отвечено</span>
</div>
<div class="q-body">
<div class="q-text">Какие операции в процессе пошива являются «узкими местами»? Где скапливаются незавершённые изделия?</div>
<div class="q-answer">Главное узкое место — установка молний и фурнитуры. Там 3 швеи обрабатывают то, что приходит от 12 швей на предыдущем этапе. Ещё скопление перед ОТК — контролёр один на весь цех, проверяет медленно.</div>
</div>
</div>
<!-- Активный вопрос -->
<div class="q-card">
<div class="q-card-head">
<span class="q-num">Вопрос 3 из 8 — Текущий</span>
</div>
<div class="q-body">
<div class="q-text">Как сейчас организовано планирование производства? Кто принимает решения о приоритетах заказов и распределении задач по швеям?</div>
<div class="q-hint">Расскажите как есть, без прикрас. Важно понять реальный процесс, а не идеальный. Можно упомянуть конкретных сотрудников и их роли.</div>
<textarea class="q-textarea" placeholder="Напишите или надиктуйте ответ..."></textarea>
</div>
<div class="q-footer">
<span style="font-size:12px;color:var(--muted);">Можно отвечать голосом</span>
<div class="q-footer-right">
<button class="voice-btn">🎙️ Голос</button>
<button class="save-btn">Сохранить и дальше →</button>
</div>
</div>
</div>
<!-- Заблокированный -->
<div class="q-card" style="opacity:0.5;">
<div class="q-card-head">
<span class="q-num">Вопрос 4 из 8</span>
<span style="font-size:11px;color:var(--muted);">🔒 Ответьте на вопрос 3</span>
</div>
<div class="q-body">
<div class="q-text">Какие метрики и KPI вы используете для оценки работы цеха?</div>
</div>
</div>
</div>
</div>
</div>
<script>
function showScreen(idx, tab) {
document.querySelectorAll('.screen').forEach((s, i) => s.classList.toggle('active', i === idx));
document.querySelectorAll('.tab').forEach((t, i) => t.classList.toggle('active', i === idx));
}
</script>
</body>
</html>