TG settlement service

This commit is contained in:
Stephan D
2026-01-02 14:54:18 +01:00
parent ea1c69f14a
commit 743f683d92
82 changed files with 4693 additions and 503 deletions

View File

@@ -11,6 +11,7 @@ import (
"github.com/tech/sendico/pkg/domainprovider"
"github.com/tech/sendico/pkg/merrors"
na "github.com/tech/sendico/pkg/messaging/notifications/account"
confirmations "github.com/tech/sendico/pkg/messaging/notifications/confirmations"
cnotifications "github.com/tech/sendico/pkg/messaging/notifications/confirmation"
ni "github.com/tech/sendico/pkg/messaging/notifications/invitation"
snotifications "github.com/tech/sendico/pkg/messaging/notifications/site"
@@ -26,6 +27,7 @@ type NotificationAPI struct {
dp domainprovider.DomainProvider
tg telegram.Client
announcer *discovery.Announcer
confirm *confirmationManager
}
func (a *NotificationAPI) Name() mservice.Type {
@@ -36,6 +38,9 @@ func (a *NotificationAPI) Finish(_ context.Context) error {
if a.announcer != nil {
a.announcer.Stop()
}
if a.confirm != nil {
a.confirm.Stop()
}
return nil
}
@@ -61,6 +66,7 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
p.logger.Error("Failed to create telegram client", zap.Error(err))
return nil, err
}
p.confirm = newConfirmationManager(p.logger, p.tg, a.Register().Producer())
db, err := a.DBFactory().NewAccountDB()
if err != nil {
@@ -81,6 +87,10 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
p.logger.Error("Failed to create confirmation code handler", zap.Error(err))
return nil, err
}
if err := a.Register().Consumer(confirmations.NewConfirmationRequestProcessor(p.logger, p.onConfirmationRequest)); err != nil {
p.logger.Error("Failed to register confirmation request handler", zap.Error(err))
return nil, err
}
idb, err := a.DBFactory().NewInvitationsDB()
if err != nil {
@@ -97,6 +107,10 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
return nil, err
}
if router := a.Router(); router != nil {
router.Post("/telegram/webhook", p.handleTelegramWebhook)
}
announce := discovery.Announcement{
Service: "NOTIFICATIONS",
Operations: []string{"notify.send"},
@@ -143,3 +157,10 @@ func (a *NotificationAPI) onCallRequest(ctx context.Context, request *model.Call
a.logger.Info("Call request sent via Telegram", zap.String("phone", request.Phone))
return nil
}
func (a *NotificationAPI) onConfirmationRequest(ctx context.Context, request *model.ConfirmationRequest) error {
if a.confirm == nil {
return merrors.Internal("confirmation manager is not configured")
}
return a.confirm.HandleRequest(ctx, request)
}