2026-04-06 06:19:10 +02:00
|
|
|
[package]
|
|
|
|
|
name = "payments"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
edition.workspace = true
|
|
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
|
axum.workspace = true
|
|
|
|
|
serde.workspace = true
|
|
|
|
|
serde_json.workspace = true
|
|
|
|
|
tokio.workspace = true
|
|
|
|
|
tracing.workspace = true
|
|
|
|
|
tracing-subscriber.workspace = true
|
|
|
|
|
reqwest = { version = "0.12", features = ["json", "stream"] }
|
|
|
|
|
anyhow.workspace = true
|
2026-04-06 08:24:08 +02:00
|
|
|
contracts = { path = "../../crates/contracts" }
|
feat: Complete Ask Ash AI Credits implementation on high-performance branch (Tasks 1-10)
- Task 1: Admin endpoints for wallet management
- Task 2: AI Credits admin UI (pricing.tsx, credit.tsx)
- Task 3: Ollama security (NetworkPolicy, prompt validation, audit)
- Task 4: LiteLLM integration (litellm.rs, migrated AI feature handlers)
- Task 5: Refund architecture (ai_refunds table, endpoints)
- Task 6: Coupons, promotions, referrals (order creation with coupon)
- Task 7: Subscription lifecycle (plan upgrades/downgrades, cron jobs)
- Task 8: Credit expiration enforcement (daily cron task)
- Task 9: Token cost engine (ai_model_cost_config, margin view)
- Task 10: Observability (metrics tables, aggregation function)
Cherry-picked from main branch commit 3c0f45f
2026-07-06 01:49:16 +05:30
|
|
|
db = { path = "../../crates/db" }
|
feat: generate a GST invoice automatically after a successful Tracecoin/PayU purchase
crates/invoice (InvoiceService, GST computation, HTML rendering) was
fully built but never wired to anything and never had its tables —
invoices/invoice_line_items/billing_profiles/invoice_number_seq never
existed in any active migration (same root cause as everything else
this session: only in scripts/init-db.sql, which the real db-migrate
job never runs). Created them, matching InvoiceService's actual
columns exactly rather than init-db.sql's older, simpler invoices
shape.
Fixed a real bug in InvoiceService::create while at it: four money
fields (total, and three line-item amounts) were bound as i64 against
columns/read-models that are i32 everywhere else — would have failed
every insert with a Postgres type mismatch the first time this code
ever actually ran against a real table.
Wired invoice generation into apps/payments' PayU verify_payment
handler (the actual success callback) — right after the wallet is
credited, a one-line-item GST invoice is generated from the purchased
package and PayU's billing fields (firstname/email/phone), using a
new INVOICE_SELLER_* env-configurable seller identity. Generation
failures are logged, not surfaced to the buyer, since the payment and
wallet credit have already succeeded by that point.
Also added the missing user-facing endpoints to fetch what got
generated: GET /api/payments/invoices (list) and
GET /api/payments/invoices/{id} (detail + line items) — previously
only admin-side invoice viewing existed.
NOTE: the frontend (nxtgauge-frontend-solid, a separate repo) has an
existing invoice-viewing page at src/routes/dashboard/wallet/invoices/
but it calls /wallet/me/invoices (no /api/ prefix) via a different,
apparently-dead API helper (api.get, not apiFetch) that every other
live page avoids — same dead-code pattern as the earlier apps/leads
discovery. The live purchase flow (CreditsPage.tsx) has no invoice UI
at all yet. Not fixed here since it's out of this repo's scope this
session — flagging for a frontend pass.
2026-07-21 03:02:47 +05:30
|
|
|
invoice = { path = "../../crates/invoice" }
|
2026-04-06 08:24:08 +02:00
|
|
|
sqlx.workspace = true
|
|
|
|
|
uuid.workspace = true
|
|
|
|
|
chrono.workspace = true
|
2026-06-26 20:47:31 +02:00
|
|
|
sha2 = "0.10"
|
|
|
|
|
hex = "0.4"
|
feat: Complete Ask Ash AI Credits implementation on high-performance branch (Tasks 1-10)
- Task 1: Admin endpoints for wallet management
- Task 2: AI Credits admin UI (pricing.tsx, credit.tsx)
- Task 3: Ollama security (NetworkPolicy, prompt validation, audit)
- Task 4: LiteLLM integration (litellm.rs, migrated AI feature handlers)
- Task 5: Refund architecture (ai_refunds table, endpoints)
- Task 6: Coupons, promotions, referrals (order creation with coupon)
- Task 7: Subscription lifecycle (plan upgrades/downgrades, cron jobs)
- Task 8: Credit expiration enforcement (daily cron task)
- Task 9: Token cost engine (ai_model_cost_config, margin view)
- Task 10: Observability (metrics tables, aggregation function)
Cherry-picked from main branch commit 3c0f45f
2026-07-06 01:49:16 +05:30
|
|
|
rand = "0.8"
|
2026-07-06 02:23:29 +05:30
|
|
|
rust_decimal = { version = "1.35", features = ["db-tokio-postgres"] }
|