mirror of
https://github.com/wasrusgen/zov-tech.git
synced 2026-06-03 20:24:49 +00:00
Backend: - sheets.is_master(user) — единая роль measurer ∨ assembler - grant_role() автоматически выдаёт парную роль (measurer ↔ assembler) - Новая таблица Assemblies со схемой: client, scope, scheduled_at, status (created|scheduled|in_progress|completed|cancelled), photos_before/in_progress/after, signature_file, gcal_event_id - POST /api/assembly_create — менеджер заводит сборку, при scheduled_at создаётся событие Google Calendar (4 часа) - POST /api/assembly_list — фильтр по роли: менеджер видит свои, мастер — назначенные + неназначенные (created/scheduled) - POST /api/assembly_detail — карточка с правами доступа - /api/photo: добавил MIME для pdf/dwg/dxf (для DWG-блока B+E) Frontend (assembly.js — новый модуль): - Форма /api/assembly_create с валидацией: имя, адрес, scope - Pre-fill из карточки клиента (sessionStorage.prefillAssembly, адрес + measurement_id из последнего замера) - Список сборок + детальная карточка со статусом и составом работ - Маршруты: #/assembly, #/assembly/new, #/assembly/<id> Frontend (app.js + clients.js): - Кнопка «🔨 Заказать сборку» в карточке клиента - Quick-action «Сборки» на главной менеджера - Блок «🔨 Сборки» в кабинете мастера (caps.measurer ∨ assembler) CSS: .assembly-card / .assembly-card-* (золотой бордер) index.html: cache bump v=20260514c
50 lines
2.7 KiB
HTML
50 lines
2.7 KiB
HTML
<!doctype html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no">
|
|
<meta name="theme-color" content="#2C3E50">
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
<meta http-equiv="Pragma" content="no-cache">
|
|
<meta http-equiv="Expires" content="0">
|
|
<title>WASRUSGEN1 · Кабинет</title>
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap">
|
|
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
|
<link rel="stylesheet" href="assets/styles.css?v=20260514c">
|
|
<link rel="stylesheet" href="assets/podbor.css?v=20260514c">
|
|
</head>
|
|
<body>
|
|
<!-- Splash — лого @wasrusgen1 + опилки (16) + вращающийся диск -->
|
|
<div class="loader splash" id="splash">
|
|
<div class="brand-logo-wrap">
|
|
<img class="brand-logo" src="assets/wasrusgen-logo.svg?v=20260514c" alt="@wasrusgen1">
|
|
<div class="splash-dust" aria-hidden="true">
|
|
<span class="dust d1"></span> <span class="dust d2"></span>
|
|
<span class="dust d3"></span> <span class="dust d4"></span>
|
|
<span class="dust d5"></span> <span class="dust d6"></span>
|
|
<span class="dust d7"></span> <span class="dust d8"></span>
|
|
<span class="dust d9"></span> <span class="dust d10"></span>
|
|
<span class="dust d11"></span> <span class="dust d12"></span>
|
|
<span class="dust d13"></span> <span class="dust d14"></span>
|
|
<span class="dust d15"></span> <span class="dust d16"></span>
|
|
</div>
|
|
</div>
|
|
<div class="loader-bar"></div>
|
|
<div class="brand-tagline-gold">CRM</div>
|
|
</div>
|
|
<main id="app"></main>
|
|
<script src="assets/icons.js?v=20260514c"></script>
|
|
<script src="assets/podbor.config.js?v=20260514c"></script>
|
|
<script src="assets/podbor.picts.js?v=20260514c"></script>
|
|
<script src="assets/podbor.js?v=20260514c"></script>
|
|
<script src="assets/clients.js?v=20260514c"></script>
|
|
<script src="assets/zamer-picts.js?v=20260514c"></script>
|
|
<script src="assets/measurements.js?v=20260514c"></script>
|
|
<script src="assets/request.js?v=20260514c"></script>
|
|
<script src="assets/assembly.js?v=20260514c"></script>
|
|
<script src="assets/app.js?v=20260514c"></script>
|
|
</body>
|
|
</html>
|