Skip to content

Latest commit

 

History

History
54 lines (37 loc) · 7.71 KB

FEATURE-IDEAS.md

File metadata and controls

54 lines (37 loc) · 7.71 KB

Идеи по расширению функциональности / Funksionallığın genişləndirilməsi üçün ideyalar

Составлено на основе обзора текущего состояния проекта (2026-08-16). Layihənin cari vəziyyətinin nəzərdən keçirilməsi əsasında tərtib edilib (16.08.2026).


RU — Русский

Быстрые, малорисковые доработки

  • Отправка инвойса на email клиента — EmailService/MailKit уже есть (используется для confirm-email), а PDF-экспорт (ExportToPdfAsync) тоже готов. Не хватает только связки: кнопка/эндпоинт «отправить PDF клиенту на Customer.Email».
  • Напоминания о просрочке (dunning) — InvoiceSchedulerHostedService уже раз в час переводит просроченные инвойсы в Overdue; логично добавить туда же отправку email-напоминания клиенту при переходе в Overdue, либо за N дней до DueDate.
  • Каталог товаров/услуг — InvoiceRow.Service сейчас просто строка, вводится вручную при каждой строке инвойса. Отдельная сущность Product/ServiceItem (name, default rate, VAT) с автоподстановкой в форму строки инвойса и отчёте «по услугам» (ReportsController: services) избавила бы от постоянного ре-тайпинга и опечаток.
  • Массовые операции в UI — например, массовая архивация/экспорт нескольких инвойсов сразу (сейчас всё поштучно, /{id}/archive, /{id}/export).

Функциональность среднего размера

  • Мультивалютность — в CLAUDE.md явно отмечено: Currency захардкожена как "AZN", не персистится. Если это когда-нибудь понадобится — нужна реальная колонка + пересчёт InvoiceTotalsCalculator.
  • Партнёрский/клиентский портал — read-only ссылка для клиента, чтобы посмотреть/оплатить конкретный инвойс без логина (публичный токен-URL). Сейчас всё за JWT, у клиента нет способа увидеть свой счёт кроме как получить PDF по почте.
  • Онлайн-оплата — сейчас Payment фиксируется вручную администратором (bank transfer/cash предположительно). Интеграция с платёжным шлюзом (Stripe/локальный) закрыла бы цикл «выставили → клиент оплатил онлайн → статус меняется автоматически».
  • Notification preferences / email-дайджест — SignalR realtime уже есть для UI, но нет email-уведомлений владельцу (например «3 инвойса просрочены», «оплата получена»).
  • Расширенные отчёты — сейчас только customers/services/invoice-status. Не хватает: P&L / cash-flow по периодам, прогноз поступлений по DueDate, экспорт отчётов в Excel/CSV/PDF (сейчас экспорт PDF есть только для отдельного инвойса).

Более крупные инициативы

  • Мультивалютность + мультиязычные PDF — сейчас PDF, судя по всему, не локализован под az/eng язык клиента.
  • Роли/права по командам — сейчас UserRole только User/Admin (админ вообще отрезан от бизнес-эндпоинтов). Если появится мультипользовательская компания — нужна модель «сотрудников» с разными правами на инвойсы одной компании, а не строгий 1:1 UserId.
  • Webhooks/API для интеграций — если планируется интеграция с бухгалтерскими системами.

AZ — Azərbaycan dili

Tez və az riskli təkmilləşdirmələr

  • Fakturanın müştərinin e-poçtuna göndərilməsi — EmailService/MailKit artıq mövcuddur (confirm-email üçün istifadə olunur), PDF ixracı (ExportToPdfAsync) da hazırdır. Yalnız bunları bir-birinə bağlamaq lazımdır: PDF-i Customer.Email ünvanına göndərmək üçün düymə/endpoint.
  • Gecikmə xatırlatmaları (dunning) — InvoiceSchedulerHostedService artıq saatda bir dəfə gecikmiş fakturaları Overdue statusuna keçirir; eyni yerdə müştəriyə Overdue statusuna keçdikdə və ya DueDate-dən N gün əvvəl e-poçt xatırlatması göndərmək məntiqli olardı.
  • Mal/xidmət kataloqu — hazırda InvoiceRow.Service sadəcə mətn sətridir və hər faktura sətrində əl ilə daxil edilir. Ayrıca Product/ServiceItem obyekti (ad, standart qiymət, ƏDV) faktura sətri formasına avtomatik doldurma və «xidmətlər üzrə» hesabatda (ReportsController: services) təkrar yazma və səhvlərin qarşısını alardı.
  • UI-də kütləvi əməliyyatlar — məsələn, bir neçə fakturanın eyni anda arxivləşdirilməsi/ixracı (hazırda hər şey tək-tək, /{id}/archive, /{id}/export).

Orta həcmli funksionallıq

  • Çoxvalyutalılıq — CLAUDE.md-də açıq qeyd olunub: Currency "AZN" olaraq sabitlənib, saxlanılmır (persist edilmir). Əgər bu lazım olarsa — həqiqi sütun + InvoiceTotalsCalculator-un yenidən hesablanması tələb olunur.
  • Tərəfdaş/müştəri portalı — müştərinin girişsiz (login olmadan) konkret fakturaya baxması/ödəməsi üçün read-only link (ictimai token-URL). Hazırda hər şey JWT arxasındadır, müştərinin fakturasını görməyin yeganə yolu e-poçtla PDF almaqdır.
  • Onlayn ödəniş — hazırda Payment administrator tərəfindən əl ilə qeyd olunur (təxminən bank köçürməsi/nağd). Ödəniş şlüzü (Stripe/yerli) inteqrasiyası «faktura kəsildi → müştəri onlayn ödədi → status avtomatik dəyişdi» dövrəsini tamamlayardı.
  • Bildiriş tənzimləmələri / e-poçt icmalı — UI üçün SignalR realtime artıq mövcuddur, lakin sahibə e-poçt bildirişləri yoxdur (məsələn, «3 faktura gecikib», «ödəniş alındı»).
  • Genişləndirilmiş hesabatlar — hazırda yalnız customers/services/invoice-status var. Çatışmır: dövrlər üzrə P&L / cash-flow, DueDate üzrə daxilolmaların proqnozu, hesabatların Excel/CSV/PDF formatında ixracı (hazırda PDF ixracı yalnız ayrı-ayrı fakturalar üçündür).

Daha böyük təşəbbüslər

  • Çoxvalyutalılıq + çoxdilli PDF — hazırda PDF, görünür, müştərinin az/eng dilinə uyğun lokallaşdırılmayıb.
  • Komanda üzrə rollar/hüquqlar — hazırda UserRole yalnız User/Admin-dir (admin biznes endpoint-lərindən tamamilə kənarlaşdırılıb). Əgər çoxistifadəçili şirkət modeli lazım olarsa — bir şirkətin fakturalarına fərqli hüquqlarla baxan «işçilər» modeli tələb olunur, sərt 1:1 UserId əvəzinə.
  • İnteqrasiyalar üçün Webhooks/API — mühasibat sistemləri ilə inteqrasiya planlaşdırılırsa.