veza/veza-backend-api/internal/services
senke 92cf6d6f76 feat(backend,marketplace): refund reverse-charge with idempotent webhook
Fourth item of the v1.0.6 backlog, and the structuring one — the pre-
v1.0.6 RefundOrder wrote `status='refunded'` to the DB and called
Hyperswitch synchronously in the same transaction, treating the API
ack as terminal confirmation. In reality Hyperswitch returns `pending`
and only finalizes via webhook. Customers could see "refunded" in the
UI while their bank was still uncredited, and the seller balance
stayed credited even on successful refunds.

v1.0.6 flow
  Phase 1 — open a pending refund (short row-locked transaction):
    * validate permissions + 14-day window + double-submit guard
    * persist Refund{status=pending}
    * flip order to `refund_pending` (not `refunded` — that's the
      webhook's job)
  Phase 2 — call PSP outside the transaction:
    * Provider.CreateRefund returns (refund_id, status, err). The
      refund_id is the unique idempotency key for the webhook.
    * on PSP error: mark Refund{status=failed}, roll order back to
      `completed` so the buyer can retry.
    * on success: persist hyperswitch_refund_id, stay in `pending`
      even if the sync status is "succeeded". The webhook is the only
      authoritative signal. (Per customer guidance: "ne jamais flipper
      à succeeded sur la réponse synchrone du POST".)
  Phase 3 — webhook drives terminal state:
    * ProcessRefundWebhook looks up by hyperswitch_refund_id (UNIQUE
      constraint in the new `refunds` table guarantees idempotency).
    * terminal-state short-circuit: IsTerminal() returns 200 without
      mutating anything, so a Hyperswitch retry storm is safe.
    * on refund.succeeded: flip refund + order to succeeded/refunded,
      revoke licenses, debit seller balance, mark every SellerTransfer
      for the order as `reversed`. All within a row-locked tx.
    * on refund.failed: flip refund to failed, order back to
      `completed`.

Seller-side reconciliation
  * SellerBalance.DebitSellerBalance was using Postgres-only GREATEST,
    which silently failed on SQLite tests. Ported to a portable
    CASE WHEN that clamps at zero in both DBs.
  * SellerTransfer.Status = "reversed" captures the refund event in
    the ledger. The actual Stripe Connect Transfers:reversal call is
    flagged TODO(v1.0.7) — requires wiring through TransferService
    with connected-account context that the current transfer worker
    doesn't expose. The internal balance is corrected here so the
    buyer and seller views match as soon as the PSP confirms; the
    missing piece is purely the money-movement round-trip at Stripe.

Webhook routing
  * HyperswitchWebhookPayload extended with event_type + refund_id +
    error_message, with flat and nested (object.*) shapes supported
    (same tolerance as the existing payment fields).
  * New IsRefundEvent() discriminator: matches any event_type
    containing "refund" (case-insensitive) or presence of refund_id.
    routes_webhooks.go peeks the payload once and dispatches to
    ProcessRefundWebhook or ProcessPaymentWebhook.
  * No signature-verification changes — the same HMAC-SHA512 check
    protects both paths.

Handler response
  * POST /marketplace/orders/:id/refund now returns
    `{ refund: { id, status: "pending" }, message }` so the UI can
    surface the in-flight state. A new ErrRefundAlreadyRequested maps
    to 400 with a "already in progress" message instead of silently
    creating a duplicate row (the double-submit guard checks order
    status = `refund_pending` *before* the existing-row check so the
    error is explicit).

Schema
  * Migration 978_refunds_table.sql adds the `refunds` table with
    UNIQUE(hyperswitch_refund_id). The uniqueness constraint is the
    load-bearing idempotency guarantee — a duplicate PSP notification
    lands on the same DB row, and the webhook handler's
    FOR UPDATE + IsTerminal() check turns it into a no-op.
  * hyperswitch_refund_id is nullable (NULL between Phase 1 and
    Phase 2) so the UNIQUE index ignores rows that haven't been
    assigned a PSP id yet.

Partial refunds
  * The Provider.CreateRefund signature carries `amount *int64`
    already (nil = full), but the service call-site passes nil. Full
    refunds only for v1.0.6 — partial-refund UX needs a product
    decision and is deferred to v1.0.7. Flagged in the ErrRefund*
    section.

Tests (15 cases, all sqlite-in-memory + httptest-style mock provider)
  * RefundOrder phase 1
      - OpensPendingRefund: pending state, refund_id captured, order
        → refund_pending, licenses untouched
      - PSPErrorRollsBack: failed state, order reverts to completed
      - DoubleRequestRejected: second call returns
        ErrRefundAlreadyRequested, not a generic ErrOrderNotRefundable
      - NotCompleted / NoPaymentID / Forbidden / SellerCanRefund
      - ExpiredRefundWindow / FallbackExpiredNoDeadline
  * ProcessRefundWebhook
      - SucceededFinalizesState: refund + order + licenses + seller
        balance + seller transfer all reconciled in one tx
      - FailedRollsOrderBack: order returns to completed for retry
      - IsRefundEventIdempotentOnReplay: second webhook asserts
        succeeded_at timestamp is *unchanged*, proving the second
        invocation bailed out on IsTerminal (not re-ran)
      - UnknownRefundIDReturnsOK: never-issued refund_id → 200 silent
        (avoids a Hyperswitch retry storm on stale events)
      - MissingRefundID: explicit 400 error
      - NonTerminalStatusIgnored: pending/processing leave the row
        alone
  * HyperswitchWebhookPayload.IsRefundEvent: 6 dispatcher cases
    (flat event_type, mixed case, payment event, refund_id alone,
    empty, nested object.refund_id)

Backward compat
  * hyperswitch.Provider still exposes the old Refund(ctx,...) error
    method for any call-site that only cared about success/failure.
  * Old mockRefundPaymentProvider replaced; external mocks need to
    add CreateRefund — the interface is now (refundID, status, err).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 02:02:57 +02:00
..
hyperswitch feat(backend,marketplace): refund reverse-charge with idempotent webhook 2026-04-17 02:02:57 +02:00
account_lockout_service.go Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
account_lockout_service_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
admin_platform_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
admin_platform_service_test.go feat(v0.11.3): F421-F424 admin platform service with metrics, user mgmt, content, payments 2026-03-10 18:16:27 +01:00
advanced_analytics_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
advanced_analytics_service_test.go feat(v0.11.1): F396-F399 advanced analytics service, handler and routes 2026-03-10 17:12:26 +01:00
analytics_aggregation_service.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
analytics_aggregation_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
analytics_service.go v0.9.4 2026-03-05 23:03:43 +01:00
analytics_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
announcement_service.go feat(admin): global announcements CRUD and public banner endpoint 2026-02-25 19:55:21 +01:00
api_key_service.go feat(developer): add API keys backend (Lot C) 2026-02-20 00:18:36 +01:00
audio_transcode_service.go fix(security): validate exec.Command paths in Go services 2026-02-11 21:32:38 +01:00
audio_transcode_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
audit_service.go fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others 2026-02-22 17:53:00 +01:00
audit_service_test.go fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others 2026-02-22 17:53:00 +01:00
backup_service.go fix(security): validate exec.Command paths in Go services 2026-02-11 21:32:38 +01:00
backup_service_test.go fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others 2026-02-22 17:53:00 +01:00
bandwidth_detection_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
bandwidth_detection_service_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
bitrate_adaptation_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
bitrate_adaptation_service_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
bitrate_strategy_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
bitrate_strategy_service_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
buffer_monitor_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
buffer_monitor_service_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
cache_service.go [BE-SVC-001] be-svc: Implement caching layer for frequently accessed data 2025-12-24 16:02:16 +01:00
cache_service_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
captcha_service.go feat(v0.13.0): conformité features partielles — CAPTCHA, password history, login history, SMS 2FA 2026-03-12 09:31:50 +01:00
captcha_service_test.go feat(v0.13.0): conformité features partielles — CAPTCHA, password history, login history, SMS 2FA 2026-03-12 09:31:50 +01:00
cdn_service.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
cdn_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
chat_pubsub.go fix(chat,config): require REDIS_URL in prod + error on in-memory fallback 2026-04-16 14:56:47 +02:00
chat_pubsub_test.go fix(chat,config): require REDIS_URL in prod + error on in-memory fallback 2026-04-16 14:56:47 +02:00
chat_service.go v0.9.4 2026-03-05 23:03:43 +01:00
chat_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
circuit_breaker.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
circuit_breaker_integration_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
circuit_breaker_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
cloud_backup.go feat(cloud): GDPR data export and automatic backup cron 2026-02-25 13:35:16 +01:00
cloud_service.go feat: backend — config, handlers, services, logging, migration 2026-03-23 15:46:57 +01:00
cloud_service_test.go feat(v0.501): Sprint 3 -- Cloud Storage MVP backend 2026-02-22 18:23:58 +01:00
co_listening_service.go feat(v0.10.7): Collaboration Temps Réel F481-F483 2026-03-10 13:34:16 +01:00
comment_moderation_service.go feat(v0.10.3): Commentaires & Interactions Sociales - F201-F215 2026-03-09 10:30:47 +01:00
comment_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
comment_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
creator_analytics_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
creator_analytics_service_test.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
crypto_service.go release(v0.902): Sentinel - PKCE OAuth, token encryption, redirect validation, CHAT_JWT_SECRET 2026-02-26 19:49:15 +01:00
crypto_service_test.go release(v0.902): Sentinel - PKCE OAuth, token encryption, redirect validation, CHAT_JWT_SECRET 2026-02-26 19:49:15 +01:00
data_export_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
data_export_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
email_service.go refactor(backend,infra): unify SMTP env schema on canonical SMTP_* names 2026-04-16 20:44:09 +02:00
email_service_password_reset_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
email_service_test.go fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others 2026-02-22 17:53:00 +01:00
email_verification_service.go stabilisation commit A 2026-01-07 19:39:21 +01:00
email_verification_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
errors.go feat(v0.10.3): Commentaires & Interactions Sociales - F201-F215 2026-03-09 10:30:47 +01:00
ethical_search_test.go feat(v0.12.9): ethical bias tests, discovery algorithm docs, CI coverage gates 2026-03-12 08:19:41 +01:00
feature_flag_service.go feat(admin): feature flags CRUD with DB persistence 2026-02-25 19:56:24 +01:00
fulltext_search_service.go v0.9.4 2026-03-05 23:03:43 +01:00
fulltext_search_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
gdpr_export.go feat(gdpr): v0.10.8 portabilité données - export ZIP async, suppression compte, hard delete cron 2026-03-10 13:57:04 +01:00
gear_document_service.go feat(v0.802): frontend Cloud/Gear, MSW, docs, scope v0.803, archive 2026-02-25 14:00:58 +01:00
gear_service.go feat(v0.501): Sprint 4 -- Cloud frontend + Gear advanced 2026-02-22 18:30:49 +01:00
gear_warranty_notifier.go v0.9.4 2026-03-05 23:03:43 +01:00
gear_warranty_notifier_test.go feat(v0.923): API contract tests, OpenAPI generation, CI type sync check 2026-02-27 20:23:10 +01:00
geoip_service.go chore(cleanup): J5 — defer GeoIP, rename v2-v3-types, document Storybook kill 2026-04-15 12:43:57 +02:00
geoip_service_test.go feat(v0.13.3): complete - Polish Sécurité Avancée 2026-03-13 10:09:01 +01:00
hls_cleanup_service.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
hls_playlist_generator.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
hls_playlist_generator_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
hls_queue_service.go v0.9.4 2026-03-05 23:03:43 +01:00
hls_service.go [BE-API-020] be-api: Implement HLS stream info endpoint 2025-12-24 11:32:50 +01:00
hls_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
hls_streaming_service_enhanced.go v0.9.4 2026-03-05 23:03:43 +01:00
hls_streaming_service_enhanced_test.go v0.9.4 2026-03-05 23:03:43 +01:00
hls_transcode_service.go fix(security): validate exec.Command paths in Go services 2026-02-11 21:32:38 +01:00
hls_transcode_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
image_service.go v0.9.4 2026-03-05 23:03:43 +01:00
image_service_enhanced.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
image_service_enhanced_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
image_service_test.go fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others 2026-02-22 17:53:00 +01:00
interfaces.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
job_service.go fix(backend): remediation plan — tests, playback_analytics, job queue, gamification 2026-02-17 16:01:45 +01:00
job_service_test.go fix(backend): remediation plan — tests, playback_analytics, job queue, gamification 2026-02-17 16:01:45 +01:00
jwt_service.go feat(v0.12.6.2): enforce MFA for admin/moderator + align refresh token TTL to 7 days 2026-03-12 06:53:27 +01:00
jwt_service_test.go v0.9.1 2026-03-05 19:22:31 +01:00
kyc_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
kyc_service_test.go feat(v0.13.5): polish marketplace & compliance — KYC, support, payout E2E 2026-03-13 14:57:19 +01:00
live_stream_service.go feat(v0.10.6): Livestreaming basique F471-F476 2026-03-10 10:21:57 +01:00
live_stream_service_test.go feat(v0.703): Go Live & Streaming Complet 2026-02-25 09:35:22 +01:00
login_history_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
metadata_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
metadata_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
moderation_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
moderation_service_test.go feat(v0.11.2): F411-F420 moderation service with queue, spam, fingerprints, strikes 2026-03-10 17:45:34 +01:00
monitoring_alerting_service.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
monitoring_alerting_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
notification_digest_worker.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
notification_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
notification_service_enhanced.go v0.9.4 2026-03-05 23:03:43 +01:00
notification_service_enhanced_test.go v0.9.4 2026-03-05 23:03:43 +01:00
notification_service_test.go feat(v0.10.5): Notifications complètes — F551-F555 2026-03-10 10:02:21 +01:00
oauth_service.go fix(v0.12.6.1): remediate 2 CRITICAL + 10 HIGH + 1 MEDIUM pentest findings 2026-03-12 05:40:53 +01:00
oauth_service_test.go v0.9.1 2026-03-05 19:22:31 +01:00
password_expiration_test.go feat(v0.13.3): complete - Polish Sécurité Avancée 2026-03-13 10:09:01 +01:00
password_history_service.go feat(v0.13.0): conformité features partielles — CAPTCHA, password history, login history, SMS 2FA 2026-03-12 09:31:50 +01:00
password_history_service_test.go feat(v0.13.0): conformité features partielles — CAPTCHA, password history, login history, SMS 2FA 2026-03-12 09:31:50 +01:00
password_reset_service.go v0.9.4 2026-03-05 23:03:43 +01:00
password_reset_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
password_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
password_service_integration_test.go fix(release): v1.0.2 — Conformité complète V1_SIGNOFF (21 critères) 2026-03-03 21:18:53 +01:00
password_service_test.go Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
permission_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
permission_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
playback_aggregation_service.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
playback_aggregation_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
playback_alerts_service.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
playback_alerts_service_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
playback_analytics_rate_limiter.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
playback_analytics_service.go fix(v0.12.6.1): remediate remaining 15 MEDIUM + LOW pentest findings 2026-03-12 06:13:38 +01:00
playback_analytics_service_test.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
playback_comparison_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_comparison_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_export_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
playback_export_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_filter_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_filter_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_heatmap_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
playback_heatmap_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_retention_policy_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_retention_service.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
playback_retention_service_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
playback_segmentation_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playback_segmentation_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_analytics_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_analytics_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_duplicate_service.go [T0-006] test(backend): Ajout tests pour frontend_log_handler 2026-01-04 01:44:22 +01:00
playlist_follow_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
playlist_follow_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_notification_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_recommendation_service.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
playlist_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
playlist_service_search_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
playlist_service_test.go chore(v0.102): consolidate remaining changes — docs, frontend, backend 2026-02-20 13:02:12 +01:00
playlist_share_service.go v0.9.4 2026-03-05 23:03:43 +01:00
playlist_version_service.go chore: consolidate CI, E2E, backend and frontend updates 2026-02-17 16:43:21 +01:00
presence_service.go feat: backend — config, handlers, services, logging, migration 2026-03-23 15:46:57 +01:00
push_service.go feat(notifications): N1.1-N1.3 Web Push subscription, send on events, preferences 2026-02-21 16:41:39 +01:00
query_parser.go v0.9.4 2026-03-05 23:03:43 +01:00
queue_service.go v0.9.4 2026-03-05 23:03:43 +01:00
queue_session_service.go v0.9.4 2026-03-05 23:03:43 +01:00
rbac_service.go v0.9.4 2026-03-05 23:03:43 +01:00
refresh_lock.go v0.9.4 2026-03-05 23:03:43 +01:00
refresh_token_service.go stabilizing apps/web: SECOND BATCH - FIXING Playwright 2025-12-17 12:20:42 -05:00
refresh_token_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
report_service.go v0.9.4 2026-03-05 23:03:43 +01:00
role_service.go v0.9.4 2026-03-05 23:03:43 +01:00
role_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
room_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
room_service_test.go [T0-006] test(backend): Ajout tests pour frontend_log_handler 2026-01-04 01:44:22 +01:00
royalty_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
s3_storage_service.go feat(v0.501): Sprint 2 -- HLS production-ready 2026-02-22 18:16:37 +01:00
s3_storage_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
search_service.go v0.9.4 2026-03-05 23:03:43 +01:00
session_service.go feat(auth): enrich sessions page with history and revoke (A4) 2026-02-20 14:52:20 +01:00
session_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
sms_2fa_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
social_service.go feat: backend — config, handlers, services, logging, migration 2026-03-23 15:46:57 +01:00
social_service_test.go v0.9.8 2026-03-06 19:13:16 +01:00
stream_service.go v0.9.4 2026-03-05 23:03:43 +01:00
stream_service_retry_test.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
stream_service_test.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
stripe_connect_service.go v0.9.4 2026-03-05 23:03:43 +01:00
tag_suggest_service.go feat(upload): tags auto-suggest endpoint and additional audio formats 2026-02-25 13:39:59 +01:00
tag_suggest_service_test.go feat(v0.923): API contract tests, OpenAPI generation, CI type sync check 2026-02-27 20:23:10 +01:00
token_blacklist.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
token_blacklist_test.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
totp_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_chunk_service.go chore: consolidate CI, E2E, backend and frontend updates 2026-02-17 16:43:21 +01:00
track_chunk_service_resume_test.go chore: consolidate CI, E2E, backend and frontend updates 2026-02-17 16:43:21 +01:00
track_download_license.go fix(security): verify track access before download (A04) 2026-02-16 10:23:41 +01:00
track_export_service.go v0.9.4 2026-03-05 23:03:43 +01:00
track_history_service.go v0.9.4 2026-03-05 23:03:43 +01:00
track_history_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
track_like_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
track_like_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
track_recommendation_service.go v0.9.4 2026-03-05 23:03:43 +01:00
track_recommendation_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
track_repost_service.go feat(v0.10.3): Commentaires & Interactions Sociales - F201-F215 2026-03-09 10:30:47 +01:00
track_search_service.go v0.9.4 2026-03-05 23:03:43 +01:00
track_search_service_test.go release(v0.903): Vault - ORDER BY whitelist, rate limiter, VERSION sync, chat-server cleanup, Go 1.24 2026-02-27 09:43:25 +01:00
track_service_batch_delete_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_service_batch_update_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_service_list_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_service_quota_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_service_stats_test.go.disabled adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_share_service.go stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
track_share_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
track_stem_service.go feat(v0.10.7): Collaboration Temps Réel F481-F483 2026-03-10 13:34:16 +01:00
track_storage_service.go STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
track_upload_service.go fix(security): add ownership check to GetUploadStatus handler (IDOR fix) 2026-02-22 17:30:30 +01:00
track_upload_service_test.go v0.9.4 2026-03-05 23:03:43 +01:00
track_validation_service.go adding initial backend API (Go) 2025-12-03 20:29:37 +01:00
track_validation_service_test.go report generation and future tasks selection 2025-12-08 19:57:54 +01:00
track_version_service.go v0.9.4 2026-03-05 23:03:43 +01:00
two_factor_service.go fix(v0.12.6.1): remediate 2 CRITICAL + 10 HIGH + 1 MEDIUM pentest findings 2026-03-12 05:40:53 +01:00
upload_store.go refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
upload_validator.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
upload_validator_integration_test.go chore: add go.work and optional monorepo orchestrator 2026-02-14 18:21:39 +01:00
upload_validator_test.go v0.9.2 2026-03-05 19:27:34 +01:00
user_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
user_service_search.go fix(tests): parse RespondSuccess envelope in GetUploadStats test 2026-02-19 14:04:47 +01:00
user_service_test.go fix(v0.12.6.1): remediate 2 CRITICAL + 10 HIGH + 1 MEDIUM pentest findings 2026-03-12 05:40:53 +01:00
video_transcode_service.go feat(v0.12.3): F276-F305 video upload, HLS transcoding, education tests 2026-03-11 19:20:48 +01:00
video_transcode_service_test.go feat(v0.12.3): F276-F305 video upload, HLS transcoding, education tests 2026-03-11 19:20:48 +01:00
waveform_service.go feat(security): v0.901 Ironclad - fix 5 critical/high vulnerabilities 2026-02-26 19:34:45 +01:00
waveform_service_test.go feat(security): v0.901 Ironclad - fix 5 critical/high vulnerabilities 2026-02-26 19:34:45 +01:00
webauthn_service.go style(backend): gofmt -w on 85 files (whitespace only) 2026-04-14 12:22:14 +02:00
webauthn_service_test.go feat(v0.13.3): complete - Polish Sécurité Avancée 2026-03-13 10:09:01 +01:00
webhook_service.go security(webhooks): extract SSRF validation to internal/validators/url_validator 2026-02-14 18:24:39 +01:00
webhook_service_test.go incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00