---
type: JS Module
title: normalize-pipeline.mjs
resource: npm/scripts/lib/adr/normalize-pipeline.mjs
docgen:
  crc: 9f2d42d3
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 100
  issues: judge:inaccurate:0.99
---

Файл реалізує локально-орієнтований конвеєр для нормалізації чернеток архітектурних рішень (ADR). Він працює за принципом інверсії керування: JavaScript оркеструє процес, а LLM відповідає лише на вузькі, верифіковані запитання, будучи заточеним під малу локальну модель (omlx/gemma-4b). LLM використовується лише для бінарного судження схожості між записами (наприклад, через `edge-judge`) та витягування змісту секцій у JSON (через `gen-MADR`). Конвеєр збирає, валідує та складає повний MADR-каркас, використовуючи кластеризацію (`cluster` та `union-find`) та проходить через `validation gate`, повертаючи результат у вигляді операцій для застосування.

## Поведінка

tokenize: Токенізує назву або слаг, видаляючи стоп-слова та розширюючи його на значущі токени.
jaccard: Обчислює коефіцієнт Jaccard між двома множинами токенів.
draftTitle: Витягує заголовок з тіла чернетки, використовуючи ADR-шаблон або перший не-MADR заголовок.
isNoDecision: Детерміновано визначає, чи рішення в чернетці явно не прийняте.
buildEdges: Будує кандидати-ребра між чернетками та між чернетками і чистими ADR-файлами на основі лексичної схожості.
validateMadr: Перевіряє згенерований MADR-текст на відповідність вимогам OKF та структурним елементам.
madrDate: Детерміновано визначає ISO-дату для поля **Date:**, використовуючи дані з чернетки або імені файлу.
normalizeSections: Нормалізує сирий JSON-вивід LLM у строгу структуру секцій MADR, толерантно до дрібних відхилень моделі.
assembleMadr: Збирає канонічний MADR-markdown, використовуючи заголовок, дату та нормалізований контент секцій.
genMadr: Витягує зміст архітектурного рішення з чернетки у JSON, а потім збирає його у валідний MADR-текст.
normalizePipeline: Виконує повний конвеєр нормалізації, кластеризуючи чернетки та генеруючи операції для застосування.

## Публічний API

tokenize — Розбиває назву чи слаг на значущі слова, ігноруючи стоп-слова.
jaccard — Вимірює схожість двох наборів слів.
draftTitle — Витягує заголовок з чернетки, надаючи пріоритет заголовку ADR.
isNoDecision — Визначає, чи не було прийнято рішення у чернетці, щоб уникнути створення зайвих ADR.
buildEdges — Створює потенційні зв'язки між елементами на основі схожості слів.
validateMadr — Перевіряє якість згенерованого документа ADR.
madrDate — Формує стандартизовану дату для документа, використовуючи метадані або ім'я файлу.
normalizeSections — Приводить неструктурований вивід генеративної моделі до чіткого формату секцій.
assembleMadr — Збирає повний, стандартизований документ ADR, використовуючи фіксовані шаблони.
genMadr — Створює чернетку документа ADR на основі вхідних даних.
normalizePipeline — Виконує повний потік обробки даних, повертаючи результати та статистику.

## Гарантії поведінки

- (специфічних машинно-виведених гарантій немає)
