Desktop client Electronic Pharmacy
Go to file
Exest 3d89fac6e0
Some checks failed
Desktop tests / test (push) Has been cancelled
тесты: автотесты десктопа (xUnit) + CI
- проект tests/Elfisa.Tests: 56 юнит-тестов на Elfisa.Core + Elfisa.Avalonia:
  версии апдейтера, срок JWT-сессии, ApiClient (URL/ошибки/ретраи/парсинг),
  DTO-контракты, черновики, корзина, дрилдаун прайса (МГ/базовое имя)
- тест-швы: internal-методы через InternalsVisibleTo, ApiClient(HttpMessageHandler)
- CI .github/workflows/desktop-tests.yml — dotnet test при пуше (GitHub/Gitea Actions)
- README с описанием покрытия

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-17 11:51:50 +03:00
_ref Initial commit: Электронная Фармация desktop client. 2026-07-14 12:25:38 +03:00
.github тесты: автотесты десктопа (xUnit) + CI 2026-08-17 11:51:50 +03:00
dist v1.0.29: раздел «Отчёты» в стиле приложения 2026-08-07 16:57:22 +03:00
docs Add forced update check against Gitea releases. 2026-07-31 12:58:36 +03:00
installer версия 2.0.9: размер шрифта/текста (масштаб интерфейса) в Настройках 2026-08-13 16:39:46 +03:00
screenshots Initial commit: Электронная Фармация desktop client. 2026-07-14 12:25:38 +03:00
scripts Релиз 2.0: кросс-платформа, брендовый установщик, страница загрузки 2026-08-10 12:41:14 +03:00
src тесты: автотесты десктопа (xUnit) + CI 2026-08-17 11:51:50 +03:00
tests/Elfisa.Tests тесты: автотесты десктопа (xUnit) + CI 2026-08-17 11:51:50 +03:00
tools/UpdateCheckSmoke Add forced update check against Gitea releases. 2026-07-31 12:58:36 +03:00
web/download версия 2.0.3: запоминание входа, быстрая загрузка прайса, повтор при SSL 2026-08-13 09:23:29 +03:00
.gitignore Релиз 2.0: кросс-платформа, брендовый установщик, страница загрузки 2026-08-10 12:41:14 +03:00
Elfisa.Cross.slnx Avalonia кросс-платформенный клиент: фундамент + раздел «Отчёты» 2026-08-07 18:21:10 +03:00
Elfisa.sln тесты: автотесты десктопа (xUnit) + CI 2026-08-17 11:51:50 +03:00
README.md Add API documentation and remove unused single-price endpoint. 2026-07-14 15:22:13 +03:00

ЭльФиСА — Электронная Фармация

WinForms-клиент «Электронная Фармация» с современным UI на базе библиотеки Elfisa.UI (тема PharmaTrust).

Структура


src/

  Elfisa.UI/              — UI-библиотека (ThemeManager, Modern* контролы)

  ElectronicPharmacy/     — основное приложение (SQLite, API, бизнес-логика)

Сборка

Требуется .NET SDK 9+ (или MSBuild 16+) и .NET Framework 4.7.2.


dotnet build Elfisa.sln -c Release

Запуск:


.\src\ElectronicPharmacy\bin\Release\Электронная` Фармация.exe

База efClient.db копируется в output (Data\efClient.db или рядом с exe). Путь задаётся через AppConfig.SqliteDbPath.

Настройки

В диалоге Авторизация (и в Settings):

  • URL API — базовый адрес сервера (по умолчанию из AppConfig)

  • Location ID — UUID точки для отправки заказов

  • Region ID — опциональный фильтр при загрузке прайса

Переменная окружения ELF_API_BASE_URL переопределяет URL API.

Подробное описание всех HTTP-запросов — в docs/API.md.

Архив для заказчика


.\dist\build-release.ps1

Создаёт dist\Электронная-Фармация.zip с Release-сборкой.

Основной цикл (V2)

  1. Старт → проверка БД → выбор грузополучателя → прайс-лист

  2. Загрузить — прайс с API в SQLite, обновление открытых вкладок прайса

  3. Фильтр поставщика, поиск, набор в корзину с проверкой остатка

  4. Сохранить заказ — мин. сумма по поставщику, уникальный номер, грузополучатель в Orders

  5. Отправить — POST /api/buyer/orders, статус ОТПРАВЛЕН только у отправленного заказа

  6. Заказы — фильтры по статусу, поставщику, грузополучателю; отправка одного заказа

  7. Отказы / Накладные — синхронизация с /api/buyer/invoices

Приёмочный чек-лист

  1. Старт → БД → выбор точки → прайс

  2. Загрузить → прайс обновился, корзина очищена с предупреждением

  3. Фильтр поставщика + поиск + количество + проверка остатка

  4. Сохранить заказ (мин. сумма, корректный номер, грузополучатель)

  5. Отправить → только выбранные заказы → статус / ошибка API

  6. Журнал: фильтры, комментарий, удаление НОВЫЙ

  7. Отказы: загрузка с API + детали позиций

  8. Авторизация + location_id в настройках

  9. Единый UI: UiDialogs / toast, без debug-панелей загрузки