# Спецификация калькулятора: пример и рабочая часть Это заполненный учебный документ. Правило ниже придумано для объяснения процесса, не является нормативом упаковки, ценой или клиентским проектом ## Назначение R1 Предварительно определить количество коробов для одинаковых архивных папок заданного формата. Посетитель готовит обсуждение. Не рассчитываются цена, вес, транспортировка и окончательный состав услуги. Расчёт не создаёт заказ/заявку ## Входы и правило | Поле | Тип/единица | Правило | |---|---|---| | folderCount | Целое, штуки | От 1 до 200 включительно; вход 0–9, пробелы по краям удаляются, ведущие нули допускаются и нормализуются; дробь/знак/экспонента/единица не принимаются; исходная строка не длиннее 16 символов | | sameFormat | Да/нет/не выбран | «Да» подтверждает применимость; «нет» ведёт к обсуждению; пусто требует выбора | | K | Константа системы |20 папок в коробе по учебному подтверждённому правилу R1, не доверенный ввод посетителя | B=ceil(N/20). Для 41 папки два короба не вмещают всё по условию, поэтому 3. Словесная формула: разделить количество на 20 и взять наименьшее целое не меньше результата Вывод: «Предварительно B коробов для N одинаковых папок по правилу до 20 в коробе. Не цена и не подтверждённый заказ» ## Состояния | Состояние | Что видно | Что не происходит | |---|---|---| | Начало | Заполните количество/условие | Нет нулевого персонального ответа | | Ошибка формата | Нужен целый ввод1–200 | Нет усечения дроби/догадки | | Вне диапазона | Диапазон автоматической модели1–200, можно обсудить | Нет числа вне применения | | Разный формат | Нужна отдельная оценка | Нет применения K20 | | Допустимо | N/K/B/R1 и предварительное значение | Нет отправки/заказа | | После изменения | Прежний результат недействителен, рассчитайте снова | Нет старого числа как актуального | | Нет JS/сервис недоступен | Объяснение и доступный путь связи | Нет образца как будто личного расчёта | ## Контрольные случаи | Ввод/условие | Эталон | М1 | Правка и М2 | |---|---|---|---| |1,да |1 |1 | Сохранено | |20,да |1 |1 | Сохранено | |21,да |2 |1 при округлении к ближайшему | Округление вверх, 2 | |40,да |2 |2 | Сохранено | |41,да |3 |2 | Округление вверх, 3 | |200,да |10 |10 | Верхняя граница подтверждена | |0/201,да | Нет расчёта, граница | Число без области | Диапазон проверяется до формулы | |Пусто,да | Нет расчёта, пояснение |0 | Пустота не 0 | |1.5/1,5,да | Ошибка формата | Усечение | Весь ввод проверен | |41,нет | Обсуждение без числа | Число + оговорка потом | Условие до расчёта | |41,не выбрано | Указать условие | Неопределённо | Выбор обязателен | |Новый N после результата | Нужен повтор | Старое B | Старый результат сброшен | Ручной эталон и fixtures автора проверяют только учебную модель, не готовый сайт. Учебный разбор М2 описывает повтор по всем строкам, просмотр телефона/клавиатуры и проверку связи подписей. Отдельный авторский вычислительный тест подтверждает только учебную формулу и входные состояния, не работу браузерного интерфейса. Доставка обращения не проверялась: её здесь нет ## Если добавляется заявка Сначала отдельная спецификация: необходимые поля, применимое согласие, получатель и состав записи. Передавать N, единицу, условие, B, R1. На сервере повторно проверить входы/своё правило, не доверять присланному B/K. В разрешённом тесте найти запись у получателя и сравнить с экраном. Клик/событие/«спасибо» не подтверждают доставку ## Обновление Владелец R1: учебный ответственный за правило. Новое K/диапазон/ветвь → новая версия, новый подтверждённый эталон и повтор. Старое обращение не перезаписывается незаметно. При ошибке доступен временный отказ от числа и путь обсуждения. Секреты/ключи в этом файле не хранятся ## Рабочая часть Проект / пользовательская задача: ___ Что человек решит после результата: ___ Почему калькулятор полезнее таблицы/формы: ___ Владелец правила / источник / версия / дата: ___ | Вход | Подпись | Тип/единица | Формат | Диапазон | Пустота | Значение по умолчанию | Нормализация | |---|---|---|---|---|---|---|---| | ___ | ___ | ___ | ___ | ___ | ___ | ___ | ___ | Словесная формула и ветви: ___ Округление/точность/исключения: ___ Смысл результата и ограничения: ___ | Контрольный вход | Ожидаемый исход и основание | Версия/фактический ответ | Правка | Повтор | |---|---|---|---|---| | ___ | ___ | ___ | ___ | ___ | Состояния: начало/успех/ошибка/неприменимо/изменение/ожидание/неуспех/повтор/noJS: ___ Нужна ли отправка, что принимается и где проверяется: ___ Телефон/клавиатура/статусное сообщение: ___ Обновление правила/возврат/ответственный: ___ Открытые входы, без которых нельзя принять: ___ ## Завершение Назначение и правило подтверждены, эталон согласован, обычные/граничные/неверные значения проверены, М1 ошибки не скрыты, М2 повтор записан. Если нет формулы или применимости, решение «форма/таблица/пока не считать» допустимо. Полезность и рекламный результат измеряются отдельно