# Карточка экспресс-аукциона — перевозчик

<!-- wb-memory.v1
{
  "schemaVersion": "wb-memory.v1",
  "id": "screen.tender-carrier-express-auction",
  "kind": "screen",
  "title": "Карточка экспресс-аукциона — перевозчик",
  "lifecycle": "active",
  "authority": "canonical",
  "areaId": "area.tenders",
  "routes": [],
  "links": [
    { "type": "related-to", "targetId": "screen.tender-list", "sourceRefIds": ["S1"] }
  ],
  "sourceRefs": [
    {
      "id": "S1",
      "kind": "spec",
      "authority": "canonical",
      "path": "specs/ux/areas/tenders.md",
      "status": "verified"
    },
    {
      "id": "S2",
      "kind": "figma",
      "authority": "evidence",
      "url": "https://www.figma.com/design/jwmCEMZZjn9cieKYqxI6FL/%D0%A2%D0%B5%D0%BD%D0%B4%D0%B5%D1%80%D1%8B?node-id=17819-1390",
      "status": "verified"
    },
    {
      "id": "S3",
      "kind": "code",
      "authority": "implementation",
      "path": "src/app/app.routes.ts",
      "status": "verified"
    }
  ]
}
-->

## Readiness

| Dimension | Status and evidence |
| --- | --- |
| Specification | Existing carrier-card design record. Its rules describe intended Figma states, not a live tender system. [S1] [S2] |
| Figma | Prior documentation records board `17819:1390`, eight states, and a screenshot audit. D-026 did not reopen or freshly verify the board. [S2] |
| Local prototype | No Angular implementation or route for this card is recorded; the current local router defines only `/` for repair requests. [S3] |
| Verification | Prior Figma audit is reported below as earlier evidence. D-026 inspected this document and the router only; no fresh Figma audit, executable bid validation, timer, or submission was tested. [S3] |

## Purpose

Figma-only desktop design record for the carrier-facing tender card in an express
auction. The intended design makes the official tariff, the carrier's own bid
path, and one anonymous best counteroffer understandable without exposing the internal
indexing algorithm, limits, or competitor data. [S1] [S2]

## Source and Route

- Destination: Figma file `jwmCEMZZjn9cieKYqxI6FL`, canvas
  `17506:25405` («↪ LUU-319 Индексация экспресс аукционов»).
- Baseline: `17793:41694` («Открыт, ставка еще не сделана»). It is read-only
  reference material; the candidate is placed beside it.
- Recorded scope: editable desktop Figma states only. No Angular, API, responsive,
  logistics/admin, participant-list, manual-raise, role-matrix, or approval UI.
- Earlier documentation identifies a supplied screenshot, PDF, and BA call as
  inputs. Their contents were not newly verified in D-026 and are not linked as
  reproducible evidence in this marker.

## Public model

The following rules belong to the recorded Figma design. They are not verified
production behavior; changing them requires reviewing their original inputs.

- Public status remains `Открыт` through internal audit and extended search.
  `Аудит`, indexing, markup, cap, next-index schedule, and competitor identity
  never appear in carrier UI.
- The card calls the price `Текущий официальный тариф`, shows `₽/км`, `Сумма за
  маршрут`, and `Суточная ставка` only.
- Exactly one anonymous best counteroffer may be shown. Empty state: `Встречных
  предложений пока нет`.
- Ordinary bid means a value less than or equal to the official tariff;
  counteroffer means a value strictly greater than it. The minimum increment
  remains `0,05 ₽/км` where the legacy input exposes it.

## Primary scenario

Intended journey illustrated by the recorded Figma states; no local executable
journey or submission is implemented.

1. Carrier opens the active card and sees the official tariff, anonymous best
   counteroffer, `До конца этапа торгов`, and an ordinary bid form.
2. Carrier may enter an ordinary tariff not above `42,90 ₽/км`; the route sum
   recalculates before sending.
3. Carrier enables `Встречное предложение` to enter a tariff above the official
   rate. The form repeats the official rate and anonymous best counteroffer.
4. An equal/lower counteroffer displays `Тариф должен быть выше текущего
   официального тарифа`; the CTA is disabled until both this validation and the
   existing terms checkbox are satisfied.
5. A submitted ordinary bid starts or resets the visible `До фиксации
   победителя: 04:59` window. A matching counteroffer ends the lot immediately,
   without that timer.

## States, Errors, and Edge Cases

- `Открыт / обычная ставка`: switch off; helper says `Тариф не выше 42,90 ₽/км`.
- `Открыт / валидное встречное`: switch on; value is above the official rate.
- `Открыт / невалидное встречное`: equal/lower value, exact inline error and
  unavailable CTA.
- `Открыт / тариф обновился`: the new official value makes the previous
  counteroffer invalid again; the visible inline validation text and updated
  in-form official tariff explain the state without a carrier-facing price-rise
  notification.
- `Фиксация / 04:59`: the ordinary form remains available, counteroffer switch
  has a textual disabled reason.
- `История`: third tab with tariff summary and privacy-filtered chronology.
- `Завершён`: form unavailable; winner result is shown without an internal
  mechanism explanation.
- `Не состоялся`: external allocation cancels bids/counteroffers and disables
  the form with that explanation.

The earlier design record describes each state as a desktop Figma screen with
the published Safari header, without a public audit state or next-index timer.
This is prior documentation, not a fresh readback of the current file.

## History tab

The top summary contains start, current, and maximum possible tariff in `₽/км`
with derived route/day amounts, never percentages. The timeline uses time,
`было → стало`, and `Система` or `Изменено вручную` for official-rate events;
the carrier sees only their own ordinary bids and counteroffers. Other-carrier
events, amounts, names, and identities are excluded.

## Components and accessibility

- Use the published Safari header, Input Number, Switch, Checkbox, Button,
  Badge, Divider, and Data Display instances where their visual anatomy is
  used; preserve remote instance names. The tab region is an explicit component
  gap described below. Alert is intentionally not used: validation stays in the
  Input Number inline error anatomy.
- All labels, values, errors, disabled reasons, and timers are textual. A color
  change or icon is supplemental only.
- `Встречное предложение`, the input, the terms checkbox, and the CTA keep a
  visible label and state explanation; the History tab is a labelled third tab.

## Data and integration boundary

Fixtures are intentional Figma-only examples. Live tariff updates, submission,
timer ownership, and terminal results have no executable contract here. No
production integration or developer transfer is scheduled by this design record.

## Related Flows

This design record stays within one tender-card screen. The History view is an
in-screen tab, so no cross-screen flow is created in this task.

## Figma evidence

Previously documented evidence, retained for traceability. The current board
contents and screenshots were not re-verified in D-026. [S2]

- The earlier run documented board `17819:1390` in the destination canvas with
  eight labelled desktop states, isolated from baseline `17793:41694`.
- Candidate URL: https://www.figma.com/design/jwmCEMZZjn9cieKYqxI6FL/%D0%A2%D0%B5%D0%BD%D0%B4%D0%B5%D1%80%D1%8B?node-id=17819-1390
- That run reported all eight state roots with the published Safari header as
  first child at Fill × Fixed 52 and successful Figma screenshots. This report
  does not establish current rendering or runtime behavior.

## Open questions

- The Input Number instance remains legacy evidence in this baseline while
  Switch and Checkbox remain canonical. Migrating it requires a separate
  explicit task because its property schema is not compatible.
- The former Target-only Tabs sidecar was retired. Source-local Tab Standard and
  Tab Horiz Row owners require a new read-only Figma verification before either
  can be rebound to this screen's tab region. Until then, the tab treatment is
  screen-specific Figma evidence rather than a reusable assembly contract.
- The trigger and content of the existing terms tooltip stay unchanged from the
  supplied baseline.

## Documentation Review

Readiness review: D-026 ([GitLab task](https://gitlab.com/polozovdaniel/logistics-2/-/work_items/28));
verified member `danil-lebedev` / GitLab `8269564`; agent `codex`;
session `01a0725e-9ce7-7070-bd66-3b8a92ab9006`. This review inspected tracked
local sources; it did not re-verify Figma or establish production behavior.
