Подбор и расчёт элементов металлокаркаса — колонны, прогоны, фермы, ограждающие конструкции — по параметрам объекта. Перенос проверенных Excel-калькуляторов ИНСИ в тестируемое веб-приложение, результат которого сверяется с эталоном из исходных книг Excel.
Подбор металлокаркаса раньше жил в больших Excel-калькуляторах: их тяжело поддерживать, легко сломать формулу и невозможно проверить автоматически. MetalCalc переносит эту логику в строгий TypeScript-код, сохраняя точное соответствие исходным расчётам: эталонные данные генерируются из тех же книг Excel, а тесты проверяют, что приложение не «уехало» от проверенного результата.
- Колонны — подбор сечения по нагрузкам и геометрии, ранжирование вариантов.
- Прогоны — расчёт и подбор по пролёту и нагрузке.
- Фермы — параметры стропильных ферм.
- Ограждающие конструкции — подбор с импортом цен из PDF-прайса и ценовыми переопределениями.
- Паритет с Excel — эталонные модули (
*-reference.generated.ts) генерируются из исходных книг; расхождение валит сборку. - 89 юнит-тестов + e2e-тесты Playwright на реальном UI.
- Пайплайн
verify— единый релизный цикл: пересборка эталонов и проверка дрейфа → линт → юнит-тесты → production-сборка → e2e. - Валидация входных данных через Zod.
npm run verify # эталоны → линт → тесты → сборка → e2eReact 19 · TypeScript 5 · Vite · Zod · Vitest · Playwright · GitHub Actions
npm install
npm test # юнит-тесты
npm run test:e2e # Playwright e2e
npm run build # production build
npm run generate:column-ref # перегенерировать эталон колонн из Excel
npm run generate:purlin-ref # перегенерировать эталон прогонов из Excel
npm run verify # полный релизный циклЭталонные данные: src/domain/{column,purlin}/model/*-reference.generated.ts (из книг Excel; при отсутствии книги — из зафиксированного снапшота).
.github/workflows/ci.yml гоняет проверку дрейфа эталонов, линт, юнит-тесты, сборку и e2e на каждый push. Деплой демо — deploy-pages.yml.
MIT © 2026 Andrey Rykunov