# ЛИСТ СПЕЦИФИКАЦИИ И ПРИЁМКИ МОДЕЛИ ## 0. Исходный проект (заполняется только для форка) - **Автор исходной модели:** [Фамилия, группа] - **Ссылка на исходный код:** [путь/PR] - **Что взято за основу:** [кратко: «взял модель датчика, добавил сцены и звук»] - **Что изменено (список):** 1. Переработан дизайн (стиль 80-х, Canvas-осциллограф). 2. Добавлена сцена с протоколом испытаний. 3. Исправлена ошибка: при шуме >80 дБ разборчивость уходила в минус. 4. Добавлен итоговый тест (5 вопросов). - **Что НЕ менялось:** [физическая формула, логика срабатывания — если не трогали] **Тема по программе:** [Например: 4.1.400 Защита информации от утечки по акустическим каналам] **Название модели:** [Например: Акустический щит] **Автор:** [Фамилия Имя, группа] **Использованный ИИ-инструмент:** [Например: ChatGPT-4o / YandexGPT / Claude 3.5] **Ветка разработки:** `feature/название_модели` **Ссылка на Pull Request:** [Ссылка на PR в Gogs] --- ## 1. Физическая (аналитическая) основа *Заполняется ДО генерации кода. Здесь мы фиксируем законы и формулы, которым должна подчиняться модель.* 1.1. **Моделируемые физические величины и их единицы:** * *Уровень речи:* дБ (децибелы) * *Уровень шума:* дБ * *Расстояние:* метры (м) * *Разборчивость:* проценты (%) 1.2. **Базовые формулы и законы:** * Закон обратных квадратов для звука: падение уровня звука на 6 дБ при каждом удвоении расстояния от источника. * Отношение сигнал/шум (SNR) = Уровень речи - Уровень шума. * Формула Шеннона для разборчивости (или эмпирическая кривая артикуляции). *[Студент должен привести конкретную формулу, которую он закладывает в основу]* 1.3. **Параметры по умолчанию:** * Уровень речи в источнике: 60 дБ * Фоновый шум в помещении: 30 дБ * Диапазон изменения расстояния в модели: от 1 м до 10 м. --- ## 2. Граничные условия (Крайние случаи) *Модель обязана вести себя предсказуемо и физично на границах диапазонов.* * **Расстояние = 0:** Модель не должна выдавать ошибку «деление на ноль» или бесконечность. Уровень сигнала ограничивается максимальным физическим пределом (например, 100 дБ у самого источника). * **Шум = 0:** Разборчивость должна быть 100% (или максимально возможной для данной модели). * **Шум > Уровень речи:** Отношение сигнал/шум отрицательное. Разборчивость должна падать до 0% и не уходить в отрицательные значения. * **Маскирующий генератор включен:** Уровень шума прибавляется к фоновому. --- ## 3. Упрощения модели (Что мы НЕ учитываем) *Заполняется студентом. Это показывает честность модели и понимание ее ограничений.* * Мы не учитываем реверберацию (эхо) помещения. * Мы считаем, что источник звука ненаправленный (излучает во все стороны равномерно). * Мы не учитываем частотные характеристики (моделируем только интегральный уровень в дБ). --- ## 4. Сценарий *Заполняется студентом. Описывает экраны и логику переходов между ними. Минимум 4 сцены.* **Сцена 1: Вводная.** * *Элементы:* Текст вводной, кнопка «Включить питание». * *Действия:* Инициализация аудио-контекста, переход на Сцену 2. * *Переход:* Нажатие кнопки. **Сцена 2: Пульт управления.** * *Элементы:* Ползунок расстояния, индикатор сигнала, тумблер генератора шума, ползунок уровня шума, индикатор SNR. * *Действия:* Движение ползунков, включение генератора. * *Переход:* Кнопка «Перейти к оценке». **Сцена 3: Оценка разборчивости.** * *Элементы:* Шкала разборчивости, анимация. * *Действия:* Студент видит, как падает разборчивость. * *Переход:* Кнопка «Завершить». **Сцена 4: Итоговое тестирование.** * *Элементы:* Тест из 5 вопросов. * *Действия:* Ответы на вопросы. * *Переход:* Вывод результата. --- ## 5. Методика проверки и тестирования *Заполняется студентом ДО сдачи работы. Описывает, как именно проверялась работоспособность.* 5.1. **Проверка формул (`tester.html`):** * *Сетка параметров:* Расстояние от 1 до 10 с шагом 3; Шум от 0 до 100 с шагом 20. * *Результат:* Модель прошла 100% комбинаций (см. приложенный CSV). 5.2. **Проверка звука и интерфейса:** * *Действие:* Включить речь, включить генератор шума, выкрутить шум на 100 дБ. * *Ожидаемый результат:* Речь директора полностью заглушается шумом. Шкала разборчивости падает до 0%. 5.3. **Проверка крайних случаев:** * *Действие:* Установить расстояние 10 м, шум 0 дБ. * *Ожидаемый результат:* Уровень сигнала падает до 40 дБ, разборчивость около 95%. * *Действие:* Установить расстояние 10 м, шум 100 дБ. * *Ожидаемый результат:* Разборчивость 0%, нет отрицательных значений. --- ## 6. Стратегия работы с Git (Правила версионирования) *Заполняется студентом. Доказывает, что процесс разработки был осмысленным.* *Отдельные файлы версий (`001.html`, `002.html`) создавать **запрещено**. Используем возможности системы контроля версий.* 1. **Ветка:** Вся работа ведется в ветке `feature/...` (указана в шапке). 2. **Теги (Tags):** Студент обязан поставить теги на ключевые вехи разработки. * `v0.1-spec` — код впервые сгенерирован ИИ. * `v0.2-tested` — прогнан `tester.html`, найдены ошибки (приложен CSV с FAIL). * `v1.0-ready` — ошибки исправлены, тест пройден на 100%, дизайн готов. 3. **Слияние (PR):** В основную ветку работа попадает только через Pull Request. При слиянии используется **Squash** (вся история промежуточных коммитов сворачивается в один чистый коммит в мастере). --- ## 7. Журнал верификации и отладки (Борьба с галлюцинациями ИИ) *Заполняется ПОСЛЕ генерации кода. Это «навигационная карта» для преподавателя. Вам не нужно проверять все коммиты подряд — только те, что указаны в этой таблице.* | № | Что попросили у ИИ | Что сгенерировал ИИ | Ошибка (галлюцинация) | Как исправили | Имя коммита (Git hash / сообщение) | |:--|:---|:---|:---|:---|:---| | 1 | Сгенерируй шкалу затухания звука от расстояния | Сделал линейную шкалу: чем дальше, тем тише | Звук затухает не линейно, а логарифмически (закон обратных квадратов). | Заставили ИИ переписать формулу расчета дБ через логарифм. | `a1b2c3d` — *fix: correct attenuation formula to log scale* | | 2 | Добавь ползунок шума | При значении шума 100 дБ разборчивость стала -20% | Разборчивость не может быть отрицательной. | Добавили условие `Math.max(0, razborchivost)` в код. | `e4f5g6h` — *fix: clamp intelligibility to 0-100%* | | 3 | ... | ... | ... | ... | ... | --- ## 8. Критерии приёмки (Чек-лист преподавателя) *Работа не принимается, если хотя бы один пункт не выполнен.* - [ ] Код модели физически корректен (соответствует формулам из п.1). - [ ] Граничные условия из п.2 работают без ошибок и зависаний. - [ ] **В интерфейсе (на экране) выведены основные формулы расчета в виде текста.** - [ ] В интерфейсе есть пометка «Учебная модель. Не калибрована». - [ ] В конце есть кнопка «Итоговое тестирование» (5-10 вопросов). - [ ] Студент может объяснить на защите, какие ошибки ИИ он нашел и как исправил. - [ ] Модель работает офлайн (PWA) и устанавливается на телефон. - [ ] **В Gogs создан Pull Request, в описании PR есть ссылка на этот Лист спецификации и CSV-отчет из тестера.** - [ ] **В репозитории стоят теги `v0.1-spec`, `v0.2-tested`, `v1.0-ready`.** --- **Подпись студента:** _______________ **Оценка:** _______________