Files

102 lines
3.2 KiB
Markdown

# Библиотека стандартных изделий
Каталог стандартных изделий (крепёж, подшипники и т. п.) с хранением в 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 <file.json>` | импорт (upsert по обозначению) |
| `stdparts export <file.json>` | экспорт всего каталога |
| `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/ # документация, схема, промты
```