feat(desktop): статусы пайщиков бейджами + удаление непринятых аккаунтов из реестра #112

Merged
ant merged 5 commits from fix/participants-registry-status-badges into dev 2026-06-09 06:52:53 +00:00
Owner

Реестр пайщиков (widgets/Participants). Две части.

1. Бейджи статусов вместо галочки

  • ParticipantsTable.vue / ParticipantCard.vue: q-checkbox (accepted?) → BaseBadge с человекочитаемым статусом. Колонка «Активен» → «Статус».
  • entities/Account/lib/accountStatus.ts (новый): getAccountStatusBadge сводит participant_account (accepted|blocked) + provider_account.status (Zeus.UserStatus) + отказ совета (Registered + возврат взноса → «Отклонён советом»).
  • controller getAccounts: enrich registration_payment через this.getAccount — иначе на списке отказ совета неотличим от «ожидает совет».
Источник Метка Бейдж
participant accepted / Active Активный пайщик pos
Created Черновик neutral
Joined Заявление подано info
Payed Взнос оплачен info
Registered Ожидает решения совета warn
Registered + возврат взноса Отклонён советом neg
Failed Ошибка регистрации neg
Refunded Взнос возвращён neutral
Blocked / participant blocked Заблокирован neg

2. Удаление расширено: любой непринятый аккаунт

Было: allow-list статусов [Created, Joined, Payed, Failed, Refunded]. Но воронка реально доходит лишь до Registered — отказ совета и возврат взноса оставляют статус Registered, а Failed/Refunded users.status никем не выставляются. Значит allow-list исключал именно отклонённые/оплаченные брошенные регистрации — ровно те, ради которых задумана чистка реестра («тестеры, брошенные попытки»). Фича не работала для своей цели.

Стало: единственный гард — НЕ принят в кооператив (!participant_account). participant_account появляется только после приёма советом, его наличие ⟺ член кооператива. Кнопка delete теперь и у Registered (оплачен / на рассмотрении совета / отклонён / возврат).

Про блокчейн (важно): аккаунт в цепи создаётся в момент оплаты взноса (PAID → registerBlockchainAccount), не раньше и не на приёме советом. EOSIO-аккаунт удалить нельзя. deleteAccount чистит только строку users в PG — on-chain аккаунт остаётся осиротевшим, имя в цепи занято навсегда. Для регистрационной чистки это приемлемо (off-chain учёт провайдера и цепь намеренно расходятся). Confirm-диалог для Registered явно предупреждает об этом + просит сначала отклонить заявку в повестке, если она ещё на рассмотрении совета.

Created/Joined (до оплаты) — нулевой след в цепи, чистое удаление.

🤖 Generated with Claude Code

Реестр пайщиков (widgets/Participants). Две части. ## 1. Бейджи статусов вместо галочки - **ParticipantsTable.vue / ParticipantCard.vue**: `q-checkbox` (accepted?) → `BaseBadge` с человекочитаемым статусом. Колонка «Активен» → «Статус». - **entities/Account/lib/accountStatus.ts** (новый): `getAccountStatusBadge` сводит `participant_account` (accepted|blocked) + `provider_account.status` (Zeus.UserStatus) + отказ совета (Registered + возврат взноса → «Отклонён советом»). - **controller `getAccounts`**: enrich `registration_payment` через `this.getAccount` — иначе на списке отказ совета неотличим от «ожидает совет». | Источник | Метка | Бейдж | |---|---|---| | participant accepted / Active | Активный пайщик | pos | | Created | Черновик | neutral | | Joined | Заявление подано | info | | Payed | Взнос оплачен | info | | Registered | Ожидает решения совета | warn | | Registered + возврат взноса | Отклонён советом | neg | | Failed | Ошибка регистрации | neg | | Refunded | Взнос возвращён | neutral | | Blocked / participant blocked | Заблокирован | neg | ## 2. Удаление расширено: любой непринятый аккаунт **Было:** allow-list статусов `[Created, Joined, Payed, Failed, Refunded]`. Но воронка реально доходит лишь до `Registered` — отказ совета и возврат взноса оставляют статус `Registered`, а `Failed/Refunded` users.status **никем не выставляются**. Значит allow-list исключал именно отклонённые/оплаченные брошенные регистрации — ровно те, ради которых задумана чистка реестра («тестеры, брошенные попытки»). Фича не работала для своей цели. **Стало:** единственный гард — **НЕ принят в кооператив** (`!participant_account`). `participant_account` появляется только после приёма советом, его наличие ⟺ член кооператива. Кнопка delete теперь и у `Registered` (оплачен / на рассмотрении совета / отклонён / возврат). **Про блокчейн (важно):** аккаунт в цепи создаётся **в момент оплаты взноса** (PAID → `registerBlockchainAccount`), не раньше и не на приёме советом. EOSIO-аккаунт удалить нельзя. `deleteAccount` чистит только строку `users` в PG — on-chain аккаунт остаётся осиротевшим, имя в цепи занято навсегда. Для регистрационной чистки это приемлемо (off-chain учёт провайдера и цепь намеренно расходятся). Confirm-диалог для `Registered` явно предупреждает об этом + просит сначала отклонить заявку в повестке, если она ещё на рассмотрении совета. Created/Joined (до оплаты) — нулевой след в цепи, чистое удаление. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude added 3 commits 2026-06-09 06:15:47 +00:00
chore(release): publish
Build bootstrap container / build (push) Successful in 2m57s
Release / release (push) Successful in 25m7s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
765af3cbef
chore(release): publish
Build bootstrap container / build (push) Successful in 3m8s
Release / release (push) Successful in 25m6s
Release / publish-packages (push) Failing after 8m25s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 1s
70bd1323c7
[@ant] feat(desktop): статусы пайщиков бейджами в реестре + enrich registration_payment
Typecheck / desktop (pull_request) Successful in 13m49s
Typecheck / controller (pull_request) Has been cancelled
0e9542fff4
- ParticipantsTable/ParticipantCard: галочка «Активен» → BaseBadge с
  человекочитаемым статусом; колонка «Активен» → «Статус».
- entities/Account/lib/accountStatus.ts: getAccountStatusBadge — сводит
  participant_account (accepted|blocked) + provider_account.status +
  отказ совета (Registered + возврат взноса) → «Отклонён советом».
- controller getAccounts: enrich registration_payment через this.getAccount,
  иначе на списке реестра отказ совета неотличим от «ожидает совет».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude added 1 commit 2026-06-09 06:32:13 +00:00
[@ant] feat: удаление любого непринятого аккаунта из реестра (гард только participant_account)
Typecheck / controller (pull_request) Has been cancelled
Typecheck / desktop (pull_request) Has been cancelled
955142cf84
Прежний allow-list статусов исключал Registered — но именно туда попадают
отклонённые советом и оплаченные брошенные регистрации (отказ/возврат
оставляют статус registered; failed/refunded users.status никем не
выставляются). То есть чистка не работала для своей же цели «убрать
незавершённые/отклонённые регистрации (тестеры)».

- backend deleteAccount: убран allow-list по статусу, остаётся единственный
  гард — НЕ принят в кооператив (нет participant_account).
- frontend isDeletable: !participant_account. Кнопка удаления теперь и у
  Registered (оплачен/на рассмотрении совета/отклонён/возврат).
- confirm-диалог: для blockchain-registered (Registered) предупреждение, что
  on-chain аккаунт неудаляем (имя в цепи занято навсегда) + про отзыв заявки
  на повестке, если ещё на рассмотрении совета.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude changed title from feat(desktop): статусы пайщиков бейджами в реестре + разбор кнопки delete to feat(desktop): статусы пайщиков бейджами + удаление непринятых аккаунтов из реестра 2026-06-09 06:32:57 +00:00
claude added 1 commit 2026-06-09 06:44:35 +00:00
[@ant] fix(desktop): правка текста предупреждения при удалении registered-аккаунта
Typecheck / desktop (pull_request) Successful in 15m1s
Typecheck / controller (pull_request) Successful in 13m41s
15813d91ef
«исчезнет» → «исчезает»; убрано предложение про отзыв заявки на повестке —
кнопка доступна только когда аккаунт уже в цепи (after оплаты), решение совета
тут неприменимо.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ant approved these changes 2026-06-09 06:52:49 +00:00
ant merged commit c3ff628dac into dev 2026-06-09 06:52:53 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#112