Files
mono/scripts/changelog-prompt.md

161 lines
23 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Сгенерируй changelog для версии v2025.12.28.
Правила:
- Начинай changelog заголовком: "# v2025.12.28"
- Затем добавь краткое текстовое описание релиза (1–3 строки), основанное на комментарии разработчика. Не копируй комментарий дословно. Используй его только как ориентир для формулировки описания.
- Не добавляй ничего от себя, не используй мотивационные или маркетинговые фразы.
- После описания сгруппируй изменения по категориям:
✨ Новые функции
🐛 Исправления ошибок
🔧 Улучшения
- Каждый пункт списка должен быть в формате:
- [#Номер](https://github.com/coopenomics/mono/issues/Номер): Краткое описание
- Пиши кратко, строго и по делу.
- В конце поставь тег: #releases
Комментарий разработчика для описания релиза:
Релиз содержит прототип трекера результатов интеллектуальной деятельности, прототип моста в 1С, обновленный интерфейс и значительно повышенную стабильность.
Ниже список закрытых issues, начиная с 2025-07-2T10:00:00+03:00:
#332: Прототип конструктора требований дополнительных документов при регистрации
---
#331: Настроить система мониторинга сбоев и программных ошибок
На основе GlitchTIP, Loki, Prometheus
---
#330: Собрать прототип моста в 1С:Бухгалтерию: отдавать документы и совершать проводки по бухсчетам
---
#329: Найти, завести и протестировать подходящую образовательную платформу
LMS TUTOR на Wordpress вполне подходит.
---
#328: Повесить прототипы мульти-лендингов на цифровой-кооператив.рф и coopenomics.world
---
#327: Собрать пользовательскую документацию цифрового кооператива по интерфейсам
https://docs.цифровой-кооператив.рф
---
#326: Разработать минимальный интерфейс трекера результатов интеллектуальной деятельности по программе "Благорост"
---
#325: Задокументировать смарт-контракт программы "Благорост"
<https://coopenomics.world/contracts/group__public__capital.html>
---
#324: Разработать смарт-контракт программы генерации и капитализации результатов интеллектуальной деятельности ("Благорост")
---
#322: Поставка обновлений программного обеспечения с нулевым даунтаймом по стратегии blue-green
---
#321: Встроить систему проводок по фондам и её использование по контрактам
Добавить внутреннее действие по аналогии с newsubmitted. В параметрах должен быть тип фонда и его идентификатор, а также, сумма и параметр хэша для связи с внешней системой учёта. Вызывать из действий смарт-контрактов в процессе их бизнес-логики. И тем самым, формировать реестр, который затем отобразим.
---
#319: Установить палитру команд и быстрого доступа к страницам рабочих столов (cmk+k)
---
#318: Настроить LOKI & GRAPHANA для выгрузки логов из контейнеров
``` 1. Подготовка Loki Loki можно запустить как отдельный контейнер через Docker Compose. Для начала создадим конфигурацию. Файл loki-config.yaml yaml Копировать код auth_enabled: false server: http_listen_port: 3100 ingester: lifecycler: ring: kvstore: store: inmemory replication_factor: 1 chunk_idle_period: 5m chunk_retain_period: 30s max_transfer_retries: 0 schema_config: configs: - from: 2020-10-24 store: boltdb object_store: filesystem schema: v11 index: prefix: index_ period: 24h storage_config: boltdb: directory: /loki/index filesystem: directory: /loki/chunks limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h chunk_store_config: max_look_back_period: 0 table_manager: retention_deletes_enabled: false retention_period: 0 Файл docker-compose.override.yml Добавьте Loki в существующий docker-compose.yml: yaml Копировать код services: loki: image: grafana/loki:2.9.1 container_name: loki ports: - "3100:3100" volumes: - ./loki-config.yaml:/etc/loki/local-config.yaml - ./loki-data:/loki command: -config.file=/etc/loki/local-config.yaml promtail: image: grafana/promtail:2.9.1 container_name: promtail volumes: - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/log:/var/log:ro - ./promtail-config.yaml:/etc/promtail/config.yml 2. Подготовка Promtail Promtail будет собирать логи с контейнеров и отправлять их в Loki. Файл promtail-config.yaml yaml Копировать код server: http_listen_port: 9080 grpc_listen_port: 0 clients: - url: http://loki:3100/loki/api/v1/push positions: filename: /run/promtail/positions.yaml scrape_configs: - job_name: docker static_configs: - targets: - localhost labels: job: docker __path__: /var/lib/docker/containers/*/*.log 3. Настройка контейнеров для логирования Добавьте драйвер json-file или оставьте стандартный (он уже поддерживается Promtail): yaml Копировать код logging: driver: "json-file" options: max-size: "10m" max-file: "3" 4. Интеграция Loki с Grafana Откройте Grafana → Configuration → Data Sources. Добавьте новый источник данных: Type: Loki. URL: http://loki:3100. Сохраните настройки. 5. Просмотр логов в Grafana Перейдите в Explore → выберите источник данных Loki. Используйте запросы для фильтрации, например: arduino Копировать код {job="docker"} Для детальной информации можно настроить дашборд в Grafana с фильтрацией по контейнерам. 6. Тестирование Перезапустите Docker Compose: bash Копировать код docker-compose up -d Убедитесь, что Promtail и Loki собирают логи. Проверьте контейнеры loki и promtail через: bash Копировать код docker logs loki docker logs promtail ```
---
#316: Завершить переход рабочего стола на GraphQL SDK
---
#314: Развернуть GlitchTip как альтернативу Sentry
<https://glitchtip.com/documentation/install>
---
#312: Баг: статус коммитов не изменяется при их приёме - подписка не работает
---
#309: Баг: трекер показывает в таблице чужие билеты времени
---
#308: Магазин приложений должен отображать рабочие столы, которые будут установлены. Ввести подключение нескольких рабочих столов одним приложением.
---
#307: Настройки контракта соединить с нативными настройками приложения и допустить процесс импорта после конфигурации
---
#306: Собрать модуль запросов и мутаций контракта капитализации
На основе собранного теста capital.test произвести формирование полного набора всех запросов и мутаций, которые использовались там. Сформировать GraphQL-DTO входящих и исходящих данных. 
---
#305: Project: убрать title & description из проекта в одно поле data, где будет дополнительно и приглашение (invite)
---
#304: Собрать доменную модель контракта капитализации на бэкенде
Модель синхронизируется по событиям изменения таблиц в блокчейне, поддерживая актуальное состояние и реагируя на микрофорки - откатом.  COOPSTARTER * [x] Проекты - Компоненты (projects) * [x] Этапы - (milestones) * [x] Вкладчики (contributors) * [x] Инвестиции (invests) * [x] Сегменты (segments) * [x] Кошельки (wallets) * [x] кошелек программных членских взносов * [x] кошелек проектных членских взносов * [x] кошелек проекта COOPTRACKER * [x] Расходы (expenses) * [x] Комиты (commits) * [x] Голоса (votes) …
---
#303: Пересмотреть архитектуру парсера и формирования локальной истории
Сейчас я начинаю заводить подписками данные в репозитории. При таком подходе, в случае “отрезания” головы у цепочки кооперативы не откатятся автоматически, а новыми операциями просто перезапишут глобальную последовательность.  Вероятно, парсер нужно занести в локальный сервис, чтобы извлекать из него все что нужно по индексам как это работает сейчас на монге. Тогда вместо отдельных репозиториев будет один большой репозиторий и адаптеры на извлечение. При перезапуске парсинга старые действия отлетят и голова отбросится. Сейчас тоже так, но при использовании устаревшего ws.controller и пересохраняя в локальные репозитории мы теряем такую возможность. 
---
#302: Рефакторинг архитектуры
Организуем двухконтурную шину данных между парсером действий/дельт блокчейна, которая публикует их в редис-стрим, из которого подписчики (кооперативы) извлекают последовательно данные и публикуют события на внутренней шине событий (MONO). Обработка событий производится путем подписки на внутренней шине в каждом отдельном интеракторе в любом месте приложения.  Вводим обработку событий микрофорка, при которой в случае наступления внутренняя шине получит оповещение, которое должно обработать путем удаления/отката таблиц и действий из базы данных для блоков, полученных после события форка. 
---
#301: Контракт "Капитализация РИД" v0.2
* [x] регистрация вкладчика с договором УХД register_contributor [regcontrib → approvereg] * [x] открыть кошелёк * [x] создание проекта с параметрами шаблона приложения к договору УХД create_project * [x] регистрация вкладчика проекта по приложению к договору УХД join_project [signappendx → apprvappndx] * [x] добавить мастера на проект * [x] расчет накопительного среднего фактического стоимости часа * [x] добавить автора в проект * [x] обновить план проекта * [x] открыть проект * [x] принять инвестиции * [x] зафиксироваться по координаторам * [x] стартовать проект * [x] добавить коммит создателя в проект * [x] распределить вклады на соавторов * [x] перевести на CRPS? * [x] учесть вклады координаторов * [x] перевести на CRPS? * [x] пересчитать provisional_amount по CRPS от факта суммы инвестиций * [x] выдать ссуды * [x] принять результаты и погасить ссуду * [x] сконвертировать в кошелек и капитализацию * [x] учесть факт наличия инвестиционных средств при конвертации в кошелек * [x] учесть фактическую сумму расходов и ее влияние * [x] ввести механизм списания расходов * [x] принять членский взнос в проект * [x] распределить членские взносы проекта * [x] возврат членского взноса проекта * [x] корректно закрыть проект * [x] принять системный членский взнос * [x] распределить системные членские взносы * [x] возврат системного членского взноса из программы * [x] перераспределение остаточный средств между проектами * [x] перераспределение средств из программы в проект ## рефакторинг * [x] разделить плановые и фактические пулы на разные структуры * [x] выделить crps в отдельную структуру * [x] вынести счетчики в отдельную структуру * [x] рефакторинг структуры проекта * [x] рефакторинг структуры сегмента * [x] привести shares к одному формату * [x] ввести мета-проекты и конвертацию между договорами УХД * [x] выделить долю в проекте в отдельный проектный кошелек? * [x] тогда нужно делать конвертацию в проект, а не оставлять средства в сегменте для получения доли в членских взносах проекта * [x] вынести memo отдельно * [x] все действия на коллбэках вынести в отдельный неймспейс * [x] createagenda_interface и createapprove_interface заменить на нормальные функции * [x] инициализация контракта для кооператива * [x] рефакторинг contributor * [x] рефакторинг global_state * [x] рефакторинг appendix * [x] рефакторинг коммита * [x] рефакторинг conversion * [x] converts * [x] debt (approved_statement убрать позже при отладке) * [x] expenses (fund_id поправить на счёт) * [x] used_expense_pool в generation_amounts * [x] invests * [x] membership_crps * [x] memo (по ходу отладки все текста подправить) * [x] plan_pool * [x] program_invests * [x] program_withdraw (approved_return_statement) * [x] project_withdraw * [x] projects (уточнить статусы при отладке) * [x] result (уточнить при отладке) * [x] segments * [x] votes * [x] wallets * [x] выдать и погасить долг на внешнем контракте loan * [x] проводки по счетам * [x] проводки по кошелькам ## Отладка * [x] Инициализация * [x] Вынести константы в конфиг кооператива * [x] Описать параметры и их воздействие * [x] program_invest_pool в плане вроде не нужно вообще * [x] вынести расчет expense_gap в единую функцию Коммиты * [x] принять коммиты и пересчитать создательские/авторские Инвестиции * [x] принять инвестиции и пересчитать суммы к ссудам Координаторы * [x] привести investor2 через координатора tester3 * [x] принять инвестицию от investor2 и проверить баланс координатора tester4 * [x] принять инвестицию от investor3 и проверить баланс координатора tester5 Ссуды * [x] взять ссуду первым тестером * [x] взять ссуду координатором Взносы имуществом * [x] взнос имуществом в результат * [x] взнос имуществом в программу Голосование * [x] начать голосование * [x] коммиты больше не разрешены * [x] инвестиции допустимы * [x] валидация кода * [x] провести голосование * [x] tester1-5 голосуют * [x] что будет без голосов * [x] требуется хотя бы 1 голос для закрытия голосования * [x] принять результат от тестера1,2,3, и инвестора1,2 Результат * [x] завершить голосование * [x] инвестиции / коммиты / аллокации запрещены * [x] вернуть ссуды (и учесть через отдельный контракт) * [x] произвести конвертации * [x] в проект * [x] в программу * [x] в кошелек * [x] проверка передачи shares на родительский проект Капитализация вкладчиков * [x] тест на корректное изменение капитализации Членские взносы * [x] проверка накопления и распределения членских взносов проекта * [x] проверка накопления и распределения членских взносов программы * [x] проверка инвестиций в программу и аллокаций/диаллокаций средств Расходы * [x] проверка расширения плана расходов * [x] проверка списания расходов * [x] проверка движений по счетам / кошелькам Удаление * [x] проверка закрытия / удаления проекта из памяти * [x] возврат неиспользуемой суммы инвестора Импорт данных * [x] importcontr * [x] создает объект вкладчика с подписанным договором УХД по указанной внешней дате * [x] создаёт кошелек в программе капитализации с устаревшей версией (для того, чтобы форма приёма была доступна) * [x] принимает сумму взносов * [x] пополняет кошелек программы капитализации Рефакторинг наименований и таблиц * [x] переименовать действия * [x] удалить неиспользуемые поля * [x] Документирование ##
---
#300: test
---
#222: Внедрить метод Водянова на распределении пула премий по программе "Благорост"
---
#212: Убрать избыточные нулики из шаблона заявления на вступление в кооператив
Изначально при запуске блокчейна была допущена ошибка: система поддерживает точность валютных значений до десятитысячного знака, что избыточно. Это приводит к тому, что во всех генерируемых документах указываются четыре знака после десятичной точки, что создаёт дискомфорт и усложняет обработку данных. Предлагается заменить точность валют, связанных с кооперативами и государственным учётом, уменьшив её с четырёх знаков до двух, поскольку в таких системах стандартной практикой является использование только двух десятичных знаков (например, до 100 копеек). При этом точность цифровых валют, таких как утилити-токен Axon, остаётся неизменной и составляет четыре знака. Выполнение этого изменения сейчас, несмотря на возможные трудности, предотвратит ухудшение ситуации в будущем.
---