369 Commits

Author SHA1 Message Date
coopops 81df662cfa chore(release): publish
Build bootstrap container / build (push) Successful in 46s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / release (push) Successful in 34m17s
Release / trigger-mono-docs (push) Successful in 2s
Release / publish-packages (push) Failing after 13m36s
2026-07-21 08:50:38 +00:00
coopops 3db80a30e9 chore(release): publish
Release / release (push) Failing after 2m16s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
Build bootstrap container / build (push) Successful in 49s
2026-07-19 17:01:42 +00:00
coopops ba6d3d1310 chore(release): publish
Build bootstrap container / build (push) Successful in 1m10s
Release / publish-packages (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
Release / release (push) Successful in 28m13s
Release / trigger-coopenomics-docs (push) Has been skipped
2026-07-19 15:20:08 +00:00
coopops ed9b0879d5 chore(release): publish
Build bootstrap container / build (push) Successful in 2m42s
Release / release (push) Successful in 22m23s
Release / publish-packages (push) Successful in 14m53s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 2s
2026-07-17 14:41:21 +00:00
coopops 15fdf35dd3 chore(release): publish
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
Build bootstrap container / build (push) Failing after 2m10s
Release / release (push) Failing after 15m13s
Release / publish-packages (push) Has been skipped
2026-07-17 14:02:54 +00:00
coopops 79b89695d1 chore(release): publish 2026-07-17 13:58:44 +00:00
coopops 7b27d0805c chore(release): publish
Release / release (push) Successful in 43m2s
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
Build bootstrap container / build (push) Successful in 46s
2026-07-17 12:54:54 +00:00
coopops ff5df68bce chore(release): publish
Release / publish-packages (push) Failing after 21m11s
Release / release (push) Successful in 1h35m7s
Release / trigger-coopenomics-docs (push) Successful in 3s
Release / trigger-mono-docs (push) Successful in 3s
Build bootstrap container / build (push) Successful in 10m29s
2026-07-09 05:49:14 +00:00
Alex Ant b9107e9ee9 chore(release): publish
Build bootstrap container / build (push) Successful in 1m45s
Release / release (push) Failing after 55m53s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-24 22:04:51 +05:00
coopops 560321853c Merge remote-tracking branch 'origin/dev' into feat/membership-exit
Typecheck / desktop (pull_request) Has been cancelled
Typecheck / controller (pull_request) Has been cancelled
2026-06-16 08:42:23 +00:00
coopops 7efd19f1bd chore(release): publish
Build bootstrap container / build (push) Has been cancelled
Release / publish-packages (push) Failing after 8m37s
Release / release (push) Successful in 27m21s
Release / trigger-coopenomics-docs (push) Successful in 1s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-16 08:11:23 +00:00
coopops 07ec6d9a5b chore(release): publish
Build bootstrap container / build (push) Failing after 1m27s
Release / release (push) Failing after 16m43s
Release / trigger-mono-docs (push) Has been skipped
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
2026-06-16 06:02:31 +00:00
coopops 50d5d71c8d Merge branch 'dev' into feat/membership-exit
Втягиваем инфраструктуру исходящих платежей (шасси расходов C28) для
создания возврата паевого взноса в gateway при выходе пайщика.

Конфликты (объединены обе стороны):
- gateway payment-type.enum / payment-domain.entity: MEMBERSHIP_EXIT + EXPENSE*
- zeus-клиенты (controller, sdk): взята версия dev, регенерация следом

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 16:30:43 +00:00
coopops 9ee57d1e05 feat(membership-exit): email-подтверждение выхода — backend + письмо
Typecheck / desktop (pull_request) Has been cancelled
Typecheck / controller (pull_request) Has been cancelled
Двойное подтверждение необратимого выхода (закрытия аккаунта): заявление
подписывается и принимается сразу, но в блокчейн уходит только после перехода
по ссылке из письма (по аналогии с verify-email/reset-key токенами).

- notifications: воркфлоу MembershipExitConfirmation (письмо со ссылкой confirmationUrl).
- token: тип CONFIRM_EXIT + generateConfirmExitToken (домен + application).
- entity membership_exit_requests (off-chain черновик подписанного заявления; uniq coopname+username; удаляется при confirm/cancel).
- MembershipExitStatus += AWAITING_CONFIRMATION; MembershipExitResult += status.
- service: createMembershipExit теперь сохраняет черновик + шлёт письмо (НЕ цепь);
  confirmMembershipExit(token) проверяет токен и шлёт exitcoop в цепь;
  cancelMembershipExit удаляет черновик+токен; getMembershipExit отдаёт off-chain фазу.
- resolver: + confirmMembershipExit (публичная, по токену) + cancelMembershipExit (auth+владелец).

Проверено вживую: мутации в схеме, enum/Result обновлены, таблица создана (synchronize).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 15:08:03 +00:00
coopops 9ac810f34a [C28-55][@ant] fix: вернуть «Направление» в реестр (перспектива стола) + универсальные уведомления о платеже
Typecheck / desktop (pull_request) Failing after 8m33s
Typecheck / controller (pull_request) Failing after 8m0s
Направление платежа (ListOfPaymentsWidget):
- колонка «Направление» снова показывается на ОБОИХ столах;
- on-chain direction всегда относительно кооператива (INCOMING = в кооператив).
  Стол совета (!hideActions) так и видит; на личном столе пайщика (hideActions)
  перспектива обратная — direction инвертируется (исходящий из кооператива =
  поступление пайщику). Хелперы displayDirection/directionLabel/directionHint,
  tooltip с пояснением («В кооператив»/«Из кооператива» vs «Поступление вам»/
  «Списание с вас»). colspan/skeleton/min-width поправлены под доп. колонку.

Уведомления о платеже — без привязки к типу:
- workflow payment-refunded (любой исходящий PAID пайщику) больше не «Возврат
  взноса выполнен», а универсальное «Платёж выполнен» (тем же каналом идут
  аванс под отчёт, доплата по перерасходу и пр. — тип платежа неизвестен).
  payment-paid уже был универсальным («Платёж принят» для входящего).
- комментарий в payment-notification.service приведён в соответствие.

ESLint ✓, notifications build ✓ (id platyozh-vypolnen резолвится в каталоге).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 05:13:00 +00:00
coopops 832ea5fd96 [C28-44][@ant] chore: удалить мёртвую страницу «Мои авансы» + перецелить ссылку напоминателя
Typecheck / controller (pull_request) Has been cancelled
Typecheck / desktop (pull_request) Has been cancelled
MyAdvancesPage была смонтирована только в воркспейсе expenses, который ни к одному столу не привязан (меню столов приходит с бэкенда; setRoutes вешает пункт лишь если воркспейс есть в столе). Страница открывалась только по прямому URL — пользователь её не видел ни разу. Авансы пайщика-получателя и так видны на его личной странице «Платежи» (/:coopname/user/payments, ListOfPaymentsWidget + ReportExpenseAdvancePanel) — отдельная страница дублировала и была мёртвой.

— desktop: удалён MyAdvancesPage.vue, его роут expenses-my-advances и экспорт из barrel; импорт из install.ts.
— controller: напоминатель об авансах при нескольких авансах вёл на /expenses/my/advances → перецелен на /:coopname/user/payments (личные «Платежи»); один аванс по-прежнему ведёт на сам расход.
— notifications: комментарий схемы payload обновлён.
— README/E2E: ссылки и таблица страниц обновлены.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 05:06:28 +00:00
coopops e6090d9200 [C28-34][@ant] feat: фоновый напоминатель об отчёте по авансу под отчёт — зачем: закрыть момент, когда пайщик получил аванс и не отчитался. @Interval-воркер в extensions/expenses сканирует зеркало расходов, находит ADVANCE-позиции в PAID без отчёта, шлёт пайщику-получателю недельный агрегированный дайджест (workflow ExpenseAdvanceReportReminder) со ссылкой на сам расход (/:coopname/expenses/:hash) или список «Мои авансы»; только получателю, кассиру/совету ничего, ORG пропускаются. Троттлинг раз в неделю — через идемпотентность Центра уведомлений (поле period=ISO-неделя в payload), без своей таблицы. Грейс до первого письма и интервал тика — env (EXPENSE_ADVANCE_REMINDER_*, дефолты 3 дня / 6 ч). Точка отсчёта — proposal.updated_at; deadline из формы пока не персистится в цепи — отмечено follow-up в README
Typecheck / desktop (pull_request) Failing after 8m33s
Typecheck / controller (pull_request) Failing after 8m2s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 05:52:04 +00:00
coopops 7830713d7c chore(release): publish
Build bootstrap container / build (push) Successful in 46s
Release / publish-packages (push) Failing after 8m19s
Release / release (push) Successful in 24m57s
Release / trigger-coopenomics-docs (push) Successful in 1s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-09 18:41:34 +00:00
coopops 1d56c8d9fd chore(release): publish
Build bootstrap container / build (push) Successful in 3m17s
Release / release (push) Successful in 25m58s
Release / publish-packages (push) Failing after 8m23s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-09 17:47:20 +00:00
coopops 3f8522507c chore(release): publish
Build bootstrap container / build (push) Successful in 3m12s
Release / release (push) Successful in 25m50s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-09 17:46:58 +00:00
coopops 5b8d252d6d chore(release): publish
Release / release (push) Successful in 25m49s
Build bootstrap container / build (push) Successful in 40s
Release / publish-packages (push) Failing after 8m19s
Release / trigger-coopenomics-docs (push) Successful in 1s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-09 16:55:44 +00:00
coopops 7bb4f18097 chore(release): publish
Build bootstrap container / build (push) Successful in 3m16s
Release / release (push) Failing after 16m17s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-09 16:55:28 +00:00
coopops 7ca3c21079 chore(release): publish
Build bootstrap container / build (push) Successful in 3m6s
Release / release (push) Successful in 26m46s
Release / publish-packages (push) Failing after 8m13s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-09 15:37:07 +00:00
coopops 045204754b chore(release): publish
Build bootstrap container / build (push) Has been cancelled
Release / release (push) Has been cancelled
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
2026-06-09 15:36:50 +00:00
coopops 5cf6c20ff2 chore(release): publish
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
Release / release (push) Has been cancelled
Build bootstrap container / build (push) Has been cancelled
2026-06-09 14:28:38 +00:00
coopops ef3fffecda chore(release): publish
Build bootstrap container / build (push) Successful in 3m9s
Release / release (push) Successful in 24m4s
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
Release / publish-packages (push) Has been cancelled
2026-06-09 14:28:02 +00:00
coopops fd9b14a98b chore(release): publish
Build bootstrap container / build (push) Successful in 3m26s
Release / release (push) Successful in 23m22s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-09 14:27:46 +00:00
coopops cb0d6365ba chore(release): publish
Release / release (push) Successful in 27m4s
Build bootstrap container / build (push) Successful in 39s
Release / publish-packages (push) Failing after 8m11s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 1s
2026-06-09 13:07:28 +00:00
coopops 3c3b6a76c4 chore(release): publish
Build bootstrap container / build (push) Successful in 3m9s
Release / release (push) Successful in 25m21s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-09 13:02:21 +00:00
Alex Ant 01fc0872ae chore(release): publish
Build bootstrap container / build (push) Has been cancelled
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
Release / release (push) Has been cancelled
2026-06-09 15:48:49 +05:00
Alex Ant addb527f3c chore(release): publish
Build bootstrap container / build (push) Successful in 3m16s
Release / release (push) Successful in 26m2s
Release / publish-packages (push) Failing after 8m18s
Release / trigger-coopenomics-docs (push) Successful in 3s
Release / trigger-mono-docs (push) Successful in 1s
2026-06-09 14:10:52 +05:00
Alex Ant 9e271a6ce9 chore(release): publish
Build bootstrap container / build (push) Has been cancelled
Release / release (push) Has been cancelled
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
2026-06-09 14:10:33 +05:00
coopops 1d235e5caf chore(release): publish
Build bootstrap container / build (push) Successful in 3m5s
Release / release (push) Successful in 24m54s
Release / publish-packages (push) Failing after 8m23s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-09 07:18:39 +00:00
coopops 98b9c03977 chore(release): publish
Build bootstrap container / build (push) Successful in 3m5s
Release / release (push) Successful in 26m40s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-09 07:09:56 +00:00
coopops 70bd1323c7 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
2026-06-08 07:03:58 +00:00
coopops 765af3cbef 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
2026-06-08 07:03:41 +00:00
coopops 75548036f4 chore(release): publish
Release / release (push) Successful in 24m41s
Build bootstrap container / build (push) Successful in 38s
Release / publish-packages (push) Failing after 8m22s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 1s
2026-06-08 06:27:19 +00:00
coopops ec0427c778 chore(release): publish
Build bootstrap container / build (push) Successful in 3m8s
Release / release (push) Failing after 14m44s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-08 06:27:02 +00:00
coopops c28bb81c25 [C28-27][@ant] fix: in-app уведомления — перенос строки вместо литерального <br>
In-app тело инбокса рендерится как текст ({{ n.description }}, без v-html —
payload несёт ФИО/заголовки, v-html = XSS-вектор), поэтому HTML-тег <br> из
шаблона показывался строкой «№C53E<br>От: …». Перевёл 2 in-app шаблона
(new-agenda-item, approval-request) с <br> на \n и добавил white-space:
pre-line на .notification-center__item-desc (line-clamp:2 сохранён).

Push не трогаю — его тела уже plain-text без тегов, отображается верно.
Email оставлен на HTML (<br>/<strong>) — рендерится почтовым клиентом.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 05:28:04 +00:00
coopops 54e27df7f8 chore(release): publish
Build bootstrap container / build (push) Successful in 3m27s
Release / release (push) Successful in 26m49s
Release / publish-packages (push) Failing after 28m24s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 1s
2026-06-08 05:13:30 +00:00
coopops b7da867198 chore(release): publish
Build bootstrap container / build (push) Successful in 3m19s
Release / publish-packages (push) Has been cancelled
Release / trigger-coopenomics-docs (push) Has been cancelled
Release / trigger-mono-docs (push) Has been cancelled
Release / release (push) Has been cancelled
2026-06-08 05:13:14 +00:00
coopops a4e5abe4fa chore(release): publish
Build bootstrap container / build (push) Successful in 3m36s
Release / release (push) Successful in 25m54s
Release / publish-packages (push) Failing after 8m23s
Release / trigger-coopenomics-docs (push) Successful in 2s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-07 15:29:25 +00:00
coopops ef393e9724 chore(release): publish
Build bootstrap container / build (push) Successful in 3m34s
Release / release (push) Successful in 25m2s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-07 15:28:58 +00:00
coopops f2e3165b54 Merge branch 'testnet' of ssh://git.coopenomics.world:222/C9S/mono into testnet
# Conflicts:
#	components/notifications/package.json
2026-06-07 15:27:59 +00:00
coopops b653a3cbd5 Merge remote-tracking branch 'origin/dev' into feat/notification-center-dc-v3
Typecheck / controller (pull_request) Has been cancelled
Typecheck / desktop (pull_request) Has been cancelled
# Conflicts:
#	components/notifications/package.json
2026-06-07 12:24:50 +00:00
Alex Ant aa9b677d9c chore(release): publish
Build bootstrap container / build (push) Successful in 3m25s
Release / release (push) Successful in 26m36s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
2026-06-07 17:09:57 +05:00
coopops 9e64238682 fix(gateway,notifications): возврат взноса слал письмо «платёж принят»
Typecheck / desktop (pull_request) Successful in 13m24s
Typecheck / controller (pull_request) Successful in 13m15s
notifyPaymentStatus выбирал workflow только по статусу (PAID → PaymentPaid
«Платёж принят»), игнорируя direction. Исходящий PAID — это возврат взноса
пайщику, и он получал письмо как на приём. Баг общий для всех возвратов
(регистрационный + паевой — оба идут через gateway.setPaymentStatus).

- Новый workflow notifications/payment-refunded «Возврат взноса выполнен»
  (зеркало payment-paid, тот же payload).
- payment-notification.service: OUTGOING+PAID → PaymentRefunded, INCOMING+PAID →
  PaymentPaid, остальное → PaymentCancelled.

Workflow засинкан в Novu (pnpm sync, 24 workflow, 0 ошибок).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 06:38:51 +00:00
Alex Ant 8272fe6951 chore(release): publish
Release / release (push) Successful in 25m0s
Build bootstrap container / build (push) Successful in 39s
Release / publish-packages (push) Failing after 8m42s
Release / trigger-coopenomics-docs (push) Successful in 1s
Release / trigger-mono-docs (push) Successful in 2s
2026-06-05 11:42:28 +05:00
Alex Ant 4cf2ab3c64 chore(release): publish
Release / release (push) Successful in 53m16s
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
Release / trigger-mono-docs (push) Has been skipped
Build bootstrap container / build (push) Successful in 1m20s
2026-06-05 01:13:18 +05:00
coopops 4bb9a317ca [C28-26][@ant] refactor: полное удаление Novu из контроллера
Typecheck / desktop (pull_request) Successful in 13m42s
Typecheck / controller (pull_request) Successful in 13m4s
Контроллер больше не зависит от внешнего Novu (ADR-001, DEC-025):
- Удалены infrastructure/novu/* (адаптеры + модуль), порты NovuWorkflow/
  NovuCredentials + старый notification.port (NotificationPort→NovuAdapter),
  NotificationDomainService, DeviceTokenService, webhook-приёмник Novu, novu.utils.
- subscriber_hash переведён на HMAC по SERVER_SECRET (utils/subscriber-hash.util),
  identity своя; subscriber_id (адресация Центра) сохранён — backfill cron оставлен
  без Novu-синхронизации.
- Развязаны AccountDomainService/account+participant-interactor/subscription-service
  от Novu-вызовов; NovuModule/NotificationDomainModule убраны из 7+5 модулей.
- config.novu + NOVU_* env + @novu/api удалены; lockfile обновлён (desktop @novu/js
  снимется синхронно с эпиком 6).
- @coopenomics/notifications: удалён sync/ (внешняя синхронизация), bin/scripts/deps;
  остался каталог типов + шаблоны; пакет пересобран.
- grep -i novu по controller/src пуст; tsc = baseline (0 новых ошибок).

Boot/grep-ERROR верификация — за оператором (поднять контроллер нельзя из фоновой сессии).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:40:15 +00:00