V8 handoff V4 — актуальная рабочая версия Cloudflare Pages опубликовано

Интерактивная дорожная карта и логика работы дашборда

Это интерактивная схема, которая объясняет, как устроен дашборд «Индустриальный парк · Тюмень»: какие версии были сделаны, как он связан с Google-таблицами, откуда берутся показатели, как обновляются данные, что является реальными источниками, а что — примерами/демоданными, и как дальше развивать систему без потери контекста.
Текущая боевая версия
V4
Финансовых пакетов
22
Тендерных позиций
90
Закупочных задач
94

1. Дорожная карта версий

Как эволюционировал проект и зачем нужна каждая версия.
V1 · старт

Первый статический дашборд

Базовая структура, ручные данные, проверка формата руководческой панели.
V2 · интеграция

Связка Google Sheets → Apps Script → веб-дашборд

Появились JSON/JSONP-выгрузка, обновление из Google-таблиц и воспроизводимая схема данных.
V3 · архитектура по референсу

Адаптация логики Nikiforov

KPI, бюджет, сроки, проблемы, виджет бюджета/прогресса, управленческая логика.
V4 · основная рабочая версия

Наиболее полная функциональная версия

Автообновление, глобальные фильтры, финансовая логика, тендеры, закупки, «Что если», детализация. В этой ветке дополнительно переработан блок «Бюджет по месяцам / кварталам / годам» и исправлен режим «Год».
V5

Control Tower

Тёмная визуальная версия, больше акцент на диспетчерский режим.
V6

Штаб индустриального парка

Удобный формат для ежедневных планёрок и контроля просрочек.
V7

Board Pack / управленческий пакет

Версия под руководство: сжатая подача, акцент на решениях и отклонениях.
V8 handoff

Полный архив продолжения

Собрана вся логика, исходники, публикации, состояние Netlify и Cloudflare Pages, а также текущая V4.

2. Что сейчас является актуальным

Краткое правило, на что опираться дальше.
Фундамент: V4
Ежедневная работа: V6-подход
Руководство: V7-подача
Референс визуальной логики: Nikiforov

Практическое правило

Если делать новую версию, то не начинать заново. Нужно брать V4 как рабочее ядро, подтягивать лучшие решения из V6/V7 и расширять реальные данные.

3. Архитектура: как всё связано

Упрощённая карта данных от Google-таблиц до опубликованного дашборда.

Google Sheets

План-факт, ГПР тендерный план, закупки, вспомогательные листы

Apps Script

Читает листы, нормализует данные, собирает JSON/JSONP, частично кэширует

Веб-дашборд

HTML/CSS/JS. V4 читает endpoint, применяет фильтры, считает витрину показателей

Публикация

Cloudflare Pages / Netlify / локально из dist/index.html

4. Реестр источников Google Sheets

Ссылки можно редактировать прямо здесь. Нажмите «Сохранить источники» — значения сохранятся в браузере этого компьютера. Кнопка «Открыть ↗» ведёт непосредственно в соответствующую Google-таблицу.
Открыть ↗
Открыть ↗
Открыть ↗
Открыть ↗
Важно: сохранение выполняется через localStorage. Поэтому изменения не переписывают исходные Google Sheets и не меняют код дашборда — они меняют только реестр ссылок на этой странице.

4. Источники данных: что откуда берётся

Ниже — основные сущности и их происхождение.
План-факт / финансовая модель главный финансовый источник

Что хранит

  • Бюджет проекта
  • Стоимость КП
  • Фактические затраты
  • EAC / прогноз
  • Резерв
  • Пакеты работ и распределения по периодам
  • Денежный календарь / Cash Flow
Открыть Google Sheet ↗

Во что превращается в дашборде

  • Карточка «Бюджет проекта»
  • Блок «Бюджет по месяцам / кварталам / годам»
  • Сводный Cash Flow
  • EAC + резерв
  • Список «Требуют внимания» по отклонениям
ГПР тендерный план основной операционный источник

Что хранит

  • Вид работ
  • Найдено подрядчиков
  • Начало тендера
  • Окончание тендера / заключение договора
  • Начало работ
  • Приоритет
  • Статус
  • Ссылки на списки подрядчиков
Открыть Google Sheet ↗

Во что превращается

  • Карточка «Тендерные риски»
  • Просроченные и ближайшие позиции
  • Статусы по тендерам
  • Фильтры по виду работ / статусу / месяцу / приоритету
  • План на ближайший месяц
Закупочная таблица / master sheet база снабжения

Что хранит

  • Материалы и позиции
  • Количество, единицы, цена
  • Поставщики
  • Статусы КП / оплаты / поставки
  • Комментарии и риски
Открыть Google Sheet ↗

Во что превращается

  • Закупочные статусы
  • Сигналы по «узким местам»
  • Формирование управленческих выводов
  • Воронка: найдено компаний / дали КП / есть стоимость
Референсные / демонстрационные данные важное ограничение
Что это значит: часть визуализации в ранних версиях была заполнена демонстрационными данными для проверки интерфейса. Например, подрядчики финансовых пакетов, часть календарных дат и физическая готовность местами являлись примером, а не фактом.

5. Слои данных внутри системы

Как разделять «источник», «витрину» и «пример».
Слой Суть Использовать как
Источник Google Sheets: реальные рабочие таблицы проекта Источник истины
Нормализация Apps Script: правила очистки, расчётов, JSON-выгрузки Технический слой
Витрина Веб-дашборд V4/V6/V7 Пользовательский слой
Пример Демоданные / примерная физготовность / тестовые ряды Не путать с фактом
Главное правило интерпретации
Физическую готовность нельзя автоматически считать по освоенным деньгам.
Денежный факт и % физготовности — это разные сущности. Если нет подтверждённой физической модели из реальных данных, блок должен быть помечен как пример или заполняться отдельно.

6. Логика блоков дашборда: что показывает каждый блок

Нажмите на блок, чтобы раскрыть его логику расчёта, источники и ограничения.
Карточка «Бюджет проекта» финансы

Откуда берётся

  • Общий бюджет — из финансовой модели / план-факт
  • КП — из колонок стоимости КП
  • Факт — из колонки фактических затрат
  • EAC — прогнозная стоимость завершения
  • Резерв = Бюджет − EAC

Что показывается

  • Крупное значение бюджета
  • Подстрока с КП и EAC
  • Освоено
  • Доля от бюджета
  • Остаточный резерв
Карточка «Прогресс СМР» прогресс
Этот блок исторически использовался как пример физической готовности. Для перевода в полностью боевой режим нужен отдельный подтверждённый источник физготовности по пакетам / объектам / этапам.
Карточка «Тендерные риски» операционный контроль

Откуда берётся

  • Строки ГПР тендерного плана
  • Статусы
  • Готовность / отсутствие готовности
  • Наличие кандидатов / подрядчиков

Что считается

  • Всего тендеров
  • Сколько в красной зоне
  • Сколько без готовности
  • Сколько без кандидатов
Блок «Бюджет по месяцам / кварталам / годам» ключевой визуальный блок

Логика

  • Переключение периода: месяц / квартал / год
  • План vs факт
  • Визуализация превышения отдельным цветом
  • Переход к режимам Cash Flow и EAC + резерв
  • Отдельный чекбокс исторического примера

Что исправлено в этой ветке

  • Внешний вид блока приближен к версии Nikiforov
  • Переработаны подписи и ритм столбцов
  • Исправлен режим «Год» — теперь столбцы не пропадают
  • Готовая версия опубликована на Netlify и Cloudflare Pages
Блок «Требуют внимания / Решить» управленческие действия
Это не просто список красивых сообщений. Он должен собирать отклонения, требующие управленческого действия: перерасход, задержки тендеров, отсутствие КП, критические закупки, конфликт сроков, неопределённость по подрядчикам.

7. Как обновляются данные

Фактический цикл обновления от изменения строки в Google Sheet до экрана руководителя.
Шаг 1

Пользователь меняет Google-таблицу

Например, обновляет стоимость КП, факт, статус тендера, приоритет, дату или список подрядчиков.
Шаг 2

Apps Script читает листы

Скрипт преобразует листы в нормализованную структуру, чистит форматы чисел/дат/процентов и собирает JSON-ответ.
Шаг 3

Дашборд запрашивает endpoint

V4 поднимает данные при загрузке страницы и умеет автообновляться.
Шаг 4

Фильтры пересчитывают витрину

После загрузки фронтенд пересчитывает карточки, риски, списки, графики и показатели под выбранные фильтры.
Шаг 5

Пользователь получает обновлённую картину

Никаких ручных перекопирований в HTML быть не должно — всё должно приезжать из источника.

8. Технические особенности обновления

То, что важно знать при поддержке.
Пункт Факт
Автообновление V4 Есть, примерно раз в 5 минут
V5–V7 В основном обновляются кнопкой, без такого же автоцикла
JSON-ответ Около 123 КБ в изученной версии
Кэш Apps Script Настроен с порогом меньше текущего ответа, поэтому фактически может не срабатывать
Фильтры Работают на стороне дашборда после получения данных
Источник истины Google Sheets, а не HTML-файл
Что нужно улучшить в будущем
  • Сделать более надёжную схему кэширования Apps Script
  • Подтянуть реальные физические данные по прогрессу
  • Убрать демонстрационные участки, где они ещё остались
  • Стандартизировать справочники статусов и пакетов
  • Сделать единый data contract для фронтенда и Apps Script

9. Как собирается и публикуется

Чтобы новая ветка могла быстро продолжать работу.

Локальная структура

  • source/ — исходники
  • dist/index.html — готовая публикационная версия
  • README.md — пояснения
  • handoff V8 — полный архив продолжения

Площадки публикации

  • Cloudflare Pages — основной рабочий URL
  • Netlify — резервный URL
  • Локально — прямое открытие dist/index.html
Команда публикации в Cloudflare Pages
npx.cmd wrangler pages deploy .\dist --project-name industrial-park-dashboard-v4
Что важно не забыть при новой публикации
  • Публиковать именно содержимое актуальной dist-папки
  • После публикации проверить режимы бюджета: месяц / квартал / год
  • Проверить, не затёрта ли резервная Netlify-версия
  • Хранить handoff-архив перед крупными правками

10. Ограничения, спорные места и риски

То, что нельзя забывать при принятии решений по дашборду.
Риск / ограничение Почему важно Что делать
Физготовность частично примерная Можно ошибочно принять демоданные за факт Подключить отдельный реальный источник
Не все тендеры имеют заполненную готовность Пустое значение нельзя считать нулём Отдельно различать «0%» и «нет данных»
В GPR исторически не везде заполнены даты Нельзя корректно считать реальный Гант / критический путь Дочистить исходные данные
Кэш Apps Script Может не работать так, как ожидается Пересмотреть лимиты и логику выдачи
Часть README в истории могла устареть Документация нескольких версий не всегда синхронна Держать единый актуальный START_HERE

11. Что делать дальше

Рекомендованный следующий план развития.
Шаг A

Зафиксировать V4 как production-core

Все новые доработки делать не «рядом», а поверх V4 с versioning.
Шаг B

Подключить реальные данные физготовности

Чтобы блок «Прогресс СМР» перестал быть примером.
Шаг C

Унифицировать словари статусов и пакетов

Одна логика для тендеров, закупок, пакетов и проблемных зон.
Шаг D

Усилить управленческий блок «Решить»

Сделать его центром задач на неделю / планёрку / штаб.
Шаг E

Подготовить V9

Единая production-версия с лучшей логикой V4 + удобством V6 + подачей V7.