приём и чтение записей сведены к одному контракту приложения
- адреса приложения переехали в своё пространство `/app/`, опрос готовности убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи, текст — отдельным адресом названного вида - заведена единая точка отображения доменной ошибки и слой, приводящий к той же форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением - у записи появились имя файла отправителя, длительность и размер своими колонками, а у ленты владельца — свой индекс: без него страница сканировала весь архив сервиса
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
## Why
|
||||
|
||||
Приложение строить не на чем. Сегодня сервис отвечает «записи нет» на упавшую
|
||||
базу и «внутренняя ошибка» на негодный файл: код ответа называет место, где
|
||||
отказ случился, а не его причину. Экран, собранный на таком контракте, показывает
|
||||
человеку «не найдено», когда на самом деле лежит хранилище.
|
||||
|
||||
Списка своих записей у сервиса нет вовсе, карточка и текст едут одним ответом, а
|
||||
пределы, которыми сервис ограничивает загрузку, приложению неоткуда узнать —
|
||||
кроме как повторить их своей константой и разойтись с сервером молча.
|
||||
|
||||
## What Changes
|
||||
|
||||
- **BREAKING.** Опрос готовности убирается целиком вместе со своими именами
|
||||
полей. Стадия проекта — стройка, на сервере данных нет, а внешней программы на
|
||||
прежнем контракте не существует: своего токена у неё не было.
|
||||
- **BREAKING.** Приложение уезжает из общего пространства `/api/` в своё `/app/`.
|
||||
Общее пространство принадлежит хранилищу, и обновление библиотеки вправе занять
|
||||
там имя рядом с нашим.
|
||||
- **BREAKING.** Приём стоит тем же адресом, что и список, и отличается методом:
|
||||
он заводит аудиозапись, а не кладёт файл. Ответ приёма отдаёт список заведённых
|
||||
записей и место под признак повторного файла — форма согласуется один раз,
|
||||
чтобы соседние задачи её не переписывали.
|
||||
- Отказ отвечает своей причиной: сбой хранилища виден как сбой, негодная запись —
|
||||
как негодная, отказ по чужому имени — как отказ. Тело отказа одной формы на
|
||||
всех адресах приложения, и собирает его одно место.
|
||||
- Появляется чтение своего архива: страница записей новыми сверху, карточка
|
||||
записи без текста и текст названного вида — сплошной либо репликами со
|
||||
временем. Шестичасовая расшифровка больше не задерживает показ шапки.
|
||||
- Появляется адрес, которым сервис объявляет свои пределы: потолок размера
|
||||
записи, частота опроса, перечень известных расширений, потолок тем.
|
||||
- Запись подписывается именем файла, данным отправителем: имя ложится своей
|
||||
колонкой и не спорит с заголовком, который дал человек либо посчитала языковая
|
||||
модель. Длина ограничена, управляющие знаки убраны.
|
||||
- Длительность и размер переезжают колонками записи: список читается без
|
||||
содержимого, а обе величины приём узнаёт у источника метаданных и так.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `archive`: архив своих записей глазами приложения — пространство адресов
|
||||
приложения и единая форма отказа, пределы, которыми сервис ограничивает
|
||||
загрузку, и чтение своего архива: страница записей, карточка и текст названного
|
||||
вида.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `intake`: приём переезжает на новый адрес и меняет форму ответа на список;
|
||||
опрос готовности убирается целиком; имя, данное отправителем, доходит до самой
|
||||
записи отдельной колонкой, оставаясь за пределами имени файла в хранилище и
|
||||
журнала.
|
||||
- `access`: область слоя предъявления сессии названа адресами приложения, и
|
||||
среди них появляется вопрос «кто вошёл».
|
||||
- `storage`: у записи появляются колонки имени файла отправителя, длительности и
|
||||
размера.
|
||||
- `pipeline`: исход своей записи владелец узнаёт карточкой записи, а не убранным
|
||||
опросом готовности; два требования называли держателем нормы адрес, которого
|
||||
больше нет.
|
||||
|
||||
## Impact
|
||||
|
||||
- Приём и чтение записей по HTTP: все адреса приложения, коды ответа и форма
|
||||
тела.
|
||||
- Схема хранилища: новый шаг под три колонки записи.
|
||||
- Слой предъявления сессии и своё правило ограничителя частоты переезжают на
|
||||
новый корень.
|
||||
- Правило неизвестного пути в приложении перечисляет корни сервиса, а не один.
|
||||
- Внешней программе на прежнем контракте ломается всё; такой программы у сервиса
|
||||
сегодня нет.
|
||||
Reference in New Issue
Block a user