# Библиотека стандартных изделий Каталог стандартных изделий (крепёж, подшипники и т. п.) с хранением в SQLite. Две реализации с общей схемой БД и совместимым JSON: - `dotnet/` — desktop-приложение для Windows 11 на C# / .NET 8 / WPF (основное); - `src/standard_products/` — Python-пакет и CLI `stdparts` (генератор и эталон данных). ## Desktop-приложение (Windows 11) ```bash cd dotnet dotnet build dotnet run --project src/StandardProducts.App ``` Публикация одним self-contained exe (не требует .NET у пользователя): ```bash dotnet publish src/StandardProducts.App -c Release -r win-x64 \ --self-contained true -p:PublishSingleFile=true -o publish ``` Подробнее — [dotnet/README.md](dotnet/README.md). ## Python CLI ```bash python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" stdparts init stdparts import examples/sample_products.json stdparts list stdparts search болт ``` Без установки пакета: ```bash PYTHONPATH=src python3 -m standard_products init PYTHONPATH=src python3 -m standard_products import examples/sample_products.json ``` ## Команды | Команда | Назначение | | --- | --- | | `stdparts init` | создать базу и схему | | `stdparts add <обозначение> --name ...` | добавить изделие | | `stdparts show <обозначение>` | показать изделие в JSON | | `stdparts list [--limit N]` | список изделий | | `stdparts search [запрос] [--standard ...] [--category ...] [--material ...]` | поиск | | `stdparts import ` | импорт (upsert по обозначению) | | `stdparts export ` | экспорт всего каталога | | `stdparts delete <обозначение>` | удалить изделие | | `stdparts stats` | количество записей | Путь к базе задаётся глобальным флагом `--db` (по умолчанию `standard_products.db`): ```bash stdparts --db data/catalog.db list ``` ### Добавление с атрибутами ```bash stdparts add "Болт M10x50 ГОСТ 7798-70" \ --name "Болт с шестигранной головкой" \ --standard "ГОСТ 7798-70" \ --category "Крепёж" \ --material "Сталь 20" \ --mass 0.045 \ --attr "резьба=M10" \ --attr "покрытие=цинк" ``` ## Модель данных Поля изделия описаны в [docs/schema.md](docs/schema.md). Свободные характеристики хранятся в JSON-поле `attributes`. ## Разработка ```bash pip install -e ".[dev]" pytest ruff check . mypy src ``` ## Структура ``` dotnet/ # C# / WPF приложение (Core + App + xunit) src/standard_products/ # Python-пакет: db.py, cli.py tests/ # pytest examples/ # пример JSON для импорта docs/ # документация, схема, промты ```