Документация: решения Q-02, Q-08, Q-09, Q-16; реферальный бонус днями
- Q-02: цены mass в USD $6.99 и $69.90, пресеты пополнения в RUB и USD. - D-025: реферальный бонус — 30 дней к ключу обоим вместо денег; продления без оплаты (key-extensions); крайние случаи — Q-19. - Q-08, Q-09: help@veilix.app и help@veilixvpn.com, часы по Москве. - Q-16: ящики на почтовом хостинге (R-18), на этапе 2 — Chatwoot по IMAP. - R-01 сделано; R-17: путь HMR в Next 16.4 — /_next/hmr. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1a5fe33ead
commit
ae9531d5fc
16 files changed
+124
-47
No files matched your search
+27
-8
@@ -38,6 +38,8 @@ erDiagram
|
||||
ORDERS ||--o{ LEDGER_ENTRIES : "списание, возврат"
|
||||
CUSTOMERS ||--o{ PAYMENT_METHODS : "карты"
|
||||
CUSTOMERS ||--o{ REFERRALS : "пригласил"
|
||||
KEYS ||--o{ KEY_EXTENSIONS : "продления без оплаты"
|
||||
REFERRALS ||--o{ KEY_EXTENSIONS : "бонус"
|
||||
CUSTOMERS ||--o{ CUSTOMER_SESSIONS : "сессии"
|
||||
```
|
||||
|
||||
@@ -51,12 +53,12 @@ erDiagram
|
||||
| name | text (L) | «Вейликс» / «Veilix» |
|
||||
| orderPrefix | text | префикс номеров: `VX`, `VV` |
|
||||
| locales | multi-select из языков конфига | языки контента сайта; en обязателен; домены показывают часть этих языков ([D-023](decisions/D-023-site-locales.md)) |
|
||||
| supportEmail | email | почта поддержки (Q-08) |
|
||||
| supportEmail | email | почта поддержки: `help@veilix.app`, `help@veilixvpn.com` |
|
||||
| emailFrom | group: name, address | отправитель писем, напр. «Вейликс» <no-reply@veilix.app> |
|
||||
| supportBot, mainBot | text | имена ботов (этап 3) |
|
||||
| referralEnabled | checkbox | |
|
||||
| referralBonus | array: currency, amount | бонус «месяц в подарок» в каждой валюте |
|
||||
| topupPresets | array: currency, amounts[] | суммы пополнения в кабинете |
|
||||
| referralBonusDays | number, по умолчанию 30 | бонус «месяц в подарок»: дни срока ключа обоим ([D-025](decisions/D-025-referral-days.md)) |
|
||||
| topupPresets | array: currency, amounts[] | суммы пополнения в кабинете ([04-billing.md](04-billing.md), раздел 4) |
|
||||
| graceDays | number, по умолчанию 3 | льготный период |
|
||||
| reminderDays | number, по умолчанию 3 | за сколько дней напоминать |
|
||||
| renewalLeadHours | number, по умолчанию 24 | за сколько часов до окончания пробовать продлить |
|
||||
@@ -249,6 +251,23 @@ QR-коды строятся на лету из `payload`, не хранятся
|
||||
|
||||
Переходы — в [04-billing.md](04-billing.md).
|
||||
|
||||
### 5.4 `key-extensions` — Продления без оплаты (сайт)
|
||||
|
||||
Реферальный бонус и «Продлить вручную» ([04-billing.md](04-billing.md), раздел 6.4). Только создание, как у движений по счёту.
|
||||
|
||||
| Поле | Тип | Описание |
|
||||
|---|---|---|
|
||||
| key | relationship | |
|
||||
| days | number | сколько дней добавлено |
|
||||
| reason | select `referral` \| `compensation` | реферальный бонус или компенсация из админки |
|
||||
| referral | relationship → referrals | для `referral` |
|
||||
| appliedAt | date, null | когда сдвинут срок; пусто — ключ готовится, дни добавятся при выдаче |
|
||||
| expiresAtBefore, expiresAtAfter | date | срок до и после |
|
||||
| comment | text | обязателен для `compensation` |
|
||||
| createdBy | relationship → admins, null | null — система |
|
||||
|
||||
Уникальность: (`referral`, `key`) — бонус не начисляется дважды.
|
||||
|
||||
## 6. Деньги
|
||||
|
||||
### 6.1 `orders` — Заказы (сайт)
|
||||
@@ -300,13 +319,13 @@ QR-коды строятся на лету из `payload`, не хранятся
|
||||
| customer | relationship | |
|
||||
| currency | | валюта аккаунта |
|
||||
| amount | number со знаком | `+` зачисление, `−` списание |
|
||||
| type | select `topup` \| `order_charge` \| `refund` \| `referral_bonus` \| `adjustment` \| `payout` | `payout` — возврат денег с баланса на карту (этап 4) |
|
||||
| payment, order, key, referral | relationship | источник записи |
|
||||
| type | select `topup` \| `order_charge` \| `refund` \| `adjustment` \| `payout` | `payout` — возврат денег с баланса на карту (этап 4). Реферальный бонус — не деньги, а дни (5.4) |
|
||||
| payment, order, key | relationship | источник записи |
|
||||
| balanceAfter | number | баланс после записи |
|
||||
| comment | text | обязателен для `adjustment` |
|
||||
| createdBy | relationship → admins, null | null — система |
|
||||
|
||||
Уникальность: (`payment`, `topup`), (`order`, `order_charge`), (`referral`, `customer`, `referral_bonus`). Это защищает от двойного проведения.
|
||||
Уникальность: (`payment`, `topup`), (`order`, `order_charge`). Это защищает от двойного проведения.
|
||||
|
||||
### 6.4 `payment-methods` — Сохранённые способы оплаты (сайт)
|
||||
|
||||
@@ -314,7 +333,7 @@ QR-коды строятся на лету из `payload`, не хранятся
|
||||
|
||||
### 6.5 `referrals` — Приглашения (сайт)
|
||||
|
||||
`referrer`, `referee` (уникальное), `status` (`pending` \| `review` \| `rewarded` \| `rejected`), `qualifyingOrder`, `rewardedAt`, `rejectReason`.
|
||||
`referrer`, `referee` (уникальное), `status` (`pending` \| `review` \| `rewarded` \| `rejected`), `qualifyingOrder`, `days` (копия `sites.referralBonusDays` при начислении), `refereeKey`, `referrerKey` (пусто, пока у пригласившего нет подходящего ключа: дни ждут его следующего ключа), `rewardedAt`, `rejectReason`.
|
||||
|
||||
## 7. Контент и коммуникации
|
||||
|
||||
@@ -376,7 +395,7 @@ QR-коды строятся на лету из `payload`, не хранятся
|
||||
| customers | всё | чтение, правка заметок, блокировка | — | только свой профиль |
|
||||
| keys, connections | всё | всё | — | только свои, чтение |
|
||||
| orders, payments | всё | чтение, ручной платёж | — | только свои, чтение |
|
||||
| ledger-entries | создание корректировок, чтение | чтение | — | только свои, чтение |
|
||||
| ledger-entries, key-extensions | создание корректировок и компенсаций, чтение | чтение | — | только свои, чтение |
|
||||
| leads | всё | всё | — | — |
|
||||
| email-log, audit-log | чтение | чтение без `debugCode` | — | — |
|
||||
|
||||
|
||||
Reference in new issue
Block a user