Перейти к содержанию

Члены совета

Страница управления составом совета кооператива позволяет председателю просматривать и редактировать список членов совета.

члены совета

ВАЖНО!

Состав членов совета должен быть утвержден общим собранием пайщиков.

Для добавления члена совета необходимо указать ФИО пайщика и выбрать его из списка:

члены совета

На заметку

В дальнейшем мы планируем ввести специализированный вопрос на повестке общего собрания пайщиков, который будет автоматически изменять состав членов совета. Однако, ручное управление составом мы, вероятно, сохраним, на случай, если решение об изменении принято за пределами цифровой системы.

Разработчикам

Канонические имена полей и типов — в файле components/controller/schema.gql монорепозитория; интерактивно — в документации GraphQL-API.

Системная информация (в т.ч. состав совета)

🛠️ SDK: Queries.System.GetSystemInfo | Query.getSystemInfo

Получить сводную публичную информацию о системе

import { Queries } from '@coopenomics/sdk';

const variables: Queries.System.GetSystemInfo.IInput = {
};

const { [Queries.System.GetSystemInfo.name]: result } = await client.Query(
  Queries.System.GetSystemInfo.query,
  { variables }
);

Результат:

interface IOutput {
  getSystemInfo: {
    blockchain_account: {
      account_name: <string>; // Имя аккаунта
      core_liquid_balance?: <null | string>; // Баланс
      cpu_limit: {
        available: <string>; // Доступные ресурсы
        current_used?: <null | string>; // Текущее использование ресурсов
        last_usage_update_time?: <null | string>; // Время последнего обновления использования ресурсов
        max: <string>; // Максимальное количество ресурсов
        used: <string>; // Использовано ресурсов
      };
      cpu_weight: <string>; // Вес CPU
      created: <string>; // Дата создания
      head_block_num: <number>; // Номер последнего блока
      head_block_time: <string>; // Время последнего блока
      last_code_update: <string>; // Время последнего обновления кода
      net_limit: {
        available: <string>; // Доступные ресурсы
        current_used?: <null | string>; // Текущее использование ресурсов
        last_usage_update_time?: <null | string>; // Время последнего обновления использования ресурсов
        max: <string>; // Максимальное количество ресурсов
        used: <string>; // Использовано ресурсов
      };
      net_weight: <string>; // Вес сети
      permissions: <{
          parent: <string>; // Родительское разрешение
          perm_name: <string>; // Имя разрешения
          required_auth: {
            accounts: <{
                permission: {
                  actor: <string>; // Актор
                  permission: <string>; // Разрешение
                };
                weight: <number>; // Вес
              }[]>; // Уровни разрешений
            keys: <{
                key: <string>; // Ключ
                weight: <number>; // Вес
              }[]>; // Ключи
            threshold: <number>; // Порог
            waits: <{
                wait_sec: <number>; // Время ожидания в секундах
                weight: <number>; // Вес
              }[]>; // Вес ожидания
          };
        }[]>; // Разрешения
      privileged: <boolean>; // Флаг привилегий
      ram_quota: <number>; // Квота RAM
      ram_usage: <number>; // Использование RAM
      refund_request?: {
        cpu_amount: <string>; // Сумма CPU
        net_amount: <string>; // Сумма сети
        owner: <string>; // Владелец
        request_time: <string>; // Время запроса
      };
      rex_info?: <null | string>; // Информация о REX
      self_delegated_bandwidth?: {
        cpu_weight: <string>; // Вес CPU
        from: <string>; // Отправитель
        net_weight: <string>; // Вес сети
        to: <string>; // Получатель
      };
      total_resources?: {
        cpu_weight: <string>; // Вес CPU
        net_weight: <string>; // Вес сети
        owner: <string>; // Владелец
        ram_bytes: <number>; // Используемая RAM
      };
      voter_info?: <null | string>; // Информация о голосовании
    };
    blockchain_info: {
      block_cpu_limit: <number>; // Лимит CPU для блока
      block_net_limit: <number>; // Лимит сети для блока
      chain_id: <string>; // Идентификатор цепочки (chain ID)
      fork_db_head_block_id?: <null | string>; // Идентификатор головного блока в форк базе данных
      fork_db_head_block_num?: <null | number>; // Номер головного блока в форк базе данных
      head_block_id: <string>; // Идентификатор головного блока
      head_block_num: <number>; // Номер головного блока
      head_block_producer: <string>; // Прозводитель головного блока
      head_block_time: <string>; // Время головного блока
      last_irreversible_block_id: <string>; // Идентификатор последнего необратимого блока
      last_irreversible_block_num: <number>; // Номер последнего необратимого блока
      last_irreversible_block_time?: <null | string>; // Время последнего необратимого блока
      server_version: <string>; // Версия сервера
      server_version_string?: <null | string>; // Строковое представление версии сервера
      virtual_block_cpu_limit: <number>; // Виртуальный лимит CPU для блока
      virtual_block_net_limit: <number>; // Виртуальный лимит сети для блока
    };
    board_members?: <{
        first_name: <string>; // Имя
        is_chairman: <boolean>; // Флаг председателя совета
        last_name: <string>; // Фамилия
        middle_name?: <null | string>; // Отчество
        username: <string>; // Имя пользователя (username)
      }[]>; // Члены совета кооператива
    contacts?: {
      chairman: {
        first_name: <string>;
        last_name: <string>;
        middle_name: <string>;
      };
      details: {
        inn: <string>; // ИНН
        kpp: <string>; // КПП
        ogrn: <string>; // ОГРН
      };
      email: <string>;
      full_address: <string>;
      full_name: <string>;
      phone: <string>;
    };
    cooperator_account: {
      active_participants_count: <number>; // Количество активных участников
      announce: <string>; // Объявление кооператива
      coop_type: <string>; // Тип кооператива
      created_at: <string>; // Дата создания
      description: <string>; // Описание кооператива
      document: {
        doc_hash: <string>; // Хэш содержимого документа
        hash: <string>; // Общий хэш (doc_hash + meta_hash)
        meta: <string>; // Метаинформация документа (в формате JSON-строки)
        meta_hash: <string>; // Хэш мета-данных
        signatures: <{
            id: <number>;
            is_valid?: <null | boolean>;
            meta: <unknown>;
            public_key: <string>;
            signature: <string>;
            signed_at: <string>;
            signed_hash: <string>;
            signer: <string>;
            signer_certificate?: <({ username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | null | undefined; inn: string; } | { username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | ... 1 more ... | undefined; } | { ...; }) & {}>; // Сертификат подписанта (сокращенная информация)
          }[]>; // Вектор подписей
        version: <string>; // Версия стандарта документа
      };
      initial: <string>; // Начальный взнос
      is_branched: <boolean>; // Разветвленный ли кооператив
      is_cooperative: <boolean>; // Является ли это кооперативом
      is_enrolled: <boolean>; // Включен ли кооператив
      meta: <string>; // Метаинформация
      minimum: <string>; // Минимальный взнос
      org_initial: <string>; // Начальный взнос организации
      org_minimum: <string>; // Минимальный взнос организации
      org_registration: <string>; // Регистрационный взнос организации
      parent_username: <string>; // Родительское имя аккаунта кооператива
      referer: <string>; // Реферал кооператива
      registered_at: <string>; // Дата регистрации
      registration: <string>; // Регистрационный взнос
      registrator: <string>; // Регистратор кооператива
      status: <string>; // Статус кооператива
      storages: <string[]>; // Список хранилищ
      type: <string>; // Тип учетной записи
      username: <string>; // Имя аккаунта кооператива
      verifications: <{
          created_at: <string>; // Дата создания верификации
          is_verified: <boolean>; // Флаг верификации
          last_update: <string>; // Дата последнего обновления верификации
          notice: <string>; // Заметка верификации
          procedure: <string>; // Процедура верификации
          verificator: <string>; // Имя верификатора
        }[]>; // Дата регистрации
    };
    coopname: <string>; // Имя аккаунта кооператива
    features: {
      search: <boolean>; // Доступен ли полнотекстовый поиск по документам
    };
    is_providered: <boolean>; // Доступен ли функционал провайдера для подписок и запуска ПО
    is_unioned: <boolean>; // Требуется ли членство в союзе кооперативов для подключения к кооперативной экономике
    settings: {
      authorized_default_route: <string>; // Маршрут по умолчанию для авторизованных пользователей
      authorized_default_workspace: <string>; // Рабочий стол по умолчанию для авторизованных пользователей
      coopname: <string>; // Название кооператива
      created_at: <unknown>; // Дата создания
      non_authorized_default_route: <string>; // Маршрут по умолчанию для неавторизованных пользователей
      non_authorized_default_workspace: <string>; // Рабочий стол по умолчанию для неавторизованных пользователей
      provider_name: <string>; // Имя провайдера платежей по умолчанию
      updated_at: <unknown>; // Дата последнего обновления
    };
    symbols: {
      root_govern_precision: <number>; // Точность символа управления
      root_govern_symbol: <string>; // Символ управления блокчейном
      root_precision: <number>; // Точность корневого символа
      root_symbol: <string>; // Корневой символ блокчейна
    };
    system_status: <SystemStatus>; // Статус контроллера кооператива
    union_link: <string>; // Ссылка на анкету для получения членства в союзе кооперативов
    vars?: {
      confidential_email: <string>;
      confidential_link: <string>;
      contact_email: <string>;
      coopenomics_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      coopname: <string>;
      full_abbr: <string>;
      full_abbr_dative: <string>;
      full_abbr_genitive: <string>;
      name: <string>;
      participant_application?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      passport_request: <string>;
      privacy_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      short_abbr: <string>;
      signature_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      statute_link?: <null | string>;
      user_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      wallet_agreement?: {
        protocol_day_month_year: <string>;
        protocol_number: <string>;
      };
      website: <string>;
    };
  };
}

В ответе поле board_members (тип BoardMember) отражает текущий состав совета, отображаемый в интерфейсе.

Изменение состава совета (как в UI рабочего стола)

Транзакция в контракт soviet, действие updateboard; типы параметров — cooptypesSovietContract.Actions.Boards.UpdateBoard (см. также src/features/Cooperative/UpdateBoard на десктопе).

Часть шагов (голос по решению совета, исполнение ряда решений) выполняется подписью и отправкой транзакции в блокчейн через Client.Blockchain / класс Blockchain в пакете @coopenomics/sdk, а не отдельной мутацией GraphQL; см. 🛠️ Classes.Blockchain и 🛠️ Classes.Client.