102 lines
3.2 KiB
Markdown
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/ # документация, схема, промты
|
|
```
|