fix(contracts): migrate voskhod programs.program_type back to 'capital'
Автоматическая CI/CD-миграция (soviet::migrate) раньше переименовывала programs.program_type[id=4] voskhod в 'blagorost', но coagreements.type для той же программы никогда не переименовывался и остаётся 'capital' — отсюда расхождение двух таблиц на одном и том же боевом кооперативе, которое видно любым прямым запросом к цепочке и вносит путаницу. 'capital' — каноничное значение по всей цепочке решений в этой сессии: это то, что реально в coagreements.type, то, на что рассчитывает _capital_program в lib/consts.hpp, и то, что теперь везде в controller/boot. Новый блок в migrate() приводит programs.program_type к нему же — идемпотентно, сработает автоматически на следующем деплое soviet, без ручных действий на проде. soviet и capital пересобраны локально — компилируются чисто. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,24 @@
|
|||||||
void soviet::migrate() {
|
void soviet::migrate() {
|
||||||
require_auth(_soviet); // Проверяем авторизацию
|
require_auth(_soviet); // Проверяем авторизацию
|
||||||
|
|
||||||
|
// Откат program_type для кооператива voskhod, программа id=4: blagorost -> capital.
|
||||||
|
// Предыдущая версия этой миграции переименовывала programs.program_type в
|
||||||
|
// 'blagorost', но coagreements.type для той же программы (program_id=4) всегда
|
||||||
|
// оставался 'capital' и никогда не переименовывался — таблицы разъехались.
|
||||||
|
// 'capital' — каноничное значение (используется coagreements.type, contract-
|
||||||
|
// константой _capital_program и всем controller-кодом); эта миграция приводит
|
||||||
|
// programs.program_type к нему же. Идемпотентно.
|
||||||
|
{
|
||||||
|
eosio::name coopname = "voskhod"_n;
|
||||||
|
programs_index programs(_soviet, coopname.value);
|
||||||
|
auto program_it = programs.find(4);
|
||||||
|
if (program_it != programs.end() && program_it->program_type != "capital"_n) {
|
||||||
|
programs.modify(program_it, _soviet, [&](auto &pr) {
|
||||||
|
pr.program_type = "capital"_n;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ────────────────────────────────────────────────────────────────────────
|
// ────────────────────────────────────────────────────────────────────────
|
||||||
// Разовая очистка ФАНТОМНЫХ участников кооператива fgrtejiwnynn (инцидент
|
// Разовая очистка ФАНТОМНЫХ участников кооператива fgrtejiwnynn (инцидент
|
||||||
// 2026-06-04). Удаляем строки soviet::participants для 6 дублей-аккаунтов,
|
// 2026-06-04). Удаляем строки soviet::participants для 6 дублей-аккаунтов,
|
||||||
|
|||||||
Reference in New Issue
Block a user