# Lot Card

Карточка лота в списке тендеров (`wbl-lot-card`). Одна на все четыре подраздела
(Магистраль, Последняя миля, Экспресс, Внешние заказчики) и на все три роли —
состав правой колонки и действий переключается входом `role`.

Источник: мастер-компонент «🚛 lot», файл «Тендеры» (`jwmCEMZZjn9cieKYqxI6FL`),
нода `17982:213662`, вариант `Property 1=Default` (`15063:28834`).

## Local component contract

- **Анатомия — пять ячеек**, шириной 360 / 348 / 240 / 260 и колонка действий
  по контенту; внутри ячейки `--space-400` padding и `--space-200` между
  строками. Не грид с колоночными гэпами.
- **Характеристики маршрута и требования к ТС выводятся тегами**
  (`wbl-tag`, size S), каждый пункт — свой тег. Не склеивать в одну строку.
- **Подписи колонок обязательны**: «Направление», «Характеристики маршрута»,
  «Требования к ТС» — они есть в макете (`caption/cat`, 11px medium, серые).
- «Требуется экипаж» — `wbl-badge` appearance `warning` с иконкой `people`,
  рейтинг — `wbl-badge` appearance `info` с иконкой `star`. Не обычный текст.
- Тип тендера — один `wbl-tag` с полным текстом
  («Аукцион · Без начальной ставки» — единый тег, не два элемента).
- Ставка по ролям: `logist`/`carrier` видят «Текущая ставка» (или «Пока нет»)
  и ниже «Начальная ставка», если она есть у типа; `participant` вместо этого
  видит «Ваша ставка» с короной при лидерстве. Логисту дополнительно
  показывается имя лидирующего перевозчика ссылкой.
- **Действия задаются матрицей роль × этап** (`lotActionsFor`), строго по
  компонент-сету `_actions` (18015:229501). Этап — не статус: на несколько
  статусов приходится один набор кнопок (`actionStageForStatus`), при
  необходимости переопределяется входом `actionStage`.

  | Роль | Этап | Кнопки |
  |---|---|---|
  | Логист ВБ | ожидание | три точки |
  | Логист ВБ | сбор заявок | «Отметить допуск» + три точки |
  | Перевозчик | сбор заявок | «Подать заявку» + закладка + три точки |
  | Перевозчик | торги | закладка + три точки |
  | Перевозчик | ожидание / завершён | закладка |
  | Участник | ожидание | закладка + три точки |
  | Участник | торги | «Перебить» + закладка + крестик (**задизейблен**) |
  | Участник | торги, мультилот | закладка + крестик (danger, активный) |
  | Участник | завершён | закладка |

  Раскладка везде одна: основная кнопка сверху, иконки строкой под ней,
  по правому краю. Состав НЕ зависит от подраздела — «Отметить допуск»
  принадлежит этапу сбора заявок, а не Внешним заказчикам.
- Ховер по карточке подсвечивает обводку в `--color-stroke-accent`.
- Круговой маршрут рисует ⇄ вместо → в обеих строках маршрута — **кроме
  Внешних заказчиков**, где круговых маршрутов не бывает и признак
  игнорируется (`sectionAllowsRoundTrip`).
- Строка маршрута: `{routeNumber} – {from} → {to}`; номер опционален
  (у Внешних заказчиков его нет). Если есть промежуточные точки
  (`route.viaCount`), между стартом и финишем встаёт тег «+N»:
  «Москва → +2 → Краснодар» (макет 18307:72451).
- Когда направлений несколько (`direction.count > 1`), вместо «A → B»
  выводится «N направлений» — тот же title3, подчёркнутый серым пунктиром,
  кликабельный (`directionsClicked`), не акцентная ссылка (17988:217746).

## Отличия подразделов

Подписи задаются `SECTION_COPY` по входу `section`, не хардкодом в шаблоне:

| | Магистраль / Экспресс / Внешние | Последняя миля |
|---|---|---|
| Колонка направления | «Направление» | «Округ» |
| Текущая ставка | «Текущая ставка» | «Текущее предложение» |
| Начальная ставка | «Начальная ставка» | «Начальное предложение» |
| Тарификация | ₽/км, ₽/л·км | ₽/маршрут |

Начальной ставки **не существует** у мультилота, многоэтапного мультилота и
аукциона без начальной ставки — блок не рендерится вообще (`hasStartingBid`),
а не показывается пустым. Многоэтапный мультилот в Последней миле отсутствует
как тип.

## Внешние заказчики (макет `17988:219208` / `18262:117332`)

Подраздел добавляет блоки, которых нет в остальных:

- **ID маршрута** — отдельная строка под маршрутом (`routeId`).
- **«Участники: n»** — счётчик участников виден (`participantsCount`).
  В Магистрали этот счётчик перевозчику не показывается — здесь показывается.
- **Формат доставки** — тег под характеристиками маршрута (`deliveryFormat`).
- **Доп. требования** — бейджи под требованиями к ТС
  (`additionalRequirements`), в макете группа подписана «Дополнительно»,
  подпись скрыта.
- **«Отметить допуск»** — primary-действие, появляется только когда
  `canApproveAccess` (статус проверки участников); при этом колонка действий
  переключается в вертикальную раскладку, как в макете `_actions`.
- Подписи **«Направление» и «Характеристики маршрута» скрыты** — проверено
  по макету (`Container hidden=true` у `18262:117348` и `18373:72959`).
  Подпись «Требования к ТС» при этом остаётся видимой, как и в остальных
  подразделах. Управляется флагами `showDirectionCaption` /
  `showRouteDetailsCaption` в `SECTION_COPY`, не хардкодом.

### Список логиста по макету `18897:14220` (A-002)

Текущий экран внешних заказчиков собран по макету «Внешние заказчики / логист»
(`18897:14220`, карточки «🚛 lot-customer»). Входы ниже есть только у этого
подраздела; остальные подразделы их не передают и выглядят по-прежнему.

- **Заказчик** — строка под маршрутом (`customerName`), description 13px.
- **Отсчёт** — подпись зависит от этапа (`countdownLabel`: «До начала приёма
  заявок:», «До окончания приёма:», «До начала торгов:», «До окончания
  торгов:»), значение всегда с минутами: «1д 23ч 59мин». В остальных
  подразделах подпись по умолчанию «До окончания:» и прежний формат.
- **«Заявок: n · Допущено: m»** (`applicationsCount`, `admittedCount`);
  «Участники: n» — тем же 13px стилем.
- **Направление** переносится: «→ Куда» уходит на вторую строку, каждая
  строка обрезается многоточием.
- **Виды транспорта** — теги-иконки под характеристиками (`transportModes`:
  авто `car`, море `anchor`, авиа `flight`, контейнерное судно
  `ship-container`, паром `ship-ferry`; две последние иконки взяты из макета).
  Подпись вида — доступное имя тега. Вместо иконок может стоять формат
  доставки тегом (`deliveryFormat`, например «АВТО FTL»).
- **Требования** — после бейджей доп. требований тег «+N»
  (`moreRequirementsCount`).
- **«Исп. обязательств»** у внешних заказчиков не выводится
  (`SECTION_COPY.showObligationPeriod = false`). ID маршрута экран больше
  не передаёт — в этом макете его нет.
- **Ставка**: блок «Текущая ставка» можно скрыть (`showCurrentBid`, у
  созданного лота в макете только «Начальная ставка»); «Ставок: n»
  (`bidsCount`) заменяет «Пока нет», логисту рядом ссылка на лидера;
  мультилот показывает «Тарификация»: одна единица текстом
  (`tarifficationLabel`, «₽/км») или «Тарификаций: N» (`tarifficationsCount`,
  подпись по макету `19223:178823`; в макете логиста было «2 тарификации»).
  У мультилота начальной ставки нет никогда (`hasStartingBid`).
- **Перевозчик (макет `19223:178823`, A-003).** Статус «Сбор заявок» у внешних
  заказчиков называется «Сбор заявок на участие» и оранжевый
  (`SECTION_COPY['outer-customer'].statusOverrides`), для обеих ролей.
  «Проверка участников» у внешних заказчиков — залитый оранжевый `wbl-badge`
  `orange` (макет `18897:14220`, A-009); в остальных подразделах — `warning`.
  Лиловый тег «N ТС» рядом с типом (`vehiclesCount`, `wbl-tag`
  `accent-secondary`); тем же видом у внешних заказчиков рисуется «+N» в
  маршруте. Требования к ТС можно передать списком (`vehicleTags`:
  «Рефрижератор x 2», «Тент x 2»). У аукциона на несколько ТС под «Начальная
  ставка» — ссылка «Ставок: n» (`startingBidsCount`, событие `bidsClicked`).
  Начальная ставка у перевозчика до торгов (без блока «Текущая ставка»)
  основным цветом (вариант «_bid/До ставки»); рядом с «Текущей ставкой» и у
  логиста — вторичным.
- **«Мои заявки» перевозчика (макет `19223:178822`, A-003).** Строка
  «Заявка от: дата» под отсчётом (`applicationDate`). Отсчёт без дней —
  часы двумя цифрами («01ч 59мин»), срочность (<2ч — красный, ≤24ч —
  оранжевый) сохраняется и в 13px-строке. «Требуется экипаж», доп.
  требования и «+N» у внешних заказчиков — одной строкой тегов.
- **«Ставок: n» и «Тарификаций: n» — пунктирные ссылки**, как «N направлений»
  (`bidsClicked`, `tarifficationsClicked`). Что по ним открывается
  (запланирован сайддровер) — пока не реализовано.
- **Внутри уведомления** (`grouped`) карточка теряет свою рамку и скругления:
  их держит группа «lot-notification» (макет 19587:92588) — радиус `m`,
  рамка `--color-stroke-danger`; по ховеру рамка группы — как у обычной
  карточки, `--color-stroke-accent` (A-003, для всех групп с уведомлением).
- **Колонка действий одной ширины во всём списке** (A-003): у логиста —
  с «Отметить допуск», у перевозчика и участника — по двум кнопкам-иконкам
  «закладка + меню» (16 · 32 · 12 · 32 · 16 = 108, макет 19223:178822);
  более широкое содержимое («Подать заявку») раздвигает колонку. В ней лежит
  невидимый образец кнопки (`aria-hidden`, `inert`), поэтому ширина не
  прыгает между карточками с кнопкой и без. У участника образец —
  «Перебить» (макет 19223:178821).
- **Участник у внешних заказчиков («Я участник» перевозчика, макет
  `19223:178821`, A-003).**
  - «Ваша ставка» + ставка или «Ставок: n» ссылкой; корона у выигранного
    лота (`isLeading`); зелёный бейдж «Лидируете» со `statistics-up`
    (`participantBidState: 'leading'`).
  - «Перебили» (`participantBidState: 'outbid'`): «Текущая ставка» + ставка
    (или «Ставок: n») + красный бейдж со `statistics-down`, ниже суммы или
    «Перебито: 3 из 7» (`outbidProgress`) и серым «Ваша ставка: …».
  - «Вы победили» — `wbl-badge` `sky-secondary`, рядом оранжевый таймер с иконкой
    `time` (`statusTimer`, «11 ч 59 мин»).
  - Действия на торгах: аукцион — «Перебить» с `judge-hammer` + закладка +
    «Покинуть тендер»; мультилот — закладка + «Покинуть тендер». «Покинуть
    тендер» — активная `wbl-button` `secondary-danger` с подсказкой снизу.
    В остальных подразделах прежняя матрица: крестик «Отказаться от
    участия» у аукциона неактивен.
- **Подсказки и цвет короны у внешних заказчиков (A-003).** Закладка —
  «Сохранить направление» (подпись и подсказка снизу). Крестик по роли:
  логист — «Отменить лот», перевозчик — «Не участвовать», участник («Я
  участник») — «Покинуть тендер». По текущей матрице `_actions` крестик
  виден только участнику; подписи для логиста и перевозчика заданы на
  случай, когда он у них появится. Корона лидера — `--color-text-icon-primary`
  (в остальных подразделах прежний оранжевый).

## Открытые вопросы

- Решено (A-003): тег «N ТС» и составные требования к ТС реализованы
  (`vehiclesCount`, `vehicleTags`).
- Решено (A-002): у мультилота начальной ставки нет, поэтому «Ставок: 7»
  стоит под «Текущая ставка», а не под «Начальная ставка», как в одном
  месте макета.
- Иконки `ship-container` и `ship-ferry` взяты из макета без имён слоёв;
  названия дал прототип.

- Решено (A-003): действия перевозчика и участника у внешних заказчиков
  собраны по макетам `19223:178823`, `19223:178822`, `19223:178821`.
- Решено (A-003, A-009): «Вы победили» — `wbl-badge` `sky-secondary`
  (`content-bg/sky` `#d8f2fd`, текст `content/sky-pressed` `#006999`) во всех
  подразделах; цвет задан в общей таблице статусов, а не в переопределении
  Внешних заказчиков.
- Отсчёт без дней: в «Моих заявках» — «01ч 59мин», в «Я участник» —
  «0ч 59мин». В прототипе единый вид с двумя цифрами часов; нужно выбрать.
- Мультилот и Многоэтапный мультилот собраны по описанию постановки
  (тег типа, признак этапа), но **без сверки с профильными макетами** —
  их node-id не передавались. Требуют проверки.
- Тарификация Последней мили: в макете (`15810:8640`) единица подписана
  «₽/маршрут», в постановке прозвучало «за рейс». Реализовано по макету —
  если верна постановка, поменять `TARIFF_UNIT['per-route']`.
- В макете lot-PM требования к ТС встречаются дважды (ячейка 2, y=128 и
  ячейка 3) — вторая группа выглядит как «Дополнительно» и в дефолтном
  варианте скрыта. Реализована одна группа; нужна ли вторая — вопрос.
