Контур: материалы к старту
Всё, что есть по проекту, на одной странице: суть ТЗ, схемы, экраны, план работ и вопросы, которые надо закрыть до написания спеки. Открытые решения собраны во втором разделе — с него удобно начинать созвон.
Суть за минуту
Контур собирает в одном месте деньги, часы, FTE, сроки и приёмку по каждому проекту и по портфелю. Данные приходят из 1С ДО, 1С БИТ Финанс и Сферы. Если данных нет, Контур так и пишет — «Нет данных», а не 0.
Портфель и карточка
Портфель, реестр СВП, карточка из 9 вкладок: обзор, план и факт, результаты, команда, финансы, управление, риски, статус-отчёты, логи.
Свод и программа
План и факт денег и FTE по трём стримам, производственная программа на год, нормы часов.
Стандартные и управленческие
Утилизация, выручка, долг, сроки; управленческий раздел с переходом от сигнала к источнику.
Кадровый модуль
Заявки, назначения, ставки, отсутствия. По ТЗ это «действующий модуль Контура», который не переделывают.
Входит
- Ручное создание проекта руководителем стрима
- Карточка в Сфере по кнопке и раз в сутки, обратно — сводные часы
- Договоры из 1С ДО; акты, счета, оплаты из 1С БИТ Финанс
- Бюджет с согласованием, P&L, приёмка бизнес-результатов
- Права на сервере для 4 ролей, журнал, выгрузки Excel/PDF/CSV
Не входит
- Задачи, канбан и учёт времени — остаются в Сфере
- Кабинеты заказчика и сотрудника, договорное оформление
- Форматы и API интеграций — отдельное ТЗ
- Валюты, налоги, зарплата, согласование трудозатрат
- Маржа как показатель (RPT-04)
Различать три случая: неизвестное значение, подтверждённый ноль и известную часть неполного итога. Пропуск в данных никогда не превращается в 0, а неизвестная прибыль не называется ни прибылью, ни убытком.
Вопросы на созвон
Собраны из ТЗ 2.7, пакета 1.1 и сверки с тем, что уже работает. Сверху — то, без чего спеку не начать.
Архитектура и источники
Контур — новое приложение или развитие стаффинга?
ТЗ называет кадровый модуль «действующим модулем Контура». В реальности это отдельный сервис staffing.loodsen.ru, и его ADR-0007 описывает Контур как внешнюю платформу с границей через API, без общих таблиц.
Решают: владелец продукта, техлид · влияет на всёОткуда факт часов: Сфера или Time?
ТЗ берёт сводные часы из Сферы по ID карточки. Стаффинг уже читает списания напрямую из Time (GET /logs), а у Сферы есть ещё свой отчёт по elapsed time. Нужен один источник, иначе цифры разойдутся.
Кто мастер проекта и когда он меняется?
По ТЗ проект создаётся в Контуре и уходит в Сферу. Сейчас мастер — рабочая группа Сферы с PROJECT=Y, и стаффинг читает проекты оттуда (Q-13). Нужны дата переключения и правило для уже существующих групп Сферы.
Есть ли доступ к 1С БИТ Финанс?
Интеграции с БИТ Финанс нет ни в одном нашем репозитории. Договоры 1С сейчас пушит в смарт-процесс «Договоры» Сферы (24 поля, GUID). Нужно понять: Контур читает договоры из Сферы или напрямую из 1С ДО, и кто даёт тестовый доступ к обеим 1С.
Решают: финансы, ИТ 1С · самый длинный срокКак договор связан с проектом?
В Сфере прямой связи нет: договор → сделка → рабочая группа. ТЗ хочет прямой выбор договора в паспорте проекта, один договор на несколько проектов. Ключ связи 1С ДО ↔ 1С БИТ Финанс не определён (решение владельца № 4 отложено).
Решают: финансы, аналитикаРоли и доступ
Откуда берутся стримы и роли?
Сущности «стрим» и ролей финансиста, руководителя стрима и руководителя компании нет ни в Сфере, ни в стаффинге. В стаффинге есть только pm, rm, viewCost и admin. Q-14 предлагает схему: руководитель практики → rm, РП → pm, остальные — чтение отчётов.
Решают: владелец продуктаКто нажимает «Отправить в Сферу» и кто переводит в «Планирование»?
В пакете роли для кнопки прямо не согласованы. В ТЗ не сказано, кто переводит проект из «Запланировано» в «Планирование», хотя от этого зависит обмен со Сферой.
Решает: Любовь ЕлагинаКто видит расходные ставки и зарплатные данные?
В стаффинге расходная ставка закрыта флагом viewCost, источник — ручной ввод (живой 1С нет, Q-04). В Контуре P&L видят все четыре роли. Нужна граница видимости.
Решают: финансы, HRПравила и расчёты
Какие пороги загрузки правильные?
KPI-46: ниже 80% — красный. KPI-47: 70–80% — только предупреждение, критично ниже 70%. Зелёный — только ровно 100%, то есть 99,9% уже жёлтый.
Решает: Любовь ЕлагинаДаёт ли Сфера часы по месяцам?
Гарантирован только итог по проекту. Без помесячных данных большая часть графиков FTE, часов и утилизации покажет «Нет данных». Откуда стоимость труда и в каком разрезе — тоже не решено (решение № 5 → № 3).
Решают: аналитика, команда СферыОдна норма часов или две?
Бюджетный FTE считается от фиксированных 176 ч, ёмкость и расход команды — от настраиваемой нормы. В стаффинге уже есть персональная норма H с вычетом отсутствий. Какие «будние дни» брать — производственный календарь РФ или пн–пт?
Решает: Любовь ЕлагинаГде мастер доходных ставок?
Сейчас ставки лежат в трёх местах: ldsn_project_user_rates Сферы, сметы ldsn_estimates, снимок R в назначении стаффинга. ТЗ добавляет четвёртое — «Доходные ставки по ролям» в Финансах проекта.
Что с общим договором, отклонённым бюджетом и закрытием периода?
Деление сумм общего договора отложено (KTR-08 — только исследование, карточки на реализацию нет). Статуса «бюджет отклонён» нет. Процедура закрытия периода, удаление проекта и смена стрима не описаны.
Решают: финансы, Любовь ЕлагинаОрганизация работ
Что войдёт в первый релиз?
В пакете 20 карточек и критический путь из 11 шагов, но нет сроков, оценок и приоритетов между группами. Предлагаю MVP: права, паспорт, команда через стаффинг, часы, план-график, обзор и портфель. Финансы — когда будет доступ к 1С.
Решают: всеГде код и стенды?
Нужен доступ к коду прототипа v165, иначе нельзя выполнить KTR-00 (сверка требований с кодом). Нужны репозиторий, окружения и общий UI-кит (Q-12: стек хоста для Module Federation).
Решают: техлидКто принимает работу?
В пакете сказано только «назначенный человек». Нужны ревьюер по каждой группе и владелец сквозной приёмки KTR-19 (матрица AT-01…39).
Решают: владелец продуктаПотоки данных
Слева — схема из ТЗ 2.7. Справа — как это ляжет на системы, которые уже работают.
ТЗ 2.7, раздел 12. Общий договор на несколько проектов — на согласовании.
flowchart TB
subgraph src["Источники"]
DO["1С ДО
договоры"]
BIT["1С БИТ Финанс
акты, счета, оплаты"]:::gap
TIME["Time
списания часов"]
end
subgraph sph["Сфера (Битрикс24)"]
GRP["Рабочая группа
PROJECT=Y"]
DOG["Смарт-процесс
«Договоры»"]
RATE["Доходные ставки
ldsn_project_user_rates"]
end
subgraph kt["Контур"]
CARD["Карточка проекта"]:::new
FIN["Финансы, бюджет, P&L"]:::new
REP["Портфель и отчёты"]:::new
end
STF["Стаффинг
заявки, назначения, FTE"]
DO -- "push по GUID (есть)" --> DOG
DO -. "по ТЗ: напрямую" .-> CARD
BIT -. "нет интеграции" .-> FIN
CARD -. "по ТЗ: создаёт карточку" .-> GRP
GRP -- "проекты (есть)" --> STF
TIME -- "/logs (есть)" --> STF
TIME -. "по ТЗ: через Сферу" .-> GRP
GRP -. "сводные часы" .-> CARD
RATE -- "ставки R (есть)" --> STF
STF -. "события /events (REQ-042, отложено)" .-> FIN
CARD --> FIN --> REP
classDef new fill:#e2f2ef,stroke:#0e7a6d,color:#16283f
classDef gap fill:#fbe7e5,stroke:#b3261e,color:#16283f
Что уже есть
Стаффинг и Сфера уже закрывают часть Контура. Таблица ниже — кандидаты в мастер для каждой сущности.
Стаффинг (ресурсное планирование)
- NestJS + Postgres, UI на Vue 3 встраивается через Module Federation:
mount(el, ctx) - Заявки, назначения с FTE по дням, доходная R и снимок расходной C, отсутствия, календарь, персональная норма H
- Проекты и люди — копия из Сферы, часы — из Time
- Роли: pm, rm, viewCost, admin; вход из вкладки Сферы или через Keycloak
- ADR-0007: стаффинг — этап «Команда и ресурсы» Контура; заделы под интеграцию отложены (REQ-041…048)
Сфера
- Проект — рабочая группа: тип, категория, код проекта, режим проверки времени
- Договоры: 1С пушит в смарт-процесс «Договоры», 24 поля, upsert по GUID
- Связь с проектом только через сделку: договор → сделка → группа
- В сделке — суммы по ЦФО и даты актов и оплат 1…12; есть сметы с ролями и ставками
- Бюджета проекта, P&L и 1С БИТ Финанс нет
| Сущность | По ТЗ 2.7 | Сейчас на деле | Что решить |
|---|---|---|---|
| Проект | Контур, создаёт руководитель стрима | Рабочая группа Сферы; стаффинг читает её | Дата переключения мастера, судьба старых групп |
| Договор | 1С ДО → Контур | 1С → смарт-процесс Сферы по GUID | Читать из Сферы или из 1С ДО |
| Акты, счета, оплаты | 1С БИТ Финанс → Контур | нет нигде | Доступ, контракт, ключ связи с 1С ДО |
| Часы | Сфера, сводно по проекту | Time /logs; часть списаний в карантине | Один источник и разрез по месяцам |
| Стоимость труда | Сфера, отдельная сумма | Не считается; C — ручной ввод в стаффинге | Источник и период |
| Сотрудники, назначения, FTE | Кадровый модуль Контура | Стаффинг (мастер заявок и назначений) | Встраивание и события стаффинга |
| Доходные ставки | Финансы проекта, по ролям | Сфера + сметы + снимок в стаффинге | Один мастер |
| Стримы, роли | 3 стрима, 4 роли | нет нигде | Справочник и сопоставление ролей (Q-14) |
| Бюджет, P&L, риски, приёмка | Контур | Нет | Строится с нуля |
Роли и права
Права проверяются на сервере сразу по роли, набору проектов, состоянию объекта и версии — для экрана, прямой ссылки, выгрузки и вложения.
РП
Ведёт план-график, результаты и риски, готовит бюджет и передаёт на проверку, запускает и закрывает проект.
Финансист
Утверждает бюджет, правит первичные затраты, сверяет документы 1С. Управленческих отчётов не видит.
Руководитель стрима
Создаёт проект и назначает РП, согласует приёмку, ведёт реестр СВП и нормы часов.
Руководитель компании
Сводный контроль, разрешает плановый убыток, принимает статус-отчёты.
| Действие | РП | Финансист | Рук. стрима | Рук. компании |
|---|---|---|---|---|
| Просмотр вкладок и выгрузки | свои | периметр | свои стримы | все |
| План-график и результаты | изменять | читать | изменять* | читать |
| Ручное создание проекта | нет | нет | да | нет |
| Назначение РП | нет | нет | да | нет |
| План и прогноз месяца | да | да | читать | читать |
| Передать бюджет на проверку | да | нет | нет | нет |
| Утвердить бюджет | нет | да | нет | нет |
| Разрешить плановый убыток | нет | нет | нет | да |
| Первичные затраты | читать | изменять | читать | читать |
| Отправить подтверждение приёмки | да | нет | нет | нет |
| Согласовать подтверждение приёмки | нет | нет | да | нет |
| Реестр СВП и его Excel | нет | нет | да | нет |
| Управленческие суммы P&L | да | да | да | да |
| Нормы часов | нет | нет | да | да |
| Управленческая отчётность | да | нет | да | да |
Матрица — ТЗ 2.7, раздел 1. * Решение владельца № 1 из пакета 1.1: план-график правит РП и руководитель закреплённого стрима; в ТЗ у руководителя стрима было «читать».
Модель данных
Основные сущности и связи по ТЗ 2.7, разделы 3 и 12. Связь документа с проектом хранится отдельно от самого документа.
flowchart TB STREAM["Стрим
LZ · LS · LP"] CONTRACT["Договор
1С ДО"] FINDOC["Акт · счёт · платёж
1С БИТ Финанс"]:::gap MAPPING["Сопоставление
документ ↔ проект, с историей"] PROJECT(["Проект"]):::core SPHERECARD["Карточка Сферы
1 к 1, ключ — ID Контура"] HOURS["Поставка часов
итог или период"] EMPLOYEE["Сотрудник"] ASSIGN["Назначение · FTE
стаффинг"] subgraph mgmt["Управление"] PLANVER["Версия плана-графика
первая — baseline"] --> MILESTONE["Этап · веха"] RESULT["Бизнес-результат"] --> ACCEPT["Запрос приёмки
1–3 файла"] RISK["Риск"] STATUSREP["Статус-отчёт ПК"] end subgraph money["Деньги"] BUDGET["Версия бюджета
снимки"] COST["Затрата · доп. статья"] PROGCELL["Ячейка программы
месяц × FTE"] end STREAM -- "код в стриме" --> PROJECT CONTRACT -- "один на несколько" --> PROJECT CONTRACT --> FINDOC --> MAPPING --> PROJECT PROJECT --> SPHERECARD --> HOURS EMPLOYEE --> ASSIGN --> PROJECT PROJECT --> mgmt PROJECT --> money classDef core fill:#172b45,stroke:#172b45,color:#ffffff,font-weight:700 classDef gap fill:#fbe7e5,stroke:#b3261e,color:#16283f
Плюс: коды-псевдонимы проекта, прогноз месяца, запрос изменения, история стадий, журнал событий (неизменяемый), нормы календаря, доходные ставки ролей.
Статусы и процессы
Стадия проекта, статус бюджета и статус приёмки хранятся раздельно. Архив — отдельный признак, а не стадия.
Схемы шире экрана — листайте вбок.
stateDiagram-v2
direction TB
state "Запланировано" as p0
state "Планирование" as p1
state "Выполнение" as p2
state "Приёмка" as p3
state "Закрыт" as p4
[*] --> p0 : рук. стрима создаёт
p0 --> p1 : кто? (R2)
p1 --> p2 : РП, бюджет утверждён
p2 --> p3 : РП передаёт
p3 --> p4 : РП, чек-лист выполнен
Стадия проекта. В «Планировании» проект уходит в Сферу.
stateDiagram-v2
direction LR
state "Черновик" as b0
state "На проверке" as b1
state "Утверждён" as b2
[*] --> b0
b0 --> b1 : РП передаёт
b1 --> b2 : финансист
b1 --> b1 : не прошёл, статуса «отклонён» нет
b2 --> b0 : правка ручной базы или статьи
Бюджет. Плановый убыток требует разрешения руководителя компании до утверждения.
stateDiagram-v2
direction LR
state "Готов" as r0
state "На согласовании у рук. стрима" as r1
state "Принято заказчиком" as r2
state "Отклонено с причиной" as r3
[*] --> r0 : РП отмечает
r0 --> r1 : РП, 1–3 файла
r1 --> r2 : согласовать
r1 --> r3 : отклонить
r3 --> r1 : новый запрос
Приёмка бизнес-результата. Смена версии результата делает запрос неактуальным.
stateDiagram-v2
direction LR
state "Ожидает отправки" as s0
state "Отправлено" as s1
state "Создано в Сфере" as s2
state "Ошибка обмена" as s3
[*] --> s0 : кнопка или сутки
s0 --> s1
s1 --> s2 : ID и ссылка
s1 --> s3
s3 --> s0 : повторить
Обмен со Сферой. Внешний ключ — ID Контура; один проект — одна карточка.
Чек-лист закрытия проекта (CLS-01)
Вехи плана-графика завершены · профильная проверка пройдена · итоговый результат принят · есть закрывающие документы · команда освобождена · финансовый факт полон.
Расчёты
Деньги — до копеек, события — в UTC, срезы — по МСК. Деньги показываются накопленно за проект, FTE — за период, долг — на дату среза.
| Показатель | Формула | Правило |
|---|---|---|
| Плановая прибыль | Дп − Рп | Минус — только с разрешения руководителя компании |
| Плановый расход команды | Σ FTE × норма × ставка | По назначениям и расходным ставкам |
| Документальный доход | Σ подписанных актов | Только сопоставленных с проектом, по дате подписи |
| Фактический расход | стоимость труда + первичные затраты | Стоимость труда из часов не выводится |
| Фактическая прибыль | Дф − Рф | Только если обе суммы известны |
| Дебиторская задолженность | Σ max(0, обязательство − оплаты) | Счёт и акт по одному обязательству не удваиваются |
| Отклонение часов | (ф − п) ÷ п × 100 | При нулевом плане процента нет |
| Бюджетный FTE | часы ÷ норма периода | Норма 176 ч × доля будних дней месяца |
| Утилизация | часы ÷ ёмкость × 100 | Ёмкость 0 — утилизация неизвестна |
| Контрольный пример | Дано | Ожидается |
|---|---|---|
| Часы | план 3 000 ч, факт 5 000 ч | +2 000 ч, +66,7% |
| Факт без детализации | Сфера дала только итог | помесячный факт неизвестен |
| Фактический расход | труд 10 000 ₽ + затраты 2 000 ₽ | 12 000 ₽ |
| FTE и утилизация | факт 24 ч, норма 80 ч, ёмкость 32 ч | 0,3 FTE и 75% |
| Границы загрузки | 79,99 / 80 / 99,99 / 100 / 100,01% | красный, жёлтый, жёлтый, зелёный, перегрузка |
| Долг | обязательство 120 000 ₽, оплата 80 000 ₽ | 40 000 ₽ |
| Ручной P&L | база 30 000 ₽ + статья 3 000 ₽ | 33 000 ₽; при базе 0 — 3 000 ₽ |
| Производственная программа | 1,25 и 0,75 FTE, остальное пусто | ≥ 2 FTE-месяца; после нулей: пик 1,25, людей 2 |
Здоровье проекта
Красный убыток по полному факту, перерасход полного плана, просроченный долг, веха с задержкой более 7 дней, работы коммерческого проекта без контрактации.
Жёлтый прочие отклонения, высокий риск, неполные данные. Зелёный данных достаточно, сигналов нет.
Экраны M01–M10
Макеты из пакета 1.1 на демо-проекте LZ0012. Нажмите на картинку, чтобы открыть крупно.
Демо-числа M07 и M09 не сходятся: известная прибыль 50 000 ₽ получается от управленческого дохода 130 000 ₽, а не от документального 120 000 ₽. Для приёмки нужен выверенный набор данных.
План работ KTR-00…19
Граф зависимостей без транзитивных стрелок. Красным — критический путь, пунктир — условные зависимости.
flowchart TB K00["00 Сверка с v165"] --> K01["01 Права 4 ролей"] --> K02["02 Паспорт, стадии"] K02 --> K03["03 Команда, стаффинг"] K02 --> K04["04 Договоры 1С ДО"] K02 --> K05["05 Карточка в Сфере"] K02 --> K09["09 План-график"] K02 --> K10["10 Результаты, приёмка"] K05 --> K06["06 Часы из Сферы"] K04 --> K07["07 1С БИТ Финанс"] K07 --> K08["08 Общий договор"]:::hold K09 --> K11["11 Риски, закрытие"] K10 --> K11 K03 --> K12["12 Общие расчёты"] K06 --> K12 K09 --> K12 K07 --> K13["13 Финансы, P&L"] K12 --> K13 K13 --> K14["14 Согласование бюджета"] K14 --> K15["15 Свод, программа"] K13 --> K16["16 Портфель, обзор"] K16 --> K17["17 Отчёты"] K10 --> K18["18 Выгрузки"] K15 --> K18 K17 --> K18 K11 --> K19["19 Сквозная приёмка"] K18 --> K19 K08 -.-> K13 K13 -.-> K11 K14 -.-> K11 classDef crit fill:#fbe7e5,stroke:#b3261e,color:#16283f classDef hold fill:#fdf2dc,stroke:#9a5b06,color:#16283f,stroke-dasharray:4 3 class K00,K01,K02,K05,K06,K12,K13,K14,K15,K18,K19 crit
| Группа | KTR | Суть | Экран | Блокер |
|---|---|---|---|---|
| A. Основа | 00 | Сверить прототип v165 с ТЗ, список решений | — | Нужен код v165 |
| 01 | Права 4 ролей на сервере, история с ролью | все | R1 | |
| 02 | Ручное создание, коды LZ/LS/LP, стадии | M04 | R2 | |
| 03 | Команда через действующий кадровый модуль | M05 | A1 | |
| B. Интеграции | 04 | Договоры из 1С ДО, один договор — несколько проектов | M04 | A4, A5 |
| 05 | Карточка в Сфере: кнопка и раз в сутки | M04 | техконтракт (№ 3) | |
| 06 | Часы и стоимость труда из Сферы | M02, M03 | A2, C2 | |
| 07 | Акты, оплаты, счета из 1С БИТ Финанс | M07 | A4 | |
| 08 | Сопоставление по общему договору — исследование | M07 | отложено (№ 4) | |
| C. Управление | 09 | План-график, baseline, отклонения сроков | M03 | — |
| 10 | Бизнес-результаты и приёмка через РП | M06 | — | |
| 11 | Риски, статус-отчёты ПК, изменения, закрытие | M10 | — | |
| D. Финансы | 12 | Единый расчётный слой: часы, FTE, ёмкость, сроки | M02–M09 | C3 |
| 13 | Финансовые показатели, P&L, ручные базы | M07 | C4 | |
| 14 | Согласование бюджета, разрешение убытка | M07, M08 | C5 | |
| 15 | Бюджетный свод и производственная программа | M08 | — | |
| E. Портфель | 16 | Портфель, обзор, правила здоровья | M01, M02 | — |
| 17 | Отчёты и раскрытие показателей | M09 | — | |
| 18 | Выгрузки Excel, PDF, CSV | M06, M08, M09 | формы §8 | |
| 19 | Сквозная приёмка, матрица AT-01…39 | все | O3 |
Решения владельца продукта из пакета 1.1
| № | Статус | Решение |
|---|---|---|
| 1 | принято | План-график правят РП и руководитель закреплённого стрима, остальные читают в своём периметре |
| 2 | принято | В Сферу — кнопкой и раз в сутки, через один процесс и один внешний ключ |
| 3 | отложено | Поля, ключи, форматы, время суточного задания, доступ к тестовым системам |
| 4 | отложено | Ключ связи двух 1С, распределение общего договора, полномочия; до решения суммы остаются на договоре |
| 5 | принято | Стоимость труда приходит из Сферы отдельной суммой |
| 6 | принято | Зоны загрузки: <80% красный, 80–100% жёлтый, ровно 100% зелёный, >100% перегрузка |
Реестр KPI-01…47
Приложение B пакета 1.1. Подтверждённый ноль — значение, пропуск — отдельный признак.
Глоссарий
| Стрим | Направление: проекты (LZ), сервисные услуги (LS), продукты (LP). У каждого своя нумерация кодов. |
| РП | Руководитель проекта, продукта или сервиса. |
| Реестр СВП | Реестр проектов руководителя стрима с выгрузкой в Excel. Расшифровки в ТЗ нет. |
| Статус-отчёт ПК | Периодический отчёт РП с 6 индикаторами здоровья. Расшифровки «ПК» в ТЗ нет. |
| Baseline | Первая отправленная заказчику версия плана-графика. |
| Бизнес-результат | Результат для заказчика со сроками, плановой суммой и моделью актирования. |
| FTE / FTE-месяц | Часы ÷ норма периода / единица производственной программы. |
| Ёмкость | Доступные часы с учётом занятости и отсутствий. |
| Документальный факт | Факт по документам 1С БИТ Финанс. |
| Ручная база | Управленческая сумма плана или факта P&L с основанием; заменяет автоматическую. |
| Первичные затраты | Прочие затраты в базе факта расхода; правит финансист. Источник в ТЗ не назван. |
| Дп / Дф / Рп / Рф | Плановый и фактический доход, плановый и фактический расход. |
| FIX / T&M | Фиксированная цена / время и материалы. |
| R / C / H | В стаффинге: доходная ставка, расходная ставка, персональная норма часов. |