Генерация артикула резолвила lot_category из одного прайслиста конфигурации (GetLocalLotCategoriesByServerPricelistID), поэтому world-only LOT (напр. GPU_NV_RTX_PRO_6000D_SERVER_84GB_PCIE, есть только в world) молча выпадал из артикула. Теперь категории берутся через GetLocalComponentCategoriesByLotNames (тот же world ∪ estimate, что и весь конфигуратор). BuildOptions.ServerPricelist убран; preview-article принимает pricelist_id, но игнорирует. Нераспознанные токены больше не пишутся как UNK: в артикул идёт lot_category как плейсхолдер (4xGPU, 2xCPU), сегмент помечается Recognized=false, добавляется warning с именем LOT. Конфигуратор подсвечивает такие сегменты (amber) и выводит список предупреждений; сохранение/обновление/откат логируют WARN. Без каталога вендоров в репо детектируется только структурный сбой формы имени. parseGPUModel: принимает суффикс-букву в номере модели (6000D → RTX6000D), раньше терял её и схлопывал до RTX_84GB. ADL bible-local/decisions/2026-09-01-article-category-from-component-universe.md, 2026-09-01-article-degraded-token-visibility.md; раздел «Article generation» в 02-architecture.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RAhfF4P1ySRZ67yyUUeVw2
QuoteForge Bible
Project-specific architecture and operational contracts.
Files
| File | Scope |
|---|---|
| 01-overview.md | Product scope, runtime model, repository map |
| 02-architecture.md | Local-first rules, sync, pricing, versioning |
| 03-database.md | SQLite and MariaDB data model, permissions, migrations |
| 04-api.md | HTTP routes and API contract |
| 05-config.md | Runtime config, paths, env vars, startup behavior |
| 06-backup.md | Backup contract and restore workflow |
| 07-dev.md | Development commands and guardrails |
| 09-vendor-spec.md | Vendor BOM and CFXML import contract |
| 10-agent-api-guide.md | End-to-end API guide for agents pricing servers from a TZ |
| 11-lot-suggestions.md | lot_suggestion column in qt_vendor_partnumber_seen — write/read contract for manual UI mappings |
| decisions/ | Architectural decision log, one file per decision |
Rules
bible-local/is the source of truth for QuoteForge-specific behavior.- Keep these files in English.
- Update the matching file in the same commit as any architectural change.
- Remove stale documentation instead of preserving history in place.
Quick reference
- Local DB path: see 05-config.md
- Runtime bind: loopback only
- Local backups: see 06-backup.md
- Release notes:
releases/<version>/RELEASE_NOTES.md