URS & FS — спецификация пользовательских требований и функциональная спецификация
Документ описывает контролируемый интерфейс, валидационное поведение и ожидаемые результаты утилиты InfraLUM_ID_Ibuprofen. Документ предназначен для включения в папку утилиты рядом с input.csv и файлом описания. Предполагаемый исполняемый файл: InfraLUM_ID_Ibuprofen.exe.
Назначение: утилита выполняет детерминированную проверку входных QC-данных по утверждённым пределам, формирует машинно-читаемый output.json и поддерживает review в QC/QA, интеграцию с LIMS/ELN/MES и подготовку CSV/CSA-пакета.
Область применения
| Класс утилиты | ИК-спектроскопия / ИнфраЛЮМ |
| Основной объект/метод | Идентификация ибупрофена методом ИК-спектроскопии |
| Вход | input.csv с фиксированным заголовком и контролируемыми типами данных. |
| Выход | output.json со статусами PASS, WARNING, FAIL, перечнем проверок и критическими находками. |
| Исключения | Утилита не заменяет утверждённую спецификацию, методику анализа, расследование OOS/OOT и решение Qualified Person / QA о выпуске. |
Предметные ограничения и критические параметры
Ниже приведены ключевые фрагменты исходного описания. Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье, актуальной фармакопейной редакцией и локальными SOP.
- • Коэффициент корреляции с эталонным спектром: ≥0.995
- • Пик 2960 см⁻¹ (C-H валентные колебания изобутильной группы): ±15 см⁻¹ — МАРКЕР ЗАМЕСТИТЕЛЯ
- • Пик 1720 см⁻¹ (C=O карбоксильного димера): ±10 см⁻¹ — МАРКЕР КИСЛОТЫ
- • Пик 1605 см⁻¹ (C=C ароматического кольца): ±10 см⁻¹
- • Пик 1505 см⁻¹ (C=C ароматическое скелетное): ±10 см⁻¹
- • Пик 1230 см⁻¹ (C-O растяжение + O-H деформация): ±10 см⁻¹
- • Шум базовой линии: ≤0.005 Abs
- ⚠️ ВАЖНО: Ибупрофен — НПВС, производное 2-арилпропионовой кислоты.
- через водородные связи, что даёт характерный интенсивный пик C=O при ~1720 см⁻¹.
- В растворе или расплаве этот пик смещается к ~1740 см⁻¹ (мономер).
- Изобутильная группа проявляется интенсивными C-H пиками при 2960/2870 см⁻¹.
- InfraLUM_ID_Ibuprofen.exe input.csv output.json → оценка ваших данных
- Формат input.csv:
- BatchNumber,CorrelationCoefficient,Peak2960_cm1,Peak1720_cm1,Peak1605_cm1,Peak1505_cm1,Peak1230_cm1,BaselineNoiseAbs,PreparationMethod
- • Механизм действия: неселективное ингибирование ЦОГ-1 и ЦОГ-2.
- • ИК-спектроскопия — основной метод подтверждения подлинности по ГФ РФ и Ph. Eur.
Фармакопейные и нормативные ссылки, найденные в описании
| # | Источник | Примечание |
|---|
| 1 | Ph. Eur | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 2 | Ph. Eur. Ibuprofen | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 3 | Ph. Eur. / Russian Pharmacopoeia | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 4 | Ph. Eur. and Russian Pharmacopoeia | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 5 | Ph. Eur. Ibuprofen and Russian Pharmacopoeia FS.2.4.00178.18 | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 6 | ГФ РФ / Ph. Eur | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 7 | ГФ РФ и Ph. Eur | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 8 | ГФ РФ ФС.2.4.00178.18 и Ph. Eur. Ibuprofen | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
| 9 | ema | Используется как указание на источник/контекст метода; перед внедрением требуется сверка с актуальной редакцией. |
Производственный поток данных
| Шаг | Ответственный объект | Описание | Контроль |
| 1 | LIMS/ELN/MES или аналитик QC | Формирует input.csv с результатами измерений и идентификатором серии. | Проверка заголовков, обязательных полей и единиц измерения. |
| 2 | InfraLUM_ID_Ibuprofen | Загружает CSV, выполняет приведение типов, применяет предметные правила и формирует результат. | Детерминированные правила, отсутствие ML/эвристического решения о соответствии. |
| 3 | QC reviewer / QA | Проверяет output.json, предупреждения, критические отклонения и исходные значения. | Review, расследование отклонений, сохранение следа данных. |
| 4 | Архив / eQMS | Сохраняет вход, выход, версию утилиты, документацию и контрольную сумму. | Data integrity: ALCOA+, воспроизводимость, change control. |
URS — пользовательские требования
| ID | Требование | Критичность | Критерий приемки |
| URS-001 | Утилита должна поставляться с документацией InfraLUM_ID_Ibuprofen.documentation.html в той же папке, где находится описание и пример input.csv. | Medium | Файл документации присутствует в папке InfraLUM_ID_Ibuprofen и открывается локально в браузере. |
| URS-002 | Утилита должна принимать input.csv с точными заголовками, определёнными в контракте данных. | High | CSV с корректным заголовком обрабатывается без ручного редактирования. |
| URS-003 | Утилита должна проверять наличие обязательных полей, количество колонок, типы данных и базовую правдоподобность значений. | High | Ошибки схемы и преобразования явно отражаются в результате. |
| URS-004 | Утилита должна выполнять оценку по утверждённым пределам для каждого критического и некритического QC-параметра. | High | Каждый проверяемый параметр получает статус и пояснение. |
| URS-005 | Утилита должна формировать итоговый статус серии/строки: PASS, WARNING или FAIL. | High | Критическое отклонение приводит к FAIL; некритическое — к WARNING. |
| URS-006 | Утилита должна формировать output.json, пригодный для LIMS/ELN/MES-интеграции и QA/QC review. | High | JSON содержит исходные значения, правила, статусы, предупреждения и критические находки. |
| URS-007 | Утилита должна сохранять трассируемость между идентификатором серии, входными значениями, применёнными правилами и итоговым статусом. | High | В выходе есть идентификатор серии/строки и перечень проверенных параметров. |
| URS-008 | Утилита не должна использовать машинное обучение или вероятностную интерпретацию для решения о соответствии. | Medium | Результат воспроизводим и основан на явных правилах, порогах и входных значениях. |
| URS-009 | Утилита должна быть пригодна для запуска в CLI-сценарии: InfraLUM_ID_Ibuprofen.exe input.csv output.json. | High | При корректных аргументах создаётся output.json; при ошибке возвращается диагностическое сообщение. |
| URS-010 | Документация должна поддерживать подготовку IQ/OQ/PQ или эквивалентной CSV/CSA-проверки. | Medium | Документ содержит URS, FS, CSV-контракт, правила, тестовые сценарии и traceability. |
| URS-011 | Утилита должна разделять ошибки данных, предупреждения метода и критические отказы спецификации. | High | В output.json доступны отдельные коллекции/поля для errors, warnings, critical findings. |
| URS-012 | Утилита должна поддерживать архивирование входа и выхода без изменения данных. | Medium | input.csv и output.json могут быть сохранены как часть записи серии или OQ/PQ-доказательства. |
Контракт input.csv
| # | Поле | Тип | Пример | Назначение |
| 1 | BatchNumber | string | IBU-ID-2026-063 | Идентификатор серии/партии для трассируемости. |
| 2 | CorrelationCoefficient | decimal | 0.9993 | Критерий сходства/корреляции с эталонным профилем. |
| 3 | Peak2960_cm1 | decimal | 2958.0 | Положение спектрального пика или характеристика аналитического/хроматографического пика. |
| 4 | Peak1720_cm1 | decimal | 1718.0 | Положение спектрального пика или характеристика аналитического/хроматографического пика. |
| 5 | Peak1605_cm1 | decimal | 1607.0 | Положение спектрального пика или характеристика аналитического/хроматографического пика. |
| 6 | Peak1505_cm1 | decimal | 1503.0 | Положение спектрального пика или характеристика аналитического/хроматографического пика. |
| 7 | Peak1230_cm1 | decimal | 1232.0 | Положение спектрального пика или характеристика аналитического/хроматографического пика. |
| 8 | BaselineNoiseAbs | decimal | 0.0015 | Показатель качества сигнала для оценки пригодности анализа. |
| 9 | PreparationMethod | controlled string | KBr | Контролируемый идентификатор метода анализа или пробоподготовки. |
BatchNumber,CorrelationCoefficient,Peak2960_cm1,Peak1720_cm1,Peak1605_cm1,Peak1505_cm1,Peak1230_cm1,BaselineNoiseAbs,PreparationMethod
IBU-ID-2026-063,0.9993,2958.0,1718.0,1607.0,1503.0,1232.0,0.0015,KBr
IBU-ID-2026-064,0.9912,2978.0,1705.0,1618.0,1492.0,1248.0,0.007,KBr
Правила валидации входных данных
| ID | Поле | Тип | Проверка | Критичность |
| VR-001 | BatchNumber | string | не пусто; уникально в пределах файла, если применимо | Medium |
| VR-002 | CorrelationCoefficient | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-003 | Peak2960_cm1 | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-004 | Peak1720_cm1 | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-005 | Peak1605_cm1 | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-006 | Peak1505_cm1 | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-007 | Peak1230_cm1 | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-008 | BaselineNoiseAbs | decimal | преобразуется как invariant decimal; конечное значение; без NaN/Infinity; оценка относительно утверждённого числового предела | Medium |
| VR-009 | PreparationMethod | controlled string | не пусто; значение входит в контролируемый перечень либо фиксируется как warning | Medium |
FS — функциональная спецификация
| ID | Функция | Реализация | Связь с URS |
| FS-001 | Локальная HTML-документация | Предоставить двуязычный файл InfraLUM_ID_Ibuprofen.documentation.html с переключателем RU/EN, исходным описанием, URS, FS, контрактами и тестами. | URS-001, URS-010 |
| FS-002 | CSV import | Считать input.csv в UTF-8/CSV-совместимом формате, определить строку заголовка и записи данных. | URS-002, URS-009 |
| FS-003 | Schema validation | Сравнить фактические колонки с ожидаемым контрактом; отсутствующие ключевые поля фиксировать как ошибку схемы. | URS-002, URS-003 |
| FS-004 | Type conversion | Преобразовать decimal, flag/boolean и controlled string. Некорректные значения фиксировать на уровне строки и поля. | URS-003 |
| FS-005 | Domain rule engine | Применить правила для объекта/метода InfraLUM ID Ibuprofen, включая критические пределы из описания и утверждённой спецификации. | URS-004, URS-008 |
| FS-006 | Status aggregation | Агрегировать статусы параметров: FAIL при критическом отказе, WARNING при некритическом отклонении, PASS при соответствии. | URS-005, URS-011 |
| FS-007 | JSON export | Записать output.json с идентификатором утилиты, исходными значениями, результатами проверок, warnings и critical findings. | URS-006, URS-007 |
| FS-008 | Error handling | Разделить ошибки запуска, ошибки схемы, ошибки преобразования и ошибки предметных пределов. | URS-003, URS-011 |
| FS-009 | Audit support | Обеспечить структуру результата, пригодную для review, расследования OOS/OOT, повторного расчёта и инспекционного обсуждения. | URS-007, URS-012 |
| FS-010 | Integration contract | Поддерживать стандартный сценарий: LIMS/ELN/MES создаёт input.csv, утилита возвращает output.json, портал отображает описание и документацию. | URS-006, URS-009 |
| FS-011 | Configuration/change control | Любое изменение пределов, имён колонок или логики правил требует версии, review, регрессионных тестов и обновления документации. | URS-010, URS-012 |
| FS-012 | Data integrity | Не изменять исходный input.csv; результаты сохранять отдельно в output.json с возможностью архивирования. | URS-007, URS-012 |
Пример структуры output.json
{
"utilityId": "infralum-id-ibuprofen",
"utilityName": "InfraLUM_ID_Ibuprofen",
"object": "InfraLUM ID Ibuprofen",
"overallStatus": "PASS|WARNING|FAIL",
"sourceFile": "input.csv",
"recordCount": 2,
"checks": [
{
"parameter": "BatchNumber",
"value": "IBU-ID-2026-063",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-001"
},
{
"parameter": "CorrelationCoefficient",
"value": "0.9993",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-002"
},
{
"parameter": "Peak2960_cm1",
"value": "2958.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-003"
},
{
"parameter": "Peak1720_cm1",
"value": "1718.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-004"
},
{
"parameter": "Peak1605_cm1",
"value": "1607.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-005"
},
{
"parameter": "Peak1505_cm1",
"value": "1503.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-006"
},
{
"parameter": "Peak1230_cm1",
"value": "1232.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-007"
},
{
"parameter": "BaselineNoiseAbs",
"value": "0.0015",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-008"
},
{
"parameter": "PreparationMethod",
"value": "KBr",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result",
"ruleReference": "VR-009"
}
],
"criticalFindings": [],
"warnings": [],
"metadata": {
"executionMode": "CLI",
"interface": "CSV to JSON",
"documentationFile": "InfraLUM_ID_Ibuprofen.documentation.html"
}
}
Матрица трассировки URS → FS → OQ/PQ
| URS | FS | Проверка | Ожидаемый результат |
| URS-001 | FS-001 | Проверить наличие файла InfraLUM_ID_Ibuprofen.documentation.html в папке утилиты. | Файл присутствует, открывается, RU/EN переключатель работает. |
| URS-002/003 | FS-002/003/004 | Запустить утилиту с корректным CSV, CSV без обязательной колонки и CSV с неверным типом. | Корректный CSV обработан; ошибки схемы и типа явно указаны. |
| URS-004/005 | FS-005/006 | Передать значения в пределах, на предупредительном уровне и за критическим пределом. | Получены PASS, WARNING, FAIL согласно правилам. |
| URS-006/007 | FS-007/009/012 | Проверить структуру output.json и трассируемость серии. | JSON содержит идентификатор серии, значения, правила, статусы и critical findings. |
| URS-008 | FS-005 | Повторить запуск с тем же input.csv. | Результат идентичен; нет вероятностного поведения. |
| URS-009/010/012 | FS-010/011/012 | Выполнить CLI-сценарий и архивировать вход/выход/версию. | Артефакты пригодны для OQ/PQ и change-control записи. |
OQ/PQ тестовые сценарии
| ID | Сценарий | Входные данные | Ожидаемый результат |
| OQ-001 | Позитивный путь | CSV из примера с валидными значениями. | output.json создан; итоговый статус PASS или допустимый WARNING согласно правилам. |
| OQ-002 | Отсутствует обязательная колонка | Удалить один ключевой столбец из заголовка. | Ошибка схемы; строка не должна считаться прошедшей проверку. |
| OQ-003 | Некорректный тип | В числовое поле внести текстовое значение. | Ошибка преобразования типа с указанием поля и строки. |
| OQ-004 | Критический предел | Значение критического параметра вне утверждённого предела. | FAIL и запись в criticalFindings. |
| OQ-005 | Предупреждение | Некритическое отклонение или неизвестная контролируемая категория. | WARNING без сокрытия исходного значения. |
| PQ-001 | Реальная серия пользователя | Реальный input.csv из QC-процесса. | Согласованный review с сохранением input.csv, output.json, версии и контрольной суммы. |
QA/QC, CSV/CSA и change control
- Не менять имена колонок без обновления валидатора, тестового набора и документации.
- Хранить
input.csv, output.json, версию исполняемого файла, контрольную сумму и копию документации.
- Перед продуктивным использованием провести IQ/OQ/PQ или эквивалентную риск-ориентированную CSV/CSA-проверку.
- Критические пределы должны быть утверждены владельцем процесса и сверены с регистрационным досье, фармакопеей и локальными SOP.
- Любое изменение правил, порогов или интерпретации статусов должно проходить через change control и регрессионные тесты.