before make git
This commit is contained in:
Vendored
+4
-1
@@ -67,5 +67,8 @@
|
|||||||
|
|
||||||
// Оптимизация для больших монорепозиториев
|
// Оптимизация для больших монорепозиториев
|
||||||
"typescript.disableAutomaticTypeAcquisition": true,
|
"typescript.disableAutomaticTypeAcquisition": true,
|
||||||
"typescript.surveys.enabled": false
|
"typescript.surveys.enabled": false,
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ void capital::addauthor(name coopname, checksum256 project_hash, name author) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что пользователь является участником проекта
|
// Проверяем, что пользователь является участником проекта
|
||||||
Capital::Contributors::get_active_contributor_with_appendix_or_fail(coopname, project_hash, author);
|
Capital::Contributors::get_active_contributor_with_appendix_or_fail(coopname, project_hash, author);
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ void capital::closeproject(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что проект открыт для инвестиций
|
// Проверяем, что проект открыт для инвестиций
|
||||||
eosio::check(project.is_opened == true, "Проект уже закрыт или не был открыт для инвестиций");
|
eosio::check(project.is_opened == true, "Проект уже закрыт или не был открыт для инвестиций");
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ void capital::cmpltvoting(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
eosio::check(project.status == Capital::Projects::Status::VOTING, "Проект должен быть в статусе 'voting'");
|
eosio::check(project.status == Capital::Projects::Status::VOTING, "Проект должен быть в статусе 'voting'");
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ void capital::delproject(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
eosio::check(project.status == Capital::Projects::Status::RESULT, "Проект должен быть в статусе 'result'");
|
eosio::check(project.status == Capital::Projects::Status::RESULT, "Проект должен быть в статусе 'result'");
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ void capital::finalizeproj(eosio::name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем что проект в статусе RESULT
|
// Проверяем что проект в статусе RESULT
|
||||||
eosio::check(project.status == Capital::Projects::Status::RESULT,
|
eosio::check(project.status == Capital::Projects::Status::RESULT,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ void capital::initprj(eosio::name coopname, checksum256 project_hash, document2
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект еще не инициализирован
|
// Проверяем что проект еще не инициализирован
|
||||||
eosio::check(!project->is_authorized, "Проект уже инициализирован");
|
// eosio::check(!project->is_authorized, "Проект уже инициализирован");
|
||||||
|
|
||||||
// Отправляем на рассмотрение совета
|
// Отправляем на рассмотрение совета
|
||||||
::Soviet::create_agenda(
|
::Soviet::create_agenda(
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ void capital::openproject(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что проект еще не открыт
|
// Проверяем, что проект еще не открыт
|
||||||
eosio::check(project.is_opened == false, "Проект уже открыт");
|
eosio::check(project.is_opened == false, "Проект уже открыт");
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ void capital::setplan(name coopname, name master, checksum256 project_hash, uint
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
eosio::check(project.master == master, "Мастер проекта не совпадает с мастером, который устанавливает план");
|
eosio::check(project.master == master, "Мастер проекта не совпадает с мастером, который устанавливает план");
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ void capital::startproject(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что проект в статусе "pending"
|
// Проверяем, что проект в статусе "pending"
|
||||||
eosio::check(project.status == Capital::Projects::Status::PENDING, "Проект должен быть в статусе 'pending'");
|
eosio::check(project.status == Capital::Projects::Status::PENDING, "Проект должен быть в статусе 'pending'");
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ void capital::startvoting(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что проект в статусе "active"
|
// Проверяем, что проект в статусе "active"
|
||||||
eosio::check(project.status == Capital::Projects::Status::ACTIVE, "Проект должен быть в статусе 'active'");
|
eosio::check(project.status == Capital::Projects::Status::ACTIVE, "Проект должен быть в статусе 'active'");
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ void capital::stopproject(name coopname, checksum256 project_hash) {
|
|||||||
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
auto project = Capital::Projects::get_project_or_fail(coopname, project_hash);
|
||||||
|
|
||||||
// Проверяем что проект авторизован советом
|
// Проверяем что проект авторизован советом
|
||||||
eosio::check(project.is_authorized, "Проект не авторизован советом");
|
//eosio::check(project.is_authorized, "Проект не авторизован советом");
|
||||||
|
|
||||||
// Проверяем, что проект в статусе "active"
|
// Проверяем, что проект в статусе "active"
|
||||||
eosio::check(project.status == Capital::Projects::Status::ACTIVE, "Проект должен быть в статусе 'active'");
|
eosio::check(project.status == Capital::Projects::Status::ACTIVE, "Проект должен быть в статусе 'active'");
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"browser": true,
|
"browser": true,
|
||||||
"es2021": true
|
"es2021": true
|
||||||
},
|
},
|
||||||
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
|
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
||||||
"plugins": ["@typescript-eslint", "prettier"],
|
"plugins": ["@typescript-eslint"],
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 2018,
|
"ecmaVersion": 2018,
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"singleQuote": true,
|
|
||||||
"printWidth": 125
|
|
||||||
}
|
|
||||||
@@ -92,6 +92,7 @@
|
|||||||
"@nestjs/throttler": "^6.3.0",
|
"@nestjs/throttler": "^6.3.0",
|
||||||
"@nestjs/typeorm": "^10.0.2",
|
"@nestjs/typeorm": "^10.0.2",
|
||||||
"@novu/api": "^1.4.0",
|
"@novu/api": "^1.4.0",
|
||||||
|
"@octokit/rest": "^22.0.1",
|
||||||
"@sentry/nestjs": "^10.32.1",
|
"@sentry/nestjs": "^10.32.1",
|
||||||
"@sentry/node": "^10.32.1",
|
"@sentry/node": "^10.32.1",
|
||||||
"@types/jest": "^29.5.12",
|
"@types/jest": "^29.5.12",
|
||||||
@@ -196,7 +197,7 @@
|
|||||||
"graphql-zeus": "^7.0.1",
|
"graphql-zeus": "^7.0.1",
|
||||||
"node-mocks-http": "^1.8.0",
|
"node-mocks-http": "^1.8.0",
|
||||||
"nodemon": "^2.0.0",
|
"nodemon": "^2.0.0",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.8.8",
|
||||||
"supertest": "^6.0.1",
|
"supertest": "^6.0.1",
|
||||||
"tsconfig-paths": "^4.2.0",
|
"tsconfig-paths": "^4.2.0",
|
||||||
"type-fest": "^4.41.0",
|
"type-fest": "^4.41.0",
|
||||||
|
|||||||
+34
-16
@@ -1,5 +1,5 @@
|
|||||||
import { InputType, Field, IntersectionType, OmitType } from '@nestjs/graphql';
|
import { InputType, Field, IntersectionType, OmitType } from '@nestjs/graphql';
|
||||||
import { IsString, IsNotEmpty } from 'class-validator';
|
import { IsString, IsNotEmpty, IsNumber, IsBoolean } from 'class-validator';
|
||||||
import { Cooperative } from 'cooptypes';
|
import { Cooperative } from 'cooptypes';
|
||||||
import { GenerateMetaDocumentInputDTO } from '~/application/document/dto/generate-meta-document-input.dto';
|
import { GenerateMetaDocumentInputDTO } from '~/application/document/dto/generate-meta-document-input.dto';
|
||||||
import { MetaDocumentInputDTO } from '~/application/document/dto/meta-document-input.dto';
|
import { MetaDocumentInputDTO } from '~/application/document/dto/meta-document-input.dto';
|
||||||
@@ -13,24 +13,10 @@ type action = Cooperative.Registry.AppendixGenerationAgreement.Action;
|
|||||||
|
|
||||||
@InputType(`BaseAppendixGenerationAgreementMetaDocumentInput`)
|
@InputType(`BaseAppendixGenerationAgreementMetaDocumentInput`)
|
||||||
class BaseAppendixGenerationAgreementMetaDocumentInputDTO implements ExcludeCommonProps<action> {
|
class BaseAppendixGenerationAgreementMetaDocumentInputDTO implements ExcludeCommonProps<action> {
|
||||||
@Field({ description: 'Имя кооператива' })
|
|
||||||
@IsString()
|
|
||||||
@IsNotEmpty()
|
|
||||||
coopname!: string;
|
|
||||||
|
|
||||||
@Field({ description: 'Имя пользователя' })
|
|
||||||
@IsString()
|
|
||||||
@IsNotEmpty()
|
|
||||||
username!: string;
|
|
||||||
|
|
||||||
@Field({ description: 'Хэш проекта' })
|
@Field({ description: 'Хэш проекта' })
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
project_hash!: string;
|
project_hash!: string;
|
||||||
|
|
||||||
@Field({ description: 'Язык документа', nullable: true, defaultValue: 'ru' })
|
|
||||||
@IsString()
|
|
||||||
lang?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@InputType(`AppendixGenerationAgreementGenerateDocumentInput`)
|
@InputType(`AppendixGenerationAgreementGenerateDocumentInput`)
|
||||||
@@ -45,7 +31,39 @@ export class AppendixGenerationAgreementGenerateDocumentInputDTO extends Interse
|
|||||||
export class AppendixGenerationAgreementSignedMetaDocumentInputDTO extends IntersectionType(
|
export class AppendixGenerationAgreementSignedMetaDocumentInputDTO extends IntersectionType(
|
||||||
BaseAppendixGenerationAgreementMetaDocumentInputDTO,
|
BaseAppendixGenerationAgreementMetaDocumentInputDTO,
|
||||||
MetaDocumentInputDTO
|
MetaDocumentInputDTO
|
||||||
) {}
|
) {
|
||||||
|
@Field({ description: 'Хэш приложения' })
|
||||||
|
@IsString()
|
||||||
|
appendix_hash!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'Хэш участника' })
|
||||||
|
@IsString()
|
||||||
|
contributor_hash!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'Дата создания участника' })
|
||||||
|
@IsString()
|
||||||
|
contributor_created_at!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'Название компонента' })
|
||||||
|
@IsString()
|
||||||
|
component_name!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'ID компонента' })
|
||||||
|
@IsString()
|
||||||
|
component_id!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'Название проекта' })
|
||||||
|
@IsString()
|
||||||
|
project_name!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'ID проекта' })
|
||||||
|
@IsString()
|
||||||
|
project_id!: string;
|
||||||
|
|
||||||
|
@Field({ description: 'Является ли компонентом' })
|
||||||
|
@IsBoolean()
|
||||||
|
is_component!: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
@InputType(`AppendixGenerationAgreementSignedDocumentInput`)
|
@InputType(`AppendixGenerationAgreementSignedDocumentInput`)
|
||||||
export class AppendixGenerationAgreementSignedDocumentInputDTO extends SignedDigitalDocumentInputDTO {
|
export class AppendixGenerationAgreementSignedDocumentInputDTO extends SignedDigitalDocumentInputDTO {
|
||||||
|
|||||||
+4
-4
@@ -1,7 +1,7 @@
|
|||||||
import { Field, InputType } from '@nestjs/graphql';
|
import { Field, InputType } from '@nestjs/graphql';
|
||||||
import { IsNotEmpty, IsString } from 'class-validator';
|
import { IsNotEmpty, IsString } from 'class-validator';
|
||||||
import { Type } from 'class-transformer';
|
import { Type } from 'class-transformer';
|
||||||
import { GenerationAgreementSignedDocumentInputDTO } from '~/application/document/documents-dto/generation-agreement-document.dto';
|
import { SignedDigitalDocumentInputDTO } from '~/application/document/dto/signed-digital-document-input.dto';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GraphQL DTO для подписания приложения CAPITAL контракта
|
* GraphQL DTO для подписания приложения CAPITAL контракта
|
||||||
@@ -24,9 +24,9 @@ export class MakeClearanceInputDTO {
|
|||||||
@IsString({ message: 'Хэш проекта должен быть строкой' })
|
@IsString({ message: 'Хэш проекта должен быть строкой' })
|
||||||
project_hash!: string;
|
project_hash!: string;
|
||||||
|
|
||||||
@Field(() => GenerationAgreementSignedDocumentInputDTO, { description: 'Подписанный документ' })
|
@Field(() => SignedDigitalDocumentInputDTO, { description: 'Подписанный документ' })
|
||||||
@Type(() => GenerationAgreementSignedDocumentInputDTO)
|
@Type(() => SignedDigitalDocumentInputDTO)
|
||||||
document!: GenerationAgreementSignedDocumentInputDTO;
|
document!: SignedDigitalDocumentInputDTO;
|
||||||
|
|
||||||
@Field(() => String, { description: 'Вклад участника (текстовое описание)', nullable: true })
|
@Field(() => String, { description: 'Вклад участника (текстовое описание)', nullable: true })
|
||||||
@IsString({ message: 'Вклад участника должен быть строкой' })
|
@IsString({ message: 'Вклад участника должен быть строкой' })
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ export class CapitalOnboardingService {
|
|||||||
private mapStepToVarsField(step: CapitalOnboardingStepEnum): string {
|
private mapStepToVarsField(step: CapitalOnboardingStepEnum): string {
|
||||||
switch (step) {
|
switch (step) {
|
||||||
case CapitalOnboardingStepEnum.generation_agreement_template:
|
case CapitalOnboardingStepEnum.generation_agreement_template:
|
||||||
return 'generation_agreement';
|
return 'generation_agreement_template';
|
||||||
case CapitalOnboardingStepEnum.blagorost_provision:
|
case CapitalOnboardingStepEnum.blagorost_provision:
|
||||||
return 'blagorost_provision';
|
return 'blagorost_provision';
|
||||||
case CapitalOnboardingStepEnum.blagorost_offer_template:
|
case CapitalOnboardingStepEnum.blagorost_offer_template:
|
||||||
|
|||||||
+3
-84
@@ -5,7 +5,6 @@ import type { ImportContributorInputDTO } from '../dto/participation_management/
|
|||||||
import type { RegisterContributorInputDTO } from '../dto/participation_management/register-contributor-input.dto';
|
import type { RegisterContributorInputDTO } from '../dto/participation_management/register-contributor-input.dto';
|
||||||
import type { EditContributorInputDTO } from '../dto/participation_management/edit-contributor-input.dto';
|
import type { EditContributorInputDTO } from '../dto/participation_management/edit-contributor-input.dto';
|
||||||
import type { MakeClearanceInputDTO } from '../dto/participation_management/make-clearance-input.dto';
|
import type { MakeClearanceInputDTO } from '../dto/participation_management/make-clearance-input.dto';
|
||||||
import type { MakeClearanceDomainInput } from '../../domain/actions/make-clearance-domain-input.interface';
|
|
||||||
import type { TransactResult } from '@wharfkit/session';
|
import type { TransactResult } from '@wharfkit/session';
|
||||||
import { ContributorOutputDTO } from '../dto/participation_management/contributor.dto';
|
import { ContributorOutputDTO } from '../dto/participation_management/contributor.dto';
|
||||||
import { ContributorFilterInputDTO } from '../dto/participation_management/contributor-filter.input';
|
import { ContributorFilterInputDTO } from '../dto/participation_management/contributor-filter.input';
|
||||||
@@ -20,9 +19,6 @@ import { ContributorSyncService } from '../syncers/contributor-sync.service';
|
|||||||
import { Cooperative } from 'cooptypes';
|
import { Cooperative } from 'cooptypes';
|
||||||
import { GenerationAgreementGenerateDocumentInputDTO } from '~/application/document/documents-dto/generation-agreement-document.dto';
|
import { GenerationAgreementGenerateDocumentInputDTO } from '~/application/document/documents-dto/generation-agreement-document.dto';
|
||||||
import { AppendixGenerationAgreementGenerateDocumentInputDTO } from '~/application/document/documents-dto/appendix-generation-agreement-document.dto';
|
import { AppendixGenerationAgreementGenerateDocumentInputDTO } from '~/application/document/documents-dto/appendix-generation-agreement-document.dto';
|
||||||
import { HttpApiError } from '~/utils/httpApiError';
|
|
||||||
import httpStatus from 'http-status';
|
|
||||||
import { randomBytes } from 'crypto';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Сервис уровня приложения для управления участием в CAPITAL
|
* Сервис уровня приложения для управления участием в CAPITAL
|
||||||
@@ -36,7 +32,7 @@ export class ParticipationManagementService {
|
|||||||
private readonly contributorMapperService: ContributorMapperService,
|
private readonly contributorMapperService: ContributorMapperService,
|
||||||
private readonly contributorSyncService: ContributorSyncService,
|
private readonly contributorSyncService: ContributorSyncService,
|
||||||
private readonly documentInteractor: DocumentInteractor
|
private readonly documentInteractor: DocumentInteractor
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Импорт участника в CAPITAL контракт
|
* Импорт участника в CAPITAL контракт
|
||||||
@@ -61,60 +57,7 @@ export class ParticipationManagementService {
|
|||||||
data: AppendixGenerationAgreementGenerateDocumentInputDTO,
|
data: AppendixGenerationAgreementGenerateDocumentInputDTO,
|
||||||
options?: GenerateDocumentOptionsInputDTO
|
options?: GenerateDocumentOptionsInputDTO
|
||||||
): Promise<GeneratedDocumentDTO> {
|
): Promise<GeneratedDocumentDTO> {
|
||||||
// 1. Получаем данные участника
|
return await this.participationManagementInteractor.generateAppendixGenerationAgreement(data, options);
|
||||||
const contributor = await this.participationManagementInteractor.getContributorByCriteria({
|
|
||||||
username: data.username,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!contributor) {
|
|
||||||
throw new HttpApiError(httpStatus.NOT_FOUND, `Участник ${data.username} не найден`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Получаем данные проекта
|
|
||||||
const project = await this.projectManagementInteractor.getProjectByHash(data.project_hash);
|
|
||||||
|
|
||||||
if (!project) {
|
|
||||||
throw new HttpApiError(httpStatus.NOT_FOUND, `Проект с хэшем ${data.project_hash} не найден`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Определяем, является ли проект компонентом
|
|
||||||
const isComponent = !!project.parent_hash;
|
|
||||||
|
|
||||||
// 4. Если компонент - получаем родительский проект
|
|
||||||
let parentProject: Awaited<ReturnType<typeof this.projectManagementInteractor.getProjectByHash>> = null;
|
|
||||||
if (isComponent && project.parent_hash) {
|
|
||||||
parentProject = await this.projectManagementInteractor.getProjectByHash(project.parent_hash);
|
|
||||||
if (!parentProject) {
|
|
||||||
throw new HttpApiError(httpStatus.NOT_FOUND, `Родительский проект с хэшем ${project.parent_hash} не найден`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 5. Генерируем уникальный хэш для приложения
|
|
||||||
const appendix_hash = `A${Date.now().toString(36).toUpperCase()}${randomBytes(3).toString('hex').toUpperCase()}`;
|
|
||||||
|
|
||||||
// 6. Формируем данные для генерации документа
|
|
||||||
const documentData = {
|
|
||||||
coopname: data.coopname,
|
|
||||||
username: data.username,
|
|
||||||
lang: data.lang || 'ru',
|
|
||||||
registry_id: Cooperative.Registry.AppendixGenerationAgreement.registry_id,
|
|
||||||
appendix_hash,
|
|
||||||
contributor_hash: contributor.contributor_hash,
|
|
||||||
contributor_created_at: contributor.created_at,
|
|
||||||
component_name: isComponent ? project.title || project.data || '' : '',
|
|
||||||
component_id: isComponent ? project.project_hash : '',
|
|
||||||
project_name: isComponent ? parentProject?.title || parentProject?.data || '' : project.title || project.data || '',
|
|
||||||
project_id: isComponent ? project.parent_hash || '' : project.project_hash,
|
|
||||||
is_component: isComponent,
|
|
||||||
};
|
|
||||||
|
|
||||||
// 7. Генерируем документ
|
|
||||||
const document = await this.documentInteractor.generateDocument({
|
|
||||||
data: documentData,
|
|
||||||
options: options || {},
|
|
||||||
});
|
|
||||||
|
|
||||||
return document as GeneratedDocumentDTO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,31 +65,7 @@ export class ParticipationManagementService {
|
|||||||
* Теперь принимает минимальный набор данных и подписанный документ
|
* Теперь принимает минимальный набор данных и подписанный документ
|
||||||
*/
|
*/
|
||||||
async makeClearance(data: MakeClearanceInputDTO): Promise<TransactResult> {
|
async makeClearance(data: MakeClearanceInputDTO): Promise<TransactResult> {
|
||||||
// Извлекаем документ из базы данных для верификации
|
return await this.participationManagementInteractor.makeClearance(data);
|
||||||
const document = await this.documentInteractor.getDocumentByHash(data.document.hash);
|
|
||||||
|
|
||||||
if (!document) {
|
|
||||||
throw new HttpApiError(httpStatus.BAD_REQUEST, `Документ с хэшем ${data.document.hash} не найден`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Извлекаем appendix_hash из метаданных документа
|
|
||||||
const appendix_hash = (document.meta as any).appendix_hash;
|
|
||||||
|
|
||||||
if (!appendix_hash) {
|
|
||||||
throw new HttpApiError(httpStatus.BAD_REQUEST, 'В документе отсутствует appendix_hash');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Формируем доменный input с полными данными
|
|
||||||
const domainInput: MakeClearanceDomainInput = {
|
|
||||||
coopname: data.coopname,
|
|
||||||
username: data.username,
|
|
||||||
project_hash: data.project_hash,
|
|
||||||
appendix_hash,
|
|
||||||
document: data.document,
|
|
||||||
contribution: data.contribution,
|
|
||||||
};
|
|
||||||
|
|
||||||
return await this.participationManagementInteractor.makeClearance(domainInput);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+220
-43
@@ -1,13 +1,23 @@
|
|||||||
import { Injectable, Inject } from '@nestjs/common';
|
import { Injectable, Inject } from '@nestjs/common';
|
||||||
import { CapitalBlockchainPort, CAPITAL_BLOCKCHAIN_PORT } from '../../domain/interfaces/capital-blockchain.port';
|
import { randomBytes } from 'crypto';
|
||||||
|
import {
|
||||||
|
CapitalBlockchainPort,
|
||||||
|
CAPITAL_BLOCKCHAIN_PORT,
|
||||||
|
} from '../../domain/interfaces/capital-blockchain.port';
|
||||||
import type { ImportContributorDomainInput } from '../../domain/actions/import-contributor-domain-input.interface';
|
import type { ImportContributorDomainInput } from '../../domain/actions/import-contributor-domain-input.interface';
|
||||||
import type { RegisterContributorDomainInput } from '../../domain/actions/register-contributor-domain-input.interface';
|
import type { RegisterContributorDomainInput } from '../../domain/actions/register-contributor-domain-input.interface';
|
||||||
import type { EditContributorDomainInput } from '../../domain/actions/edit-contributor-domain-input.interface';
|
import type { EditContributorDomainInput } from '../../domain/actions/edit-contributor-domain-input.interface';
|
||||||
import type { MakeClearanceDomainInput } from '../../domain/actions/make-clearance-domain-input.interface';
|
import type { MakeClearanceDomainInput } from '../../domain/actions/make-clearance-domain-input.interface';
|
||||||
import type { IAppendixDatabaseData } from '../../domain/interfaces/appendix-database.interface';
|
import type { IAppendixDatabaseData } from '../../domain/interfaces/appendix-database.interface';
|
||||||
import type { TransactResult } from '@wharfkit/session';
|
import type { TransactResult } from '@wharfkit/session';
|
||||||
import { CONTRIBUTOR_REPOSITORY, ContributorRepository } from '../../domain/repositories/contributor.repository';
|
import {
|
||||||
import { APPENDIX_REPOSITORY, AppendixRepository } from '../../domain/repositories/appendix.repository';
|
CONTRIBUTOR_REPOSITORY,
|
||||||
|
ContributorRepository,
|
||||||
|
} from '../../domain/repositories/contributor.repository';
|
||||||
|
import {
|
||||||
|
APPENDIX_REPOSITORY,
|
||||||
|
AppendixRepository,
|
||||||
|
} from '../../domain/repositories/appendix.repository';
|
||||||
import { ContributorDomainEntity } from '../../domain/entities/contributor.entity';
|
import { ContributorDomainEntity } from '../../domain/entities/contributor.entity';
|
||||||
import { AppendixDomainEntity } from '../../domain/entities/appendix.entity';
|
import { AppendixDomainEntity } from '../../domain/entities/appendix.entity';
|
||||||
import { ContributorStatus } from '../../domain/enums/contributor-status.enum';
|
import { ContributorStatus } from '../../domain/enums/contributor-status.enum';
|
||||||
@@ -17,12 +27,23 @@ import type {
|
|||||||
PaginationInputDomainInterface,
|
PaginationInputDomainInterface,
|
||||||
PaginationResultDomainInterface,
|
PaginationResultDomainInterface,
|
||||||
} from '~/domain/common/interfaces/pagination.interface';
|
} from '~/domain/common/interfaces/pagination.interface';
|
||||||
|
import type { AppendixGenerationAgreementGenerateDocumentInputDTO } from '~/application/document/documents-dto/appendix-generation-agreement-document.dto';
|
||||||
|
import type { GenerateDocumentOptionsInputDTO } from '~/application/document/dto/generate-document-options-input.dto';
|
||||||
|
import type { GeneratedDocumentDTO } from '~/application/document/dto/generated-document.dto';
|
||||||
import { DomainToBlockchainUtils } from '~/shared/utils/domain-to-blockchain.utils';
|
import { DomainToBlockchainUtils } from '~/shared/utils/domain-to-blockchain.utils';
|
||||||
import { AccountDataPort, ACCOUNT_DATA_PORT } from '~/domain/account/ports/account-data.port';
|
import {
|
||||||
|
AccountDataPort,
|
||||||
|
ACCOUNT_DATA_PORT,
|
||||||
|
} from '~/domain/account/ports/account-data.port';
|
||||||
import { config } from '~/config';
|
import { config } from '~/config';
|
||||||
import { HttpApiError } from '~/utils/httpApiError';
|
import { HttpApiError } from '~/utils/httpApiError';
|
||||||
import httpStatus from 'http-status';
|
import httpStatus from 'http-status';
|
||||||
import { DocumentInteractor } from '~/application/document/interactors/document.interactor';
|
import { DocumentInteractor } from '~/application/document/interactors/document.interactor';
|
||||||
|
import { Cooperative } from 'cooptypes';
|
||||||
|
import { EMPTY_HASH } from '~/shared/utils/constants';
|
||||||
|
import { ProjectManagementInteractor } from '../use-cases/project-management.interactor';
|
||||||
|
import { generateUniqueHash } from '~/utils/generate-hash.util';
|
||||||
|
import type { MakeClearanceInputDTO } from '../dto/participation_management/make-clearance-input.dto';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Интерактор домена для управления участием в CAPITAL контракте
|
* Интерактор домена для управления участием в CAPITAL контракте
|
||||||
@@ -39,9 +60,10 @@ export class ParticipationManagementInteractor {
|
|||||||
private readonly appendixRepository: AppendixRepository,
|
private readonly appendixRepository: AppendixRepository,
|
||||||
@Inject(ACCOUNT_DATA_PORT)
|
@Inject(ACCOUNT_DATA_PORT)
|
||||||
private readonly accountDataPort: AccountDataPort,
|
private readonly accountDataPort: AccountDataPort,
|
||||||
|
private readonly projectManagementInteractor: ProjectManagementInteractor,
|
||||||
private readonly domainToBlockchainUtils: DomainToBlockchainUtils,
|
private readonly domainToBlockchainUtils: DomainToBlockchainUtils,
|
||||||
private readonly documentInteractor: DocumentInteractor
|
private readonly documentInteractor: DocumentInteractor,
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Получение отображаемого имени из аккаунта через порт расширения
|
* Получение отображаемого имени из аккаунта через порт расширения
|
||||||
@@ -53,7 +75,9 @@ export class ParticipationManagementInteractor {
|
|||||||
/**
|
/**
|
||||||
* Импорт участника в CAPITAL контракт
|
* Импорт участника в CAPITAL контракт
|
||||||
*/
|
*/
|
||||||
async importContributor(data: ImportContributorDomainInput): Promise<TransactResult> {
|
async importContributor(
|
||||||
|
data: ImportContributorDomainInput
|
||||||
|
): Promise<TransactResult> {
|
||||||
// Получаем отображаемое имя из аккаунта
|
// Получаем отображаемое имя из аккаунта
|
||||||
const displayName = await this.getDisplayNameFromAccount(data.username);
|
const displayName = await this.getDisplayNameFromAccount(data.username);
|
||||||
|
|
||||||
@@ -81,12 +105,19 @@ export class ParticipationManagementInteractor {
|
|||||||
/**
|
/**
|
||||||
* Регистрация участника в CAPITAL контракте
|
* Регистрация участника в CAPITAL контракте
|
||||||
*/
|
*/
|
||||||
async registerContributor(data: RegisterContributorDomainInput): Promise<TransactResult> {
|
async registerContributor(
|
||||||
|
data: RegisterContributorDomainInput
|
||||||
|
): Promise<TransactResult> {
|
||||||
// Извлекаем документ из базы данных для верификации
|
// Извлекаем документ из базы данных для верификации
|
||||||
const document = await this.documentInteractor.getDocumentByHash(data.contract.doc_hash);
|
const document = await this.documentInteractor.getDocumentByHash(
|
||||||
|
data.contract.doc_hash
|
||||||
|
);
|
||||||
|
|
||||||
if (!document) {
|
if (!document) {
|
||||||
throw new HttpApiError(httpStatus.BAD_REQUEST, `Документ с хэшем ${data.contract.doc_hash} не найден`);
|
throw new HttpApiError(
|
||||||
|
httpStatus.BAD_REQUEST,
|
||||||
|
`Документ с хэшем ${data.contract.doc_hash} не найден`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, что username в документе совпадает с переданным
|
// Проверяем, что username в документе совпадает с переданным
|
||||||
@@ -125,17 +156,26 @@ export class ParticipationManagementInteractor {
|
|||||||
const blockchainAction = {
|
const blockchainAction = {
|
||||||
...data,
|
...data,
|
||||||
contributor_hash: data.contributor_hash,
|
contributor_hash: data.contributor_hash,
|
||||||
rate_per_hour: data.rate_per_hour ?? '0.0000 ' + config.blockchain.root_govern_symbol,
|
rate_per_hour:
|
||||||
|
data.rate_per_hour ?? '0.0000 ' + config.blockchain.root_govern_symbol,
|
||||||
hours_per_day: data.hours_per_day ?? 0,
|
hours_per_day: data.hours_per_day ?? 0,
|
||||||
is_external_contract: false,
|
is_external_contract: false,
|
||||||
contract: this.domainToBlockchainUtils.convertSignedDocumentToBlockchainFormat(data.contract),
|
contract:
|
||||||
|
this.domainToBlockchainUtils.convertSignedDocumentToBlockchainFormat(
|
||||||
|
data.contract
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Вызываем блокчейн порт для регистрации - получаем транзакцию
|
// Вызываем блокчейн порт для регистрации - получаем транзакцию
|
||||||
const result = await this.capitalBlockchainPort.registerContributor(blockchainAction);
|
const result = await this.capitalBlockchainPort.registerContributor(
|
||||||
|
blockchainAction
|
||||||
|
);
|
||||||
|
|
||||||
// Получаем данные участника из блокчейна после регистрации
|
// Получаем данные участника из блокчейна после регистрации
|
||||||
const blockchainData = await this.capitalBlockchainPort.getContributor(data.coopname, data.username);
|
const blockchainData = await this.capitalBlockchainPort.getContributor(
|
||||||
|
data.coopname,
|
||||||
|
data.username
|
||||||
|
);
|
||||||
|
|
||||||
if (!blockchainData) {
|
if (!blockchainData) {
|
||||||
throw new HttpApiError(
|
throw new HttpApiError(
|
||||||
@@ -145,7 +185,10 @@ export class ParticipationManagementInteractor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Создаем полный объект участника, объединяя данные базы и блокчейна
|
// Создаем полный объект участника, объединяя данные базы и блокчейна
|
||||||
const fullContributor = new ContributorDomainEntity(databaseData, blockchainData);
|
const fullContributor = new ContributorDomainEntity(
|
||||||
|
databaseData,
|
||||||
|
blockchainData
|
||||||
|
);
|
||||||
|
|
||||||
// Сохраняем полный объект в репозиторий
|
// Сохраняем полный объект в репозиторий
|
||||||
await this.contributorRepository.create(fullContributor);
|
await this.contributorRepository.create(fullContributor);
|
||||||
@@ -155,23 +198,43 @@ export class ParticipationManagementInteractor {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Подписание приложения в CAPITAL контракте
|
* Подписание приложения в CAPITAL контракте
|
||||||
|
* Теперь принимает минимальный набор данных и подписанный документ
|
||||||
*/
|
*/
|
||||||
async makeClearance(data: MakeClearanceDomainInput): Promise<TransactResult> {
|
async makeClearance(data: MakeClearanceInputDTO): Promise<TransactResult> {
|
||||||
// Проверяем, есть ли уже запрос на рассмотрении для данного пользователя и проекта
|
// Извлекаем документ из базы данных для верификации
|
||||||
const existingAppendix = await this.appendixRepository.findCreatedByUsernameAndProjectHash(
|
const document = await this.documentInteractor.getDocumentByHash(
|
||||||
data.username,
|
data.document.doc_hash
|
||||||
data.project_hash
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (existingAppendix) {
|
if (!document) {
|
||||||
throw new HttpApiError(httpStatus.CONFLICT, 'Подождите, ваш запрос на рассмотрении');
|
throw new HttpApiError(
|
||||||
|
httpStatus.BAD_REQUEST,
|
||||||
|
`Документ с хэшем ${data.document.doc_hash.toUpperCase()} не найден`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Извлекаем документ из базы данных для верификации
|
// Извлекаем appendix_hash из метаданных документа
|
||||||
const document = await this.documentInteractor.getDocumentByHash(data.document.hash);
|
const appendix_hash = (document.meta as any).appendix_hash;
|
||||||
|
|
||||||
if (!document) {
|
if (!appendix_hash) {
|
||||||
throw new HttpApiError(httpStatus.BAD_REQUEST, `Документ с хэшем ${data.document.hash} не найден`);
|
throw new HttpApiError(
|
||||||
|
httpStatus.BAD_REQUEST,
|
||||||
|
'В документе отсутствует appendix_hash'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверяем, есть ли уже запрос на рассмотрении для данного пользователя и проекта
|
||||||
|
const existingAppendix =
|
||||||
|
await this.appendixRepository.findCreatedByUsernameAndProjectHash(
|
||||||
|
data.username,
|
||||||
|
data.project_hash
|
||||||
|
);
|
||||||
|
|
||||||
|
if (existingAppendix) {
|
||||||
|
throw new HttpApiError(
|
||||||
|
httpStatus.CONFLICT,
|
||||||
|
'Подождите, ваш запрос на рассмотрении'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, что username в документе совпадает с переданным
|
// Проверяем, что username в документе совпадает с переданным
|
||||||
@@ -182,16 +245,25 @@ export class ParticipationManagementInteractor {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверяем, что appendix_hash в документе совпадает с переданным
|
// Формируем доменный input с полными данными
|
||||||
if ((document.meta as any).appendix_hash !== data.appendix_hash) {
|
const domainInput: MakeClearanceDomainInput = {
|
||||||
throw new HttpApiError(
|
coopname: data.coopname,
|
||||||
httpStatus.BAD_REQUEST,
|
username: data.username,
|
||||||
`Appendix hash в документе (${(document.meta as any).appendix_hash}) не совпадает с переданным (${
|
project_hash: data.project_hash,
|
||||||
data.appendix_hash
|
appendix_hash,
|
||||||
})`
|
document: data.document,
|
||||||
);
|
contribution: data.contribution,
|
||||||
}
|
};
|
||||||
|
|
||||||
|
return await this.makeClearanceDomain(domainInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Доменная логика подписания приложения в CAPITAL контракте
|
||||||
|
*/
|
||||||
|
private async makeClearanceDomain(
|
||||||
|
data: MakeClearanceDomainInput
|
||||||
|
): Promise<TransactResult> {
|
||||||
// Создаем базовые данные appendix для базы данных
|
// Создаем базовые данные appendix для базы данных
|
||||||
const databaseData: IAppendixDatabaseData = {
|
const databaseData: IAppendixDatabaseData = {
|
||||||
_id: '',
|
_id: '',
|
||||||
@@ -215,11 +287,17 @@ export class ParticipationManagementInteractor {
|
|||||||
username: data.username,
|
username: data.username,
|
||||||
project_hash: data.project_hash,
|
project_hash: data.project_hash,
|
||||||
appendix_hash: partialAppendix.appendix_hash,
|
appendix_hash: partialAppendix.appendix_hash,
|
||||||
document: this.domainToBlockchainUtils.convertSignedDocumentToBlockchainFormat(data.document),
|
document:
|
||||||
|
this.domainToBlockchainUtils.convertSignedDocumentToBlockchainFormat(
|
||||||
|
data.document
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
// ШАГ 3: Получаем данные appendix из блокчейна после makeClearance
|
// ШАГ 3: Получаем данные appendix из блокчейна после makeClearance
|
||||||
const blockchainData = await this.capitalBlockchainPort.getAppendix(data.coopname, partialAppendix.appendix_hash);
|
const blockchainData = await this.capitalBlockchainPort.getAppendix(
|
||||||
|
data.coopname,
|
||||||
|
partialAppendix.appendix_hash
|
||||||
|
);
|
||||||
|
|
||||||
if (!blockchainData) {
|
if (!blockchainData) {
|
||||||
throw new HttpApiError(
|
throw new HttpApiError(
|
||||||
@@ -228,7 +306,11 @@ export class ParticipationManagementInteractor {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// ШАГ 4: Обновляем существующую запись полными данными
|
// ШАГ 4: Обновляем существующую запись полными данными
|
||||||
savedAppendix.updateFromBlockchain(blockchainData, Number(result.transaction?.ref_block_num) ?? 0, true);
|
savedAppendix.updateFromBlockchain(
|
||||||
|
blockchainData,
|
||||||
|
Number(result.transaction?.ref_block_num) ?? 0,
|
||||||
|
true
|
||||||
|
);
|
||||||
await this.appendixRepository.save(savedAppendix);
|
await this.appendixRepository.save(savedAppendix);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -237,14 +319,19 @@ export class ParticipationManagementInteractor {
|
|||||||
/**
|
/**
|
||||||
* Редактирование участника в CAPITAL контракте
|
* Редактирование участника в CAPITAL контракте
|
||||||
*/
|
*/
|
||||||
async editContributor(data: EditContributorDomainInput): Promise<TransactResult> {
|
async editContributor(
|
||||||
|
data: EditContributorDomainInput
|
||||||
|
): Promise<TransactResult> {
|
||||||
// Находим участника в базе данных для обновления поля about
|
// Находим участника в базе данных для обновления поля about
|
||||||
const contributor = await this.getContributorByCriteria({
|
const contributor = await this.getContributorByCriteria({
|
||||||
username: data.username,
|
username: data.username,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!contributor) {
|
if (!contributor) {
|
||||||
throw new HttpApiError(httpStatus.NOT_FOUND, `Участник ${data.username} не найден в кооперативе ${data.coopname}`);
|
throw new HttpApiError(
|
||||||
|
httpStatus.NOT_FOUND,
|
||||||
|
`Участник ${data.username} не найден в кооперативе ${data.coopname}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обновляем поле about в базе данных, если оно передано
|
// Обновляем поле about в базе данных, если оно передано
|
||||||
@@ -257,17 +344,105 @@ export class ParticipationManagementInteractor {
|
|||||||
const blockchainData = {
|
const blockchainData = {
|
||||||
coopname: data.coopname,
|
coopname: data.coopname,
|
||||||
username: data.username,
|
username: data.username,
|
||||||
rate_per_hour: data.rate_per_hour ?? '0.0000 ' + config.blockchain.root_govern_symbol,
|
rate_per_hour:
|
||||||
|
data.rate_per_hour ?? '0.0000 ' + config.blockchain.root_govern_symbol,
|
||||||
hours_per_day: data.hours_per_day ?? 0,
|
hours_per_day: data.hours_per_day ?? 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Вызываем блокчейн порт для редактирования участника
|
// Вызываем блокчейн порт для редактирования участника
|
||||||
const result = await this.capitalBlockchainPort.editContributor(blockchainData);
|
const result = await this.capitalBlockchainPort.editContributor(
|
||||||
|
blockchainData
|
||||||
|
);
|
||||||
|
|
||||||
// Синхронизация автоматически обновит данные из блокчейна
|
// Синхронизация автоматически обновит данные из блокчейна
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Генерация документа приложения к договору участия
|
||||||
|
* Извлекает все необходимые данные на бэкенде по project_hash
|
||||||
|
*/
|
||||||
|
async generateAppendixGenerationAgreement(
|
||||||
|
data: AppendixGenerationAgreementGenerateDocumentInputDTO,
|
||||||
|
options?: GenerateDocumentOptionsInputDTO
|
||||||
|
): Promise<GeneratedDocumentDTO> {
|
||||||
|
// 1. Получаем данные участника
|
||||||
|
const contributor = await this.getContributorByCriteria({
|
||||||
|
username: data.username,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!contributor) {
|
||||||
|
throw new HttpApiError(
|
||||||
|
httpStatus.NOT_FOUND,
|
||||||
|
`Участник ${data.username} не найден`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Получаем данные проекта
|
||||||
|
const project = await this.projectManagementInteractor.getProjectByHash(
|
||||||
|
data.project_hash
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!project) {
|
||||||
|
throw new HttpApiError(
|
||||||
|
httpStatus.NOT_FOUND,
|
||||||
|
`Проект с хэшем ${data.project_hash} не найден`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Определяем, является ли проект компонентом
|
||||||
|
const isComponent = Boolean(
|
||||||
|
project.parent_hash && project.parent_hash !== EMPTY_HASH
|
||||||
|
);
|
||||||
|
|
||||||
|
// 4. Если компонент - получаем родительский проект
|
||||||
|
let parentProject: Awaited<
|
||||||
|
ReturnType<typeof this.projectManagementInteractor.getProjectByHash>
|
||||||
|
> = null;
|
||||||
|
if (isComponent && project.parent_hash) {
|
||||||
|
parentProject = await this.projectManagementInteractor.getProjectByHash(
|
||||||
|
project.parent_hash
|
||||||
|
);
|
||||||
|
if (!parentProject) {
|
||||||
|
throw new HttpApiError(
|
||||||
|
httpStatus.NOT_FOUND,
|
||||||
|
`Родительский проект с хэшем ${project.parent_hash} не найден`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Генерируем уникальный хэш для приложения
|
||||||
|
const appendix_hash = generateUniqueHash();
|
||||||
|
|
||||||
|
// 6. Формируем данные для генерации документа
|
||||||
|
const documentData = {
|
||||||
|
coopname: data.coopname,
|
||||||
|
username: data.username,
|
||||||
|
lang: data.lang || 'ru',
|
||||||
|
registry_id: Cooperative.Registry.AppendixGenerationAgreement.registry_id,
|
||||||
|
appendix_hash,
|
||||||
|
contributor_hash: contributor.contributor_hash,
|
||||||
|
contributor_created_at: contributor.created_at,
|
||||||
|
component_name: isComponent ? project.title || project.data || '' : '',
|
||||||
|
component_id: isComponent ? project.project_hash : '',
|
||||||
|
project_name: isComponent
|
||||||
|
? parentProject?.title || parentProject?.data || ''
|
||||||
|
: project.title || project.data || '',
|
||||||
|
project_id: isComponent
|
||||||
|
? project.parent_hash || ''
|
||||||
|
: project.project_hash,
|
||||||
|
is_component: isComponent,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 7. Генерируем документ
|
||||||
|
const document = await this.documentInteractor.generateDocument({
|
||||||
|
data: documentData,
|
||||||
|
options: options || {},
|
||||||
|
});
|
||||||
|
|
||||||
|
return document as GeneratedDocumentDTO;
|
||||||
|
}
|
||||||
|
|
||||||
// ============ МЕТОДЫ ЧТЕНИЯ ДАННЫХ ============
|
// ============ МЕТОДЫ ЧТЕНИЯ ДАННЫХ ============
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -283,7 +458,9 @@ export class ParticipationManagementInteractor {
|
|||||||
/**
|
/**
|
||||||
* Получение участника по ID
|
* Получение участника по ID
|
||||||
*/
|
*/
|
||||||
async getContributorById(_id: string): Promise<ContributorDomainEntity | null> {
|
async getContributorById(
|
||||||
|
_id: string
|
||||||
|
): Promise<ContributorDomainEntity | null> {
|
||||||
return await this.contributorRepository.findById(_id);
|
return await this.contributorRepository.findById(_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Общие константы проекта
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Пустой хэш SHA-256 (все нули)
|
||||||
|
*/
|
||||||
|
export const EMPTY_HASH = '0000000000000000000000000000000000000000000000000000000000000000';
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { createHash, randomBytes } from 'node:crypto';
|
||||||
|
|
||||||
|
export function randomSHA256(): string {
|
||||||
|
const randomData = randomBytes(32).toString('hex'); // 32 байта случайных данных
|
||||||
|
return createHash('sha256').update(randomData).digest('hex');
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,810 @@
|
|||||||
|
УТВЕРЖДЕНО:
|
||||||
|
Протоколом Совета № {{vars.generation_offer.protocol_number}}
|
||||||
|
{{vars.full_abbr_genitive}} «{{vars.name}}»
|
||||||
|
от {{vars.generation_offer.protocol_day_month_year}}
|
||||||
|
|
||||||
|
ПОЛЬЗОВАТЕЛЬСКОЕ СОГЛАШЕНИЕ (ОФЕРТА)
|
||||||
|
по участию в целевой потребительской программе “ГЕНЕРАТОР”
|
||||||
|
{{vars.full_abbr}} «{{vars.name}}» (далее «Общество») в лице Председателя Совета
|
||||||
|
{{coop.chairman.last_name}} {{coop.chairman.first_name}} {{coop.chairman.middle_name}}, действующего на основании Устава с одной стороны, и Пайщик Общества __________________________, действующий на основании собственного волеизъявления, с другой стороны, а вместе Стороны, согласились с нижеследующим:
|
||||||
|
Настоящее Пользовательское соглашение, составленное в соответствии с Гражданским кодексом
|
||||||
|
РФ, Уставом Общества и на основании Положения Общества о целевой потребительской
|
||||||
|
программе “ГЕНЕРАТОР”, утвержденном Собранием Совета Общества (Протокол №{{vars.generation_program.protocol_number}} от {{vars.generation_program.protocol_day_month_year}}), формулируют соглашение между Обществом и Пайщиком а также является по отношению к Пайщику Офертой от Общества, где Общество является Оферентом, а Пайщик является Акцептантом.
|
||||||
|
|
||||||
|
Отметка о Согласии
|
||||||
|
с Настоящим Пользовательским соглашением производится электронно, а дата создания Личного кабинета пайщика на сайте {{vars.website}} считается датой акцепта настоящей Оферты как пайщика Общества по взаимодействию между Пайщиком и Обществом в соответствии с условиями целевой потребительской программы “ГЕНЕРАТОР” (далее “ЦПП”).
|
||||||
|
Акцептом настоящей Оферты, Пайщик выражает свое полное согласие с условиями
|
||||||
|
взаимодействия в рамках ЦПП “ГЕНЕРАТОР”, а именно:
|
||||||
|
1. Термины и определения
|
||||||
|
1.1. Платформа - информационная экосистема, интегрируемая в социально-экономическую среду
|
||||||
|
Российской Федерации, состоящая из комплекса программных продуктов на базе технологии
|
||||||
|
распределенного реестра, обеспечивающих широкое экономическое и социальное
|
||||||
|
взаимодействие физических и юридических лиц, включая нерезидентов различных
|
||||||
|
юрисдикций и организационно-правовых форм, на основе международных кооперативных
|
||||||
|
принципов и законодательства Российской Федерации в отношении потребительских
|
||||||
|
кооперативов (обществ) под названием “Кооперативная Экономика”.
|
||||||
|
1.2. Имущество - для целей настоящего Пользовательского соглашения это овеществленные (на
|
||||||
|
бумажных и цифровых носителях) и выраженные в денежной оценке объекты авторских
|
||||||
|
прав и другие результаты интеллектуальной деятельности, созданные в рамках
|
||||||
|
выполнения условий настоящего Пользовательского Соглашения а именно:
|
||||||
|
полит-экономические, социологические, технологические, юридические и пр. проектные
|
||||||
|
разработки, а также инновации, решения, способы и подходы, программное обеспечение и его
|
||||||
|
элементы, выраженные в денежной оценке, подтвержденные материальные и ресурсные
|
||||||
|
затраты Участника (в т.ч. физические и временные), права на нематериальные активы,
|
||||||
|
интеллектуальная собственность, патенты, ноу-хау и прочее.
|
||||||
|
Денежные средства - Имущество в денежной форме - рубли РФ.
|
||||||
|
Участник ЦПП (Участник) - пайщик {{vars.short_abbr}} “{{vars.name}}”, подтвердивший намерение участвовать
|
||||||
|
в хозяйственной деятельности Общества фактом акцепта настоящего Пользовательского
|
||||||
|
Соглашения.
|
||||||
|
1.3. 1.4. 1 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
1.5. Сайт - официальный сайт Общества на сайте {{vars.website}}, на котором
|
||||||
|
опубликованы информация о ЦПП, текст настоящих общих условий и Положения о ЦПП с
|
||||||
|
условиями участия в ЦПП, а также ЛК Участников, в которых они могут осуществлять
|
||||||
|
управление своим участием в ЦПП;
|
||||||
|
1.6. Паевой взнос - безусловно возвратный целевой взнос Участника в Общество Имуществом,
|
||||||
|
возникающим в рамках реализации условий настоящего Пользовательского Соглашения;
|
||||||
|
1.7. Личный Кабинет (ЛК) - виртуальное пространство Участника в информационной системе
|
||||||
|
Общества на Сайте, создаваемый при его вступлении в пайщики Общества и присоединению к
|
||||||
|
целевой потребительской программе “Цифровой Кошелек” и, в котором отображается учет
|
||||||
|
операций по его взаимодействию с Обществом, в том числе и по участию в хозяйственной
|
||||||
|
деятельности Общества в рамках отдельных договоров и целевых потребительских
|
||||||
|
программах Общества, включая ЦПП.
|
||||||
|
1.8. Лицевой счет (ЛС) - баланс операций Участника по взаимодействию с Обществом, в т.ч. по
|
||||||
|
внесению и возврату взносов и займов, учитываемых Обществом в соответствии с каждым из
|
||||||
|
договоров и соглашений по участию в целевых потребительских программах Общества, в
|
||||||
|
которых участвует Участник, учитываемый в его ЛК.
|
||||||
|
1.9. Договор участия в хозяйственной деятельности (Договор УХД) - договор между
|
||||||
|
Обществом и Участником, определяющий общие положения участия в хозяйственной
|
||||||
|
деятельности Общества и являющийся необходимым условием для осуществления
|
||||||
|
деятельности, регулируемой настоящим Пользовательским Соглашением.
|
||||||
|
1.10. Продукт - для целей настоящего Пользовательского Соглашения - результат коллективной
|
||||||
|
деятельности Участников по реализации Идей, выраженный в овеществленной (электронной
|
||||||
|
или цифровой) форме, предназначенный для удовлетворения потребностей пайщиков
|
||||||
|
Общества.
|
||||||
|
1.11. Проект - процесс создания Продукта.
|
||||||
|
1.12. Компонент - подпроцесс (слой) создания Продукта, выделенный архитектурным, временным
|
||||||
|
или иным контуром для локализации задач Проекта.
|
||||||
|
1.13. Приглашение - уведомление Советом Общества пайщиков Общества об инициации Проекта
|
||||||
|
или его Компонента на Сайте.
|
||||||
|
1.14. Отклик - заявление пайщика в его ЛК на участие в Проекте или его Компоненте, согласно
|
||||||
|
опубликованного Приглашения.
|
||||||
|
1.15. Команда Проекта - группа Участников, согласно следующим функциональным статусам:
|
||||||
|
1.15.1. Мастер - Участник, уполномоченный Советом Общества или Председателем для
|
||||||
|
планирования Проекта или Компонента, подбора Авторского коллектива и
|
||||||
|
Исполнителей, несет персональную ответственность за достижение утвержденных
|
||||||
|
целей и результатов Проекта или Компонента. Является членом Авторского коллектива
|
||||||
|
и координатором Команды Проекта;
|
||||||
|
Автор - Участник, предложивший Идею;
|
||||||
|
Соавтор - Участник, принимающий участие в Авторском коллективе, обладающий
|
||||||
|
экспертным знанием и видением для творческой и интеллектуальной деятельности по
|
||||||
|
формулированию Концепции и Модели на базе Идеи;
|
||||||
|
Авторский коллектив - Участники, формирующие интеллектуальную, экспертную и
|
||||||
|
творческую составляющие объекта авторского права (ОАП), и осуществляющие
|
||||||
|
авторский надзор по созданию Продукта;
|
||||||
|
1.15.5. Исполнитель - Участник, который своим временем, физическими усилиями,
|
||||||
|
компетенциями и профессиональным навыком материально воплощает творческую
|
||||||
|
составляющую ОАП, в т.ч. Концепцию, Модель, Минимальный Продукт, и прочие
|
||||||
|
Компоненты Продукта;
|
||||||
|
Подмастерье – ведущий Исполнитель задачи, управляющий ее реализацией;
|
||||||
|
Инвестор - Участник, который предоставляет материальные ресурсы Обществу в
|
||||||
|
качестве Паевого взноса, в основном Денежные средства, для создания Продукта,
|
||||||
|
Компонента, Проекта в целом или его этап в качестве приоритета для своего Участия;
|
||||||
|
2 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
1.15.2. 1.15.3. 1.15.4. 1.15.6. 1.15.7.
|
||||||
|
1.15.8. Координатор - Участник, который использует свои коммуникативные компетенции и
|
||||||
|
презентует Модель, Минимальный Продукт, версию Модели или Продукта
|
||||||
|
потенциальным Инвесторам, аргументируя для них выгоды создаваемого Продукта и
|
||||||
|
участия в его создании;
|
||||||
|
При этом, каждый Участник может быть представлен в нескольких функциональных статусах.
|
||||||
|
Все указанные функциональные статусы Команды Проекта, за исключением Координатора,
|
||||||
|
являются необходимыми для реализации Проекта.
|
||||||
|
1.16. Задача - минимальная единица результата в Проекте, принадлежащая Компоненту, которая
|
||||||
|
должна быть выполнена и передана Исполнителем на проверку, акцептована Мастером, или
|
||||||
|
отменена.
|
||||||
|
1.17. Идея - мысленный образ возможного решения, метода, способа, подхода, действия или
|
||||||
|
инновация, выраженные в новом Продукте или доработке существующего, который
|
||||||
|
потенциально может удовлетворить потребности пайщиков и принести дополнительную
|
||||||
|
ценность Обществу, т.ч. и в качестве увеличения складочного капитала Общества,
|
||||||
|
оформляется в графическом или текстовом/табличном формате (презентация, статья, расчет) и
|
||||||
|
овеществляется на электронных или цифровых носителях, для внесения пайщиками Идей в
|
||||||
|
Общество в качестве имущественных паевых взносов.
|
||||||
|
1.18. Концепция - Компонент, предназначенный для системной переработки Идеи или
|
||||||
|
совокупности Идей, представляющий собой образ Продукта, изложение его сущности,
|
||||||
|
общественной потребности и выгоды при создании такового, целевые ориентиры и пути
|
||||||
|
достижения этих целей, анализ особенностей и обозначение предполагаемых результатов,
|
||||||
|
выраженных в качественной и количественной форме, а именно:
|
||||||
|
1.18.1. Ценностное предложение, характеризующее потенциал реализации в соответствии с
|
||||||
|
доктринальными условиями и политэкономическими принципами развития
|
||||||
|
Платформы;
|
||||||
|
1.18.2. Предполагаемая пользовательская аудитория и ее сегменты;
|
||||||
|
1.18.3. Сценарий отношений с пользователями, включая экономическое, правовое,
|
||||||
|
социологическое и методологическое обоснования;
|
||||||
|
1.18.4. Анализ сопоставимых Продуктов и их технологических решений, степени
|
||||||
|
распространения и возможность кооперации с их разработчиками для улучшения;
|
||||||
|
1.18.5. Видимые риски и пути их предотвращения;
|
||||||
|
1.18.6. Каналы распространения (если применимо);
|
||||||
|
1.18.7. Источники выгоды, включая модель и структуру распределения выгод и затрат как для
|
||||||
|
Общества, так и для его пайщиков;
|
||||||
|
1.18.8. Поставщики, партнеры, исполнители;
|
||||||
|
1.18.9. Основные действия и сроки - “дорожная карта”.
|
||||||
|
Концепция оформляется на электронном или бумажном носителях и является
|
||||||
|
Имуществом - объектом авторского права (ОАП), доли которого распределяются между
|
||||||
|
представителями Авторского коллектива в соответствии с условиями настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
1.19. Модель - Компонент, представляющий детальное описание Продукта, включая корректировки
|
||||||
|
в процессе Проекта, возникшее в результате качественной переработки Концепции,
|
||||||
|
включающей анализ, подтверждение и корректировку основных целей, предполагаемых
|
||||||
|
результатов и утверждений Концепции, а также план-график материального воплощения
|
||||||
|
Продукта с распределением задач и времени среди потенциальных Исполнителей , затрат
|
||||||
|
материальных ресурсов, представленный в овеществленной форме. Является Имуществом -
|
||||||
|
объектом авторского права (ОАП), доли которого распределяются между членами Авторского
|
||||||
|
коллектива в соответствии с с условиями настоящего Пользовательского Соглашения.
|
||||||
|
3 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
1.20. Минимальный Продукт - Компонент или версия Продукта с базовым функционалом, которая
|
||||||
|
обеспечивает предполагаемую минимальную потребность пользователей (пайщиков) в
|
||||||
|
Продукте.
|
||||||
|
1.21. Коммит - сегмент Продукта, его Компонента, Имущество в информационном формате - ОАП,
|
||||||
|
сформированное Исполнителем и принятое Мастером по результатам выполнения задачи,
|
||||||
|
отражающий как использованное время Исполнителя, так и вложенные им компетенции и
|
||||||
|
профессиональные навыки. Коммиты являются предметом обеспечения для предоставления
|
||||||
|
займов Обществом и принимаются во временное хранение.
|
||||||
|
1.22. Требование - кратко сформулированный ценностный образ к элементу функционала Продукта
|
||||||
|
или задаче в рамках Проекта или его Компонента.
|
||||||
|
1.23. Трекер - информационная система учета хозяйственной деятельности Общества в рамках
|
||||||
|
Проектов.
|
||||||
|
1.24. Трекер времени - подсистема Трекера, обеспечивающая учет фактически затраченного
|
||||||
|
времени Исполнителей.
|
||||||
|
1.25. Билеты времени - единицы учета фактически затраченного времени (t) Исполнителя в
|
||||||
|
Проекте.
|
||||||
|
1.26. Допуск к Проекту и/или Компоненту (Допуск) - уведомление о согласовании кандидатуры
|
||||||
|
пайщика на участие в Проекте или его Компоненте.
|
||||||
|
2. Цель и задача
|
||||||
|
2.1. Целью ЦПП является удовлетворение потребностей Участников в их творческой
|
||||||
|
самореализации при создании общего Имущества, интегрированного в Платформу для
|
||||||
|
совместного использования в соответствии с хозяйственным механизмом, изложенным в
|
||||||
|
разделах. 3,4,5,6,7,8 и 9 настоящего Пользовательского Соглашения.
|
||||||
|
2.2. Основной задачей ЦПП является развитие Платформы как центра привлечения и интеграции
|
||||||
|
передовых инновационных цифровых разработок, а также экономических и социальных
|
||||||
|
методов и решений.
|
||||||
|
3. Инициация Проектов и получение допуска
|
||||||
|
3.1. Инициация Проектов осуществляется Советом Общества исходя из приоритетов развития
|
||||||
|
Платформы.
|
||||||
|
3.2. Каждый Участник вправе предоставить Идею как имущественный паевой взнос в Общество.
|
||||||
|
3.3. Стоимостная оценка Идеи как единицы Имущества составляет 50 (пятьдесят) руб.
|
||||||
|
3.4. Представление Идеи осуществляется через ЛК в форме заявления в Совет Общества на
|
||||||
|
внесение паевого взноса Имуществом, в соответствии с утвержденным Обществом форматом
|
||||||
|
заявления, к которому прикладывается оформленная в графическом или текстовом/табличном
|
||||||
|
формате Идея в овеществленном виде: бумажном или электронном виде.
|
||||||
|
3.5. Формат заявления в Совет Общества, согласно п.3.4 настоящего Пользовательского
|
||||||
|
Соглашения, содержит дополнительное условие, согласно которого, возврат Идеи ее Автору в
|
||||||
|
форме Имущества не допускается, если Идея получила статус Проекта в соответствии с п. 3.9.
|
||||||
|
настоящего Пользовательского Соглашения.
|
||||||
|
3.6. Рассмотрение заявлений Участников на паевой взнос Идей как Имущества осуществляется
|
||||||
|
Советом Общества в соответствии с Уставом Общества - в срок до 30 календарных дней.
|
||||||
|
3.7. Отбор Идей для инициации Проектов производится Советом Общества по заявлению:
|
||||||
|
3.7.1. члена Совета Общества, который выбрал предложенную Идею как основание для
|
||||||
|
создания Продукта, приоритетного для развития Платформы;
|
||||||
|
3.7.2. по заявлению в Совет Общества от любого Участника, предложившего Идею, как
|
||||||
|
основание для потенциального Продукта, который соответствует приоритетам
|
||||||
|
Общества по развитию Платформы и, располагающего материальными ресурсами для
|
||||||
|
создания Продукта.
|
||||||
|
4 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
3.8. Совет Общества рассматривает заявления на инициацию Проектов на очередном заседании,
|
||||||
|
дата которого не менее 10 календарных дней, но не более 30 дней с даты подачи заявления.
|
||||||
|
3.9. Идея (или несколько Идей), которая получила согласование Совета Общества в результате
|
||||||
|
голосования по поданному заявлению, приобретает статус Проекта и, Совет Общества
|
||||||
|
утверждает для такого Проекта кандидатуру Мастера из числа Участников, с которым
|
||||||
|
Общество заключает приложение к Договору УХД об участии в инициированном Обществом
|
||||||
|
Проекте.
|
||||||
|
3.10. После инициации Проекта в соответствии с п. 3.9. настоящего Пользовательского
|
||||||
|
Соглашения, Председатель Совета Общества и/или Мастер формируют официальное
|
||||||
|
Приглашение к участию в Проекте или его Компоненте в Команде Проекта и размещают его
|
||||||
|
на Сайте Общества и в ЛК Участников.
|
||||||
|
3.10.1. Автор получает Допуск к участию в Проекте по умолчанию.
|
||||||
|
3.11. Порядок получения Допуска:
|
||||||
|
3.11.1.1. Участник направляет Отклик на Приглашение через свой ЛК с указанием своего
|
||||||
|
функционального статуса/ов, согласно п. 1.15. настоящего Пользовательского
|
||||||
|
Соглашения.
|
||||||
|
3.11.1.2. Мастер Проекта и/или Председатель Общества, рассматривают Отклик Участника
|
||||||
|
на Приглашение и, при соответствии необходимых компетенций, направляют
|
||||||
|
Участнику Допуск.
|
||||||
|
3.11.1.3. Участник, получивший Допуск, заключает приложение к Договору УХД,
|
||||||
|
фиксирующим его участие в Проекте и/или его Компоненте в течение срока,
|
||||||
|
указанного в Допуске.
|
||||||
|
3.11.1.4. По заключению приложения к Договору УХД в соответствии с п.3.11.1.3
|
||||||
|
настоящего Пользовательского Соглашения, Общество создает цифровой кошелек
|
||||||
|
Проекта на ЛК Участника.
|
||||||
|
3.12. Если Участник, представивший Идею, на основании которой Совет Общества инициировал
|
||||||
|
Проект, отклонил Допуск или не осуществил действия в соответствии с п.3.11.1.3. настоящего
|
||||||
|
Пользовательского Соглашения в срок, обозначенный в п.3.10. настоящего Пользовательского
|
||||||
|
Соглашения, то обязательство Общества в отношении возврата паевого взноса ограничено его
|
||||||
|
стоимостной оценкой на момент взноса, согласно п.3.3. настоящего Пользовательского
|
||||||
|
Соглашения.
|
||||||
|
4. Принцип формирования стоимости ОАП
|
||||||
|
4.1. Составляющими стоимость ОАП являются:
|
||||||
|
4.1.1. Время (t) - астрономическое время, затраченное Участником на физическое
|
||||||
|
(овеществленное) воплощение Концепции, Модели и Продукта (Минимального
|
||||||
|
Продукта и его версий).
|
||||||
|
4.1.2. Компетенции и профессиональные навыки (k), проявленные в единицу времени при
|
||||||
|
физическом воплощении (овеществлении) Концепции, Модели и Продукта
|
||||||
|
(Минимального Продукта и его версий).
|
||||||
|
4.1.3. Интеллектуальная, экспертная и творческая составляющие Автора и/или
|
||||||
|
Соавторов (i).
|
||||||
|
4.1.4. Материальные ресурсы (r), обеспечивающие проявление Компетенций и
|
||||||
|
профессиональных навыков (k), Интеллектуальной, экспертной и творческой
|
||||||
|
составляющих (i), покрывающие хозяйственные расходы Проекта на временном
|
||||||
|
промежутке его реализации.
|
||||||
|
4.2. Все составляющие стоимость ОАП равнозначны при определении стоимости Продукта.
|
||||||
|
Безусловно измеримой и отдельной категорией является астрономическое время, как
|
||||||
|
невосполнимый ресурс Участника, условная стоимость единицы которого (v) для Проекта
|
||||||
|
определяется Советом Общества.
|
||||||
|
5 | Страница Пользовательское соглашение ЦПП «ГЕНЕРАЦИЯ»
|
||||||
|
4.3. Стоимость компетенций и профессиональных навыков (k) рассчитывается как t * v′, где v′
|
||||||
|
- стоимость конкретных компетенций и профессиональных навыков в единицу времени,
|
||||||
|
которая определяется Обществом.
|
||||||
|
4.4. Для расчета Интеллектуальной, экспертной и творческой составляющих ОАП (i)
|
||||||
|
используется “золотое сечение” - математический принцип, который описывает гармоничное
|
||||||
|
соотношение, которое обозначается греческой буквой φ (фи) и равно 1,618.
|
||||||
|
4.5. Стоимость ОАП Координаторов определяется как часть (f) материальных ресурсов
|
||||||
|
(Денежных средств), предоставленных Инвесторами в Проект, привлеченными
|
||||||
|
Координаторами, рассчитанная в процентах от таковых (ref), который определяется Советом
|
||||||
|
Общества.
|
||||||
|
4.6. Стоимость материальных ресурсов (r) как Имущества определяется в рублях РФ.
|
||||||
|
5. Порядок формирования стоимости ОАП (Продукта)
|
||||||
|
5.1. Стоимость ОАП начинает формироваться с момента, указанного в п. 3.9 настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
5.2. На Первом этапе реализации Проекта (п.8.1. настоящего Пользовательского Соглашения)
|
||||||
|
стоимость ОАП выражается в Коммитах членов Авторского коллектива, выполняющих
|
||||||
|
функцию Исполнителей, а также согласованных затрат, исходя из минимальных стоимостных
|
||||||
|
параметров, согласно п. 8.1.3 и 8.1.11. настоящего Пользовательского Соглашения.
|
||||||
|
5.3. На Втором и Третьем этапах стоимость ОАП оценивается исходя из методики, изложенной в
|
||||||
|
разделе 3 настоящего Пользовательского Соглашения, в следующем порядке:
|
||||||
|
5.3.1. Время (t), которое затратил Исполнитель на Коммит в соответствии с планом и задачами
|
||||||
|
и, которые определил Мастер, умноженное на стоимость единицы времени (v),
|
||||||
|
определенное Советом Общества;
|
||||||
|
5.3.2. К стоимости времени, рассчитанному в п. 5.3.1. настоящего Регламента, добавляется
|
||||||
|
стоимость компетенций и профессиональных навыков Создателя (k), которая, согласно
|
||||||
|
методики составляет произведение t*v′;
|
||||||
|
5.3.3. Полученная сумма стоимостей (k) и (t*v) делится на коэффициент φ для получения
|
||||||
|
стоимости Интеллектуальной, экспертной и творческой составляющих в ОАП (i);
|
||||||
|
5.3.4. 5.3.5. Стоимость ОАП Координаторов (f), если таковая присутствует в рамках Проекта;
|
||||||
|
К полученной сумме стоимостей (t*v), (k), (i) и (f) добавляется стоимость материальных
|
||||||
|
ресурсов (Денежных средств) (r), предоставленных Обществу Инвестором/ами в
|
||||||
|
Проект.
|
||||||
|
Таким образом, формула стоимости ОАП представляет из себя сумму стоимостей, выраженных
|
||||||
|
в Денежных Средствах (t*v), (k), (i), (f) и (r).
|
||||||
|
5.4. ОАП в формате Коммитов Исполнителей и ОАП членов Авторского коллектива,
|
||||||
|
рассчитываемого в соответствии с пп. 5.2. и 5.3.3. настоящего Пользовательского
|
||||||
|
Соглашения, а также с определенной стоимостью долей ОАП каждого участника Команды
|
||||||
|
Проекта, в соответствии с разделом 6 настоящего Пользовательского Соглашения, являются
|
||||||
|
их персональным Имуществом и содержатся в овеществленном виде (на цифровых или
|
||||||
|
электронных носителях) в Обществе, в том числе и в его электронных базах данных, на
|
||||||
|
условиях ответственного хранения и учитываются на ЛС Проекта у каждого Участника,
|
||||||
|
вплоть до передачи ими этого Имущества в Общество в качестве паевых взносов, либо
|
||||||
|
высвобождаются из ответственного хранения и передаются Исполнителям, как это указано в
|
||||||
|
пп. 8.1.10., 8.1.21. б)., 8.2.12. а) и в) настоящего Пользовательского Соглашения.
|
||||||
|
6 | Страница Пользовательское соглашение ЦПП «ГЕНЕРАЦИЯ»
|
||||||
|
6. Определение стоимости долей участников Команды Проекта в ОАП Продукта
|
||||||
|
6.1. ОАП Продукта является результатом коллективных усилий Команды Проекта и, его
|
||||||
|
коллективная стоимость определяется в соответствии с п.5 настоящего Пользовательского
|
||||||
|
Соглашения.
|
||||||
|
6.2. Исходя из п.6.1. настоящего Пользовательского Соглашения, коллективная часть стоимости
|
||||||
|
ОАП, генерируемая Исполнителями и Авторским коллективом, также определяется через
|
||||||
|
применение коэффициента φ и становится объектом голосования по “методу Водянова”1 как
|
||||||
|
среди Исполнителей, так и Авторского коллектива.
|
||||||
|
6.3. Стоимость доли ОАП каждого участника Команды Проекта определяется исходя из
|
||||||
|
функциональной роли каждого из них в поэтапной реализации Проекта, а именно:
|
||||||
|
6.3.1. Исполнитель
|
||||||
|
6.3.1.1. Выполненные Исполнителем задачи, поставленные Мастером и акцептованные им
|
||||||
|
как Коммиты Исполнителя, формируют стоимость затраченных Исполнителем
|
||||||
|
ресурсов - астрономического времени (t*v) и компетенций, знаний и
|
||||||
|
профессиональных навыков (k).
|
||||||
|
6.3.1.2. Сумма (t*v) и (k) делится на коэффициент φ, таким образом определяя
|
||||||
|
коллективную стоимость, которая является предметом для голосования по “методу
|
||||||
|
Водянова” среди всех Исполнителей, вовлеченных на конкретном этапе Проекта в
|
||||||
|
создание Продукта, на каждый момент акцепта Коммитов Мастером в
|
||||||
|
соответствии с согласованными сроками.
|
||||||
|
6.3.1.3. Оставшаяся сумма за вычетом коллективной стоимости ((t*v)+(k))-((t*v)+(k)/φ)
|
||||||
|
является персональной и безусловной долей Исполнителя в ОАП.
|
||||||
|
6.3.1.4. По результатам голосования по “методу Водянова” в соответствии с п. 6.3.1.2.
|
||||||
|
настоящего Пользовательского Соглашения, коллективная стоимость
|
||||||
|
перераспределяется каждому из Исполнителей и добавляется к его персональной
|
||||||
|
безусловной доле ОАП, согласно п. 6.3.1.3. настоящего Пользовательского
|
||||||
|
Соглашения, таким образом формируя его совокупную долю в ОАП, являющейся
|
||||||
|
предметом для имущественного паевого взноса в Общество, в т. ч. и как части
|
||||||
|
общего ОАП Платформы.
|
||||||
|
6.3.2. Автор/Соавтор
|
||||||
|
6.3.2.1. В соответствии с п.5.3.3 настоящего Пользовательского Соглашения, совокупная
|
||||||
|
стоимость интеллектуальной, экспертной и творческой составляющих в ОАП (i)
|
||||||
|
определяется делением на коэффициент φ суммы стоимости времени (t*v),
|
||||||
|
компетенций и профессиональных навыков Исполнителей (k) при акцепте
|
||||||
|
Коммитов Исполнителей Мастером на всем протяжении реализации Проекта.
|
||||||
|
6.3.2.2. Для определения коллективной части стоимости Интеллектуальной, экспертной и
|
||||||
|
творческой составляющих в ОАП (i), стоимость рассчитанная согласно п. 6.3.2.1
|
||||||
|
делится на коэффициент φ, являясь предметом для голосования по “методу
|
||||||
|
Водянова” среди членов Авторского коллектива, вовлеченных на конкретном этапе
|
||||||
|
Проекта, на каждый момент акцепта Коммитов Исполнителей Мастером.
|
||||||
|
6.3.2.3. Оставшаяся сумма за вычетом коллективной стоимости (((t*v)+(k)/φ)/φ)
|
||||||
|
распределяется среди членов Авторского коллектива поровну, что является
|
||||||
|
безусловными персональными долями в ОАП каждого из них.
|
||||||
|
6.3.2.4. По результатам голосования по “методу Водянова” в соответствии с п. 6.3.2.2.
|
||||||
|
настоящего Пользовательского Соглашения, коллективная стоимость
|
||||||
|
перераспределяется каждому из Авторов/Соавторов и добавляется к его
|
||||||
|
персональной безусловной доле в ОАП, согласно п. 6.3.1.3. настоящего
|
||||||
|
регламента, таким образом формируя его совокупную долю в ОАП, являющейся
|
||||||
|
1 “Метод Водянова” или система «Компас» — организационный принцип, предложенный в 1982 году специалистом по
|
||||||
|
организационным технологиям Валерием Водяновым, где вес участия в общем продукте проводится через голосование, когда
|
||||||
|
каждый участник распределяет вес участия в числовом выражении каждого участника, кроме себя.
|
||||||
|
7 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
предметом для имущественного паевого взноса в Общество, в т. ч. и как части
|
||||||
|
общего ОАП Платформы.
|
||||||
|
6.3.3. Инвестор
|
||||||
|
6.3.3.1. Стоимость доли ОАП Инвестора определяется Денежной Оценкой материальных
|
||||||
|
ресурсов или непосредственно размера Денежных средств (r) аллоцированных в
|
||||||
|
Проект, на каждом из этапов (Компонентов) Проекта.
|
||||||
|
6.3.4. Координатор
|
||||||
|
6.3.4.1. В соответствии с условиями, изложенными в п. 8.1.16. и 8.1.17. настоящего
|
||||||
|
Пользовательского Соглашения, материалы Проекта передаются Координаторам, с
|
||||||
|
которыми согласовываются ожидаемые сроки и размеры материальных ресурсов
|
||||||
|
(Денежных Средств) в Проект, которые потенциально смогут предложить
|
||||||
|
Инвесторы, привлекаемые Координаторами, что является основой для
|
||||||
|
планирования графика реализации Проекта Мастером и набора состава
|
||||||
|
Исполнителей.
|
||||||
|
6.3.4.2. По факту аллокации Денежных средств Инвестора в Проект (r) благодаря
|
||||||
|
деятельности Координатора, Координатор формирует исполненный
|
||||||
|
инвестиционный план, который составляет часть ОАП.
|
||||||
|
6.3.4.3. 6.3.4.3.1. Расчет стоимости ОАП каждого Координатора (f) производится по формуле:
|
||||||
|
процент (ref) от суммы Денежных средств (r), Инвестора, аллоцированных в
|
||||||
|
Проект.
|
||||||
|
7. Трекер и Билеты Времени
|
||||||
|
7.1. Учёт фактически используемых временных ресурсов (t), навыков и компетенций
|
||||||
|
Исполнителей (k) по Проектам и Компонентам осуществляется в электронном Трекере
|
||||||
|
Общества.
|
||||||
|
7.2. Трекер формирует иерархию учёта: Проект → Компонент → Задача. Компонент всегда
|
||||||
|
относится к одному Проекту и имеет аналогичную структуру управления, включая
|
||||||
|
возможность назначения Мастера, формирования Авторского коллектива и пула
|
||||||
|
Исполнителей.
|
||||||
|
7.3. Исполнители, получившие Допуск, обязаны уведомлять Мастера о доступных им ресурсах
|
||||||
|
времени (t). Суммарное время участия одного Исполнителя не может превышать 8 (восемь)
|
||||||
|
часов в сутки.
|
||||||
|
7.4. Мастер совместно с Авторским коллективом осуществляет декомпозицию Проекта на
|
||||||
|
Компоненты и выявляет Требования к ним, являющиеся производственными ориентирами
|
||||||
|
для Исполнителей.
|
||||||
|
7.5. Мастер совместно с Исполнителями осуществляет декомпозицию Компонентов на Задачи,
|
||||||
|
описывает Требования к ним, назначает для координации их реализации Подмастерья, а
|
||||||
|
также при необходимости определяет иных Исполнителей, задействованных в реализации
|
||||||
|
Задачи. Определение Подмастерья из числа Исполнителей является исключительной
|
||||||
|
прерогативой Мастера.
|
||||||
|
7.6. Задачи могут создаваться Мастером и Исполнителями, для каждой Задачи может быть
|
||||||
|
задействовано неограниченное количество Исполнителей.
|
||||||
|
7.7. Управление статусами Задач осуществляется исключительно Подмастерьями и Мастером.
|
||||||
|
7.8. Жизненный цикл одной Задачи включает следующие статусы:
|
||||||
|
7.8.1. «Бэклог» — Задачи, ожидающие включения в статус «К выполнению»;
|
||||||
|
7.8.2. «К выполнению» — Задачи, ожидающие перехода в статус «В работе»;
|
||||||
|
7.8.3. «В работе» — Задачи, находящиеся в процессе выполнения и ожидающие перевода в
|
||||||
|
статус «На проверке»;
|
||||||
|
7.8.4. 7.8.5. «На проверке» — Задачи, ожидающие проверки и подтверждения Мастером;
|
||||||
|
«Выполнено» — Задачи, успешно завершённые.
|
||||||
|
8 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
7.9. Перевод Задачи в статус «Выполнено» и “К выполнению” осуществляется исключительно
|
||||||
|
Мастером.
|
||||||
|
7.10. Задачи могут иметь приоритеты: низкий, средний, высокий, срочный. Приоритет
|
||||||
|
определяется Мастером.
|
||||||
|
7.11. Задачи могут иметь дополнительные метки (теги). Управление метками Задач осуществляется
|
||||||
|
Мастером.
|
||||||
|
7.12. Трекер времени автоматически производит Билеты Времени:
|
||||||
|
7.12.1. Каждый час Трекер начисляет Билеты Времени Исполнителям по всем их Задачам,
|
||||||
|
находящимся в статусе «В работе», в пределах ресурсов, предложенных Исполнителем .
|
||||||
|
7.12.2. При отсутствии у Исполнителя активных Задач в статусе «В работе» формирование
|
||||||
|
Билетов Времени не производится.
|
||||||
|
7.12.3. Накопленные Билеты Времени отражают фактически затраченные ресурсы
|
||||||
|
Исполнителей, но не более суточного лимита, установленного самим Исполнителем,
|
||||||
|
согласно п. 7.3. настоящего Пользовательского Соглашения.
|
||||||
|
7.12.4. Проверенная и принятая Мастером Задача активирует Исполнителю накопленные им по
|
||||||
|
задаче Билеты Времени, делая их доступными для совершения Коммита.
|
||||||
|
8. Порядок реализации Проекта
|
||||||
|
8.1. Первый этап - предварительный - подготовка Компонентов - Концепции и Модели
|
||||||
|
8.1.1. Подготовка Концепции является инструментом проверки обоснованности Идеи и ее
|
||||||
|
потенциала как для развития Платформы, так и общественной пользы для пайщиков
|
||||||
|
Общества. Концепция представляет собой отдельный Компонент Проекта.
|
||||||
|
8.1.2. Для подготовки Концепции Мастер формирует состав Авторского коллектива из числа
|
||||||
|
Участников.
|
||||||
|
8.1.3. По согласованию с Авторским коллективом, Совет Общества утверждает минимальные
|
||||||
|
стоимостные параметры Концепции, как ОАП, в соответствии с п. 4.2. и 4.3. настоящего
|
||||||
|
Пользовательского Соглашения и обеспечивает материальные ресурсы для подготовки
|
||||||
|
Концепции в рамках утвержденных минимальных стоимостных параметров.
|
||||||
|
8.1.4. Авторский коллектив и Мастер согласовывают сроки подготовки Концепции и
|
||||||
|
распределяют функциональные задачи Исполнителей между членами Авторского
|
||||||
|
коллектива.
|
||||||
|
8.1.5. Коммиты членов Авторского коллектива и их ОАП, рассчитываемый в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашения, по выполнению задач в рамках
|
||||||
|
минимальных стоимостных параметров Концепции, утвержденные Советом Общества,
|
||||||
|
передаются как Имущество в Общество на электронных носителях на ответственное
|
||||||
|
хранение в электронных базах Общества, согласно условий, изложенных в п. 5.4.
|
||||||
|
настоящего Пользовательского Соглашения, и хранятся в них как предмет для
|
||||||
|
последующих имущественных взносов в Общество при условии перехода реализации
|
||||||
|
Проекта на Второй этап, согласно п.8.2. настоящего Регламента.
|
||||||
|
8.1.6. В любой момент подготовки Концепции до презентации последней Совету Общества в
|
||||||
|
соответствии с п. 8.1.7. настоящего Пользовательского Соглашения, Мастер, согласно
|
||||||
|
представления Авторского коллектива, может прекратить подготовку Концепции, если в
|
||||||
|
процессе проверки обоснованности Идеи будут выявлены обстоятельства, которые
|
||||||
|
существенно снижают или нивелируют общественную и/или экономическую ценность
|
||||||
|
Продукта, или факторы, при которых вероятность реализации Продукта сомнительна, о
|
||||||
|
чем Мастер незамедлительно извещает своим заявлением Совет Общества, который
|
||||||
|
принимает решение о перенесении Проекта в статус ожидания в соответствии с п. 8.1.10.
|
||||||
|
настоящего Пользовательского Соглашения, либо о закрытии Проекта, при этом, по
|
||||||
|
Коммитам членов Авторского коллектива и их ОАП, рассчитываемого в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашения, сформированными до даты
|
||||||
|
заявления Мастера в Совет Общества о прекращения разработки Концепции, в
|
||||||
|
9 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
соответствии с п. 6.3.2. настоящего Пользовательского Соглашения, определяются
|
||||||
|
стоимости долей ОАП являющихся предметом для имущественных паевых взносов
|
||||||
|
членов Авторского коллектива в Общество, в соответствии с п.5.4 настоящего
|
||||||
|
Пользовательского Соглашения, как части общего ОАП Платформы, как это указано в
|
||||||
|
разделе 6 настоящего Пользовательского Соглашения.
|
||||||
|
8.1.7. По готовности Концепции, Мастер презентует Концепцию Совету Общества и, при
|
||||||
|
одобрении таковой, Авторский коллектив приступает к анализу и проверке допущений и
|
||||||
|
предположений, представленных в Концепции и подготовке Модели.
|
||||||
|
8.1.8. Совет Общества может одобрить Концепцию частично и предложить ее доработку. В
|
||||||
|
таком случае Совет Общества правомочен предложить доработку Концепции в рамках
|
||||||
|
ранее утвержденных минимальных стоимостных параметрах или утвердить
|
||||||
|
дополнительные стоимостные параметры для необходимой доработки.
|
||||||
|
8.1.9. Совет Общества может перенести Проект в статус “Ожидания”, тем самым остановить
|
||||||
|
деятельность в Проекте, при этом Коммиты Авторского коллектива и их ОАП,
|
||||||
|
рассчитываемых в соответствии с п.5.3.3. настоящего Пользовательского Соглашения,
|
||||||
|
остаются на ответственном хранении в электронных базах Общества, согласно п.5.4.
|
||||||
|
настоящего Пользовательского Соглашения как предмет для последующих
|
||||||
|
имущественных взносов в Общество при условии изменения статуса Проекта на
|
||||||
|
“Активный” и перехода реализации Проекта на Второй этап, согласно п.8.2. настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
8.1.10. Проект по решению Совета Общества может быть прекращен, если показатели
|
||||||
|
презентованной Концепции не обеспечивают потенциальной экономической или
|
||||||
|
социальной выгоды Общества или ценности для ОАП Платформы и, в таком случае,
|
||||||
|
Коммиты членов Авторского коллектива и их ОАП, рассчитываемые в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашения, являющиеся их Имуществом - ОАП -
|
||||||
|
высвобождаются из ответственного хранения в Обществе, в соответствии с п.5.4.
|
||||||
|
настоящего Пользовательского Соглашения, и передаются им в овеществленном виде на
|
||||||
|
электронных или бумажных носителях ОАП для дальнейшего личного использования.
|
||||||
|
8.1.11. По согласованию с Авторским коллективом, Совет Общества утверждает минимальные
|
||||||
|
стоимостные параметры Модели как ОАП в соответствии с п. 4.2. и 4.3. настоящего
|
||||||
|
Пользовательского Соглашения, включая сопутствующие затраты, связанные с оплатой
|
||||||
|
услуг и/или материалов третьим сторонам. Члены Авторского коллектива при подготовке
|
||||||
|
Модели выполняют также и функцию Исполнителей.
|
||||||
|
8.1.12. Мастер координирует деятельность Авторского коллектива по разработке Модели,
|
||||||
|
согласовывает сроки и распределяет задачи среди членов Авторского коллектива.
|
||||||
|
8.1.13. На основе Модели Авторский коллектив определяет основные ресурсы (физические,
|
||||||
|
финансовые, квалификационные) для дальнейшей реализации Проекта и составляет
|
||||||
|
презентацию Модели.
|
||||||
|
8.1.14. Коммиты членов Авторского коллектива и их ОАП, рассчитываемого в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашенияа, сформированные в рамках
|
||||||
|
минимальных стоимостных параметров Модели, утвержденных Советом Общества в
|
||||||
|
соответствии с п. 8.1.11. настоящего Пользовательского Соглашения, передаются как
|
||||||
|
Имущество в Общество на электронных носителях на ответственное хранение в
|
||||||
|
электронных базах Общества, согласно п.5.4. настоящего Пользовательского Соглашения
|
||||||
|
и хранятся в них как предмет для последующих имущественных взносов в Общество при
|
||||||
|
условии перехода реализации Проекта на Второй этап, согласно п.8.2. настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
8.1.15. В любой момент подготовки Модели до передачи презентации последней Совету
|
||||||
|
Общества в соответствии с п. 8.1.16. настоящего Пользовательского Соглашения, Мастер,
|
||||||
|
согласно представления Авторского коллектива, может прекратить подготовку Модели,
|
||||||
|
если в процессе анализа и проверки допущений Концепции будут выявлены
|
||||||
|
обстоятельства, которые существенно снижают или нивелируют общественную и/или
|
||||||
|
10 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
экономическую ценность Продукта, или факторы, при которых вероятность реализации
|
||||||
|
Продукта сомнительна, о чем Мастер незамедлительно извещает заявлением Совет
|
||||||
|
Общества, который принимает решения либо в соответствии с п. 8.1.21. а). настоящего
|
||||||
|
Пользовательского Соглашения, либо о закрытии Проекта, при этом, по Коммитам
|
||||||
|
членов Авторского коллектива и их ОАП, рассчитываемого в соответствии с п.5.3.3.
|
||||||
|
настоящего Пользовательского Соглашенияа, сформированными до даты заявления
|
||||||
|
Мастера в Совет Общества о прекращения разработки Модели, в соответствии с п. 6.3.2.
|
||||||
|
настоящего Пользовательского Соглашения определяются стоимости долей ОАП,
|
||||||
|
являющихся предметом для имущественных паевых взносов членами Авторского
|
||||||
|
коллектива в Общество, в соответствии с п.5.4 настоящего Пользовательского
|
||||||
|
Соглашения, как части общего ОАП Платформы, как это указано в разделе 6 настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
8.1.16. Презентация Модели передается в Совет Общества на согласование.
|
||||||
|
8.1.17. Совет Общества проводит анализ собственных ресурсных возможностей Общества и
|
||||||
|
рисков по реализации Модели в Минимальном Продукте, определяет размер ресурсов
|
||||||
|
для дополнительного привлечения, согласовывает с Авторским коллективом и Мастером
|
||||||
|
план мероприятий для привлечения ресурсов через представление презентации Модели
|
||||||
|
потенциальным Исполнителям, Инвесторам и Координаторам.
|
||||||
|
8.1.18. При одобрении Советом Общества Модели, Проект переходит на следующий этап, а
|
||||||
|
Председатель Совета Общества информирует пайщиков Общества о статусе Проекта и
|
||||||
|
публикует запрос на привлечение ресурсов в Трекере.
|
||||||
|
8.1.19. Совет Общества может одобрить Модель частично и предложить ее доработку.
|
||||||
|
8.1.20. Если анализ и проверка допущений и предположений Концепции в рамках подготовки
|
||||||
|
Модели не представляются достоверными, Совет Общества, может вынести решение о
|
||||||
|
глубокой переработке Модели и, в таком случае, Совет Общества, если сочтет это
|
||||||
|
целесообразным, правомочен назначить нового Мастера, с поручением сформировать
|
||||||
|
новый Авторский Коллектив для глубокой переработки Модели, при этом, в отношении
|
||||||
|
Коммитов предыдущего Авторского коллектива и их ОАП, рассчитываемого в
|
||||||
|
соответствии с п.5.3.3. настоящего Пользовательского Соглашения, действует п. 8.1.21.б)
|
||||||
|
настоящего Пользовательского Соглашения.
|
||||||
|
8.1.21. Если Совет Общества не согласовал представленную Модель и первоначальный план
|
||||||
|
Проекта в целом, то:
|
||||||
|
а) Проект по решению Совета Общества может быть перенесен в статус ожидания, если
|
||||||
|
условия реализации Модели не соответствуют текущим экономическим или
|
||||||
|
социальным ожиданиям Общества и, дальнейшие действия по нему не производятся
|
||||||
|
до момента изменения статуса Проекта Советом Общества, при этом Коммиты
|
||||||
|
Авторского коллектива и их ОАП, рассчитываемый в соответствии с п.5.3.3.
|
||||||
|
настоящего Пользовательского Соглашения, остаются на ответственном хранении в
|
||||||
|
электронных базах Общества, в соответствии с условиями договоров об участии в
|
||||||
|
хозяйственной деятельности в электронных базах Общества, в соответствии с п.5.4
|
||||||
|
настоящего Пользовательского Соглашения, и хранятся в них как предмет для
|
||||||
|
последующих имущественных взносов в Общество при условии изменения статуса
|
||||||
|
Проекта на “Активный” и перехода реализации Проекта на Второй этап, согласно
|
||||||
|
п.8.2. настоящего Пользовательского Соглашения; или
|
||||||
|
б) Проект по решению Совета Общества может быть прекращен, если показатели
|
||||||
|
презентованной Модели не обеспечивают потенциальной экономической или
|
||||||
|
социальной выгоды Общества или ценности для ОАП Платформы и, в таком случае,
|
||||||
|
Коммиты членов Авторского коллектива и их ОАП, рассчитываемый в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашения, высвобождаются из
|
||||||
|
ответственного хранения в Обществе, в соответствии с п.5.4. настоящего
|
||||||
|
Пользовательского Соглашения, и передаются им в овеществленном виде на
|
||||||
|
электронных или бумажных носителях ОАП для дальнейшего личного использования.
|
||||||
|
11 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
8.1.22. Презентация Модели используется Авторским Коллективом для представления
|
||||||
|
Инвесторам и Координаторам с целью привлечения ресурсов (Денежных Средств) в
|
||||||
|
Проект, в соответствии с решениями Совета Общества, как это указано в п. 8.1.16.
|
||||||
|
настоящего Пользовательского Соглашения.
|
||||||
|
8.1.23. В случае фактического отсутствия или недостаточности материальных ресурсов
|
||||||
|
(Денежных средств) для реализации Минимального Продукта, Мастер незамедлительно
|
||||||
|
информирует Совет Общества, который правомочен принять решение о переносе
|
||||||
|
Проекта в статус ожидания, как это обусловлено п. 8.1.21.а) настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
8.2. Второй Этап - Создание Компонента - Минимального Продукта, а также его
|
||||||
|
тестирование на соответствие целевым параметрам Модели
|
||||||
|
8.2.1. Исходя из Модели, составленной в соответствии с п.8.1.16. настоящего
|
||||||
|
Пользовательского Соглашения, Авторский коллектив определяет параметры
|
||||||
|
Минимального Продукта, а Мастер формулирует и распределяет задачи Исполнителям.
|
||||||
|
8.2.2. Мастер и Исполнители согласовывают сроки выполнения задач.
|
||||||
|
8.2.3. Исполнители, в соответствии с указаниями Мастера, предоставляют Коммиты. Мастер по
|
||||||
|
согласованию с Авторским коллективом принимает или не принимает Коммиты
|
||||||
|
Исполнителей, фиксируя время исполнения задач.
|
||||||
|
8.2.4. Мастер координирует деятельность по подготовке и своевременной передаче в Общество
|
||||||
|
Коммитов Исполнителей и ОАП Авторского коллектива, рассчитываемый в соответствии
|
||||||
|
с п.5.3.3. настоящего Пользовательского Соглашения.
|
||||||
|
8.2.5. Авторский коллектив осуществляет авторский надзор и, при необходимости,
|
||||||
|
корректирует Модель и, соответственно, ход создания Минимального Продукта.
|
||||||
|
8.2.6. При готовности Минимального Продукта, Авторский коллектив представляет его в Совет
|
||||||
|
Общества на согласование, а Мастер проводит презентацию Минимального Продукта на
|
||||||
|
заседании Совета Общества.
|
||||||
|
8.2.7. Совет Общества рассматривает Минимальный Продукт на предмет функциональности и
|
||||||
|
соответствия Модели с учетом изменений, а также их целесообразности, произошедших
|
||||||
|
за время реализации Минимального Продукта.
|
||||||
|
8.2.8. При согласовании Советом Общества Минимального Продукта, Совет определяет состав
|
||||||
|
пайщиков Общества для организации тестирования.
|
||||||
|
8.2.9. Совет Общества может одобрить Минимальный Продукт частично и предложить
|
||||||
|
доработку Минимального Продукта, если Минимальный продукт не соответствует
|
||||||
|
утвержденной Модели, заявленным целям и функциональности.
|
||||||
|
8.2.10. Авторский коллектив при проведении тестирования Минимального Продукта
|
||||||
|
осуществляет мониторинг его функциональности и соответствия поставленным целям и
|
||||||
|
запросам пайщиков Общества, с которыми проводится тестирование, а при обнаружении
|
||||||
|
недочетов, в том числе и через обратную связь, корректирует Модель и привлекает
|
||||||
|
Исполнителей для исправлений и корректировок Минимального Продукта. Совет
|
||||||
|
Общества вправе предоставить полномочия инспектора одному из членов Совета
|
||||||
|
Общества или Ревизору Общества для проведения самостоятельной оценки соответствия
|
||||||
|
Минимального Продукта заявленным целям, запросам пайщиков Общества и
|
||||||
|
функциональности (далее “Инспектор”).
|
||||||
|
8.2.11. При обнаружении критических несоответствий запросам пайщиков в функциональности
|
||||||
|
Минимального Продукта и его целесообразности, Мастер и/ или Инспектор своим
|
||||||
|
заявлением незамедлительно уведомляет об этом Совет Общества.
|
||||||
|
8.2.12. При наступлении обстоятельств, указанных в п. 8.2.11 настоящего Пользовательского
|
||||||
|
Соглашения, Совет Общества оценивает степень несоответствий Минимального
|
||||||
|
Продукта поставленным целям и запросам пайщиков Общества и, на этом основании,
|
||||||
|
12 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
а) выносит решение о переработке Минимального Продукта и/или Модели, при этом,
|
||||||
|
Совет Общества правомочен назначить нового Мастера, с поручением сформировать
|
||||||
|
новый состав Исполнителей и/или Авторского Коллектива, при этом, в отношении
|
||||||
|
Коммитов предыдущего состава Исполнителей и ОАП Авторского коллектива,
|
||||||
|
рассчитываемого в соответствии с п.5.3.3. настоящего Пользовательского Соглашения,
|
||||||
|
действуют условия, изложенные в п. 8.1.21.б). настоящего Пользовательского
|
||||||
|
Соглашения;
|
||||||
|
б) принимает решение о переносе Проекта в статус ожидания, при этом, дальнейшие
|
||||||
|
действия по Проекту не производятся до момента изменения статуса Проекта Советом
|
||||||
|
Общества, при этом Коммиты Исполнителей и ОАП членов Авторского коллектива,
|
||||||
|
рассчитываемые в соответствии с п.5.3.3. настоящего Пользовательского Соглашения,
|
||||||
|
как их Имущество, остаются на ответственном хранении в Обществе, согласно п.5.4.
|
||||||
|
настоящего Пользовательского Соглашения как предмет для последующих
|
||||||
|
имущественных взносов в Общество при условии изменения статуса Проекта на
|
||||||
|
“Активный”;
|
||||||
|
в) решает закрыть Проект, при этом, в отношении Коммитов предыдущих составов
|
||||||
|
Исполнителей и ОАП Авторского коллектива, рассчитываемых в соответствии с
|
||||||
|
п.5.3.3. настоящего Пользовательского Соглашения, действуют порядок, изложенный в
|
||||||
|
п. 8.1.21.б). настоящего Пользовательского Соглашения.
|
||||||
|
8.2.13. Если объективные результаты тестирования Минимального Продукта, в т.ч.
|
||||||
|
подтвержденные Инспектором, в случае назначения такового Советом Общества,
|
||||||
|
удовлетворяют запросам пайщиков Общества в Продукте, Продукт соответствует
|
||||||
|
заявленным в Концепции и Модели целям (с учетом доработок в процессе тестирования
|
||||||
|
Минимального Продукта), полезности, функциональности, а также отзывах в обратной
|
||||||
|
связи пайщиков, Авторский коллектив формулирует задачи и план по созданию рабочей
|
||||||
|
версии Продукта в соответствии с п. 8.3.1. и 8.3.2. настоящего Пользовательского
|
||||||
|
Соглашения и представляет его на рассмотрение в Совет Общества.
|
||||||
|
8.2.14. Совет Общества проводит анализ собственных ресурсных возможностей Общества и
|
||||||
|
рисков по реализации рабочей версии Продукта согласно результатам, описанным в п.
|
||||||
|
8.3.1. и 8.3.2. настоящего Пользовательского Соглашения, определяет размер ресурсов
|
||||||
|
для дополнительного привлечения, согласовывает с Авторским коллективом и Мастером
|
||||||
|
план мероприятий для привлечения ресурсов через представление Минимального
|
||||||
|
Продукта потенциальным Исполнителям, Инвесторам и Координаторам.
|
||||||
|
8.2.15. При подтверждении Советом Общества соответствия Минимального Продукта
|
||||||
|
заявленным целям, полезности, функциональности и запросам пайщиков Общества по
|
||||||
|
обратной связи, Проект переходит на следующий этап, а Председатель Совета Общества
|
||||||
|
информирует пайщиков Общества о статусе Проекта и публикует запрос на привлечение
|
||||||
|
ресурсов в Трекере.
|
||||||
|
8.3. Третий Этап - создание рабочей версии Продукта и масштабирование его применения
|
||||||
|
8.3.1. На основе анализа обратной связи от пайщиков Общества по тестированию
|
||||||
|
Минимального Продукта и возможной оптимизации и корректировок Модели, Авторский
|
||||||
|
коллектив формулирует следующее:
|
||||||
|
8.3.1.1. функциональные и технологические параметры рабочей версии Продукта;
|
||||||
|
8.3.1.2. правила использования Продукта пайщиками:
|
||||||
|
8.3.1.2.1. экономические - стоимостные параметры; использования, формат
|
||||||
|
использования (подписка, передача неисключительных прав и т.п.);
|
||||||
|
8.3.1.2.2. технологические (технические требования, инструкции по эксплуатации
|
||||||
|
Продукта);
|
||||||
|
8.3.1.2.3. юридические (положения и договорно-правовая база использования
|
||||||
|
Продукта);
|
||||||
|
13 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
8.3.1.3. требования к презентационным материалам по продвижению Продукта на ресурсах
|
||||||
|
Общества и Платформы, а также привлечения дополнительных материальных
|
||||||
|
ресурсов (Денежных средств) в разработку рабочей версии Продукта.
|
||||||
|
8.3.2. В соответствии с п. 8.3.1. Мастер и Авторский коллектив формулируют План подготовки,
|
||||||
|
продвижения рабочей версии Продукта и привлечения дополнительных материальных
|
||||||
|
ресурсов в создание рабочей версии Продукта (далее “План”), и представляет его в Совет
|
||||||
|
Общества на согласование.
|
||||||
|
8.3.3. При получении одобрения Советом Общества Плана в соответствии с п. 8.3.2, Мастер
|
||||||
|
осуществляет подбор Исполнителей, распределяет задачи и согласовывает с ними сроки
|
||||||
|
их выполнения в рамках утвержденного Плана, а также координирует деятельность
|
||||||
|
Авторского коллектива и Координаторов по привлечению дополнительных материальных
|
||||||
|
ресурсов, согласно Плана, если таковые определены как необходимые, в соответствии с
|
||||||
|
п.8.3.2. настоящего Пользовательского Соглашения.
|
||||||
|
8.3.4. В случае фактического отсутствия или недостаточности материальных ресурсов
|
||||||
|
(Денежных средств) для реализации Плана, Мастер незамедлительно информирует Совет
|
||||||
|
Общества, который правомочен принять решение о переносе Проекта в статус ожидания,
|
||||||
|
как это обусловлено п. 8.2.12.б) настоящего Пользовательского Соглашения.
|
||||||
|
8.3.5. Мастер координирует деятельность Исполнителей и Авторского коллектива по
|
||||||
|
подготовке и своевременной передаче Коммитов Исполнителей и ОАП Авторского
|
||||||
|
коллектива в Общество, рассчитываемых в соответствии с п.5.3.3. настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
8.3.6. Мастер по согласованию с Авторским коллективом принимает или не принимает
|
||||||
|
Коммиты Исполнителей, фиксируя время исполнения ими задач.
|
||||||
|
8.3.7. Совет Общества может одобрить План целиком или частично, а также предложить его
|
||||||
|
доработку с повторным направлением в Совет для согласования.
|
||||||
|
8.3.8. При выполнении утвержденного Плана, Мастер презентует рабочую версию Продукта
|
||||||
|
Совету Общества на рассмотрение.
|
||||||
|
8.3.9. Совет Общества рассматривает рабочую версию Продукта, его функциональные и
|
||||||
|
технологические параметры, пакет правил его использования и подготовленные
|
||||||
|
презентационные материалы для продвижения.
|
||||||
|
8.3.10. При согласовании Советом Общества рабочей версии Продукта, включая его
|
||||||
|
функциональные и технологические параметры, пакет правил использования и
|
||||||
|
подготовленные презентационные материалы для продвижения, рабочая версия Продукта
|
||||||
|
поступает в эксплуатацию в соответствии с условиями его продвижения, указанных в
|
||||||
|
утвержденном Плане, а Проект получает статус завершенного.
|
||||||
|
8.3.11. Совет Общества, также принимает решения по организации группы постоянного
|
||||||
|
технического, методологического и юридического сопровождения эксплуатации рабочей
|
||||||
|
версии Продукта из числа Исполнителей и членов Авторского коллектива (далее “ Группа
|
||||||
|
сопровождения”), по представлению и последующей координации Мастера.
|
||||||
|
8.3.12. Группа сопровождения, в лице Мастера, на основе получаемой обратной связи от
|
||||||
|
пайщиков Общества, может инициировать отдельный Проект по развитию Продукта и
|
||||||
|
созданию его версий в соответствии с процедурой, изложенной в настоящем
|
||||||
|
Пользовательском Соглашении.
|
||||||
|
9. Займы
|
||||||
|
9.1. Ввиду этапности и временной продолжительности Проекта, как это описано в настоящем
|
||||||
|
Регламенте, предоставление займов производится следующим категориям Участников:
|
||||||
|
Исполнителям, членам Авторского коллектива и Координаторам (далее “Заемщики”) и
|
||||||
|
является необходимым механизмом для обеспечения непрерывности Проекта, как процесса.
|
||||||
|
9.2. В рамках деятельности, регулируемых настоящим Пользовательским Соглашением, займы,
|
||||||
|
выдаваемые Заемщикам, являются беспроцентными.
|
||||||
|
14 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
9.3. Выдача займов в рамках Проекта регулируется настоящим Пользовательским Соглашением и
|
||||||
|
соответствует Положению Общества о предоставлении займов пайщикам.
|
||||||
|
9.4. Ресурсами для обеспечения займов Заемщикам, являются материальные ресурсы (Денежные
|
||||||
|
средства) Общества, формируемые за счет паевых и членских взносов пайщиков и, в основном,
|
||||||
|
за счет целевых взносов на Проект и/или его Компоненты Денежными средствами
|
||||||
|
Инвесторами, в т.ч. привлекаемыми Координаторами, доступность которых обусловлена п.
|
||||||
|
9.11. настоящего Пользовательского Соглашения.
|
||||||
|
9.5. Размер выдаваемых займов ограничен объемом материальных ресурсов (Денежных средств)
|
||||||
|
согласно п. 9.4. настоящего Пользовательского Соглашения.
|
||||||
|
9.6. Максимальный объем займов для Заемщиков ограничен 50% от стоимости ОАП для каждой из
|
||||||
|
категорий Исполнителя, члена Авторского коллектива и Координатора, рассчитываемых в
|
||||||
|
соответствии с разделом 5 настоящего Пользовательского Соглашения.
|
||||||
|
9.7. Обеспечением для выдачи беспроцентных займов для Исполнителей являются их Коммиты,
|
||||||
|
стоимость которых как ОАП рассчитывается в соответствии с пп.5.3.1. и 5.3.2. настоящего
|
||||||
|
Пользовательского Соглашения, а для членов Авторского коллектива их ОАП, рассчитываемых
|
||||||
|
в соответствии с п.5.3.3. настоящего Пользовательского Соглашения, находящиеся в Обществе
|
||||||
|
в соответствии с изложенным в п.5.4. настоящего Пользовательского Соглашения.
|
||||||
|
9.8. Обеспечением для выдачи беспроцентных займов Координаторам, является поручительства
|
||||||
|
Инвестора/ов, привлеченных Координаторами в Проект.
|
||||||
|
9.9. Возврат займов Заемщиками может производиться новацией и, в таком случае, осуществляется
|
||||||
|
паевыми взносами Имуществом - долями ОАП, рассчитываемыми в соответствии с разделом 6
|
||||||
|
настоящего Пользовательского Соглашения по завершению каждого из этапов Проекта,
|
||||||
|
изложенных в разделе 8 настоящего Пользовательского Соглашения.
|
||||||
|
9.10. Для случаев, описанных в п. 8.1.10., 8.1.21.б), 8.2.12.а) и в), настоящего Пользовательского
|
||||||
|
Соглашения, займы, полученные Заемщиками, остаются задолженностью Заемщиков перед
|
||||||
|
Обществом и являются отдельным предметом урегулирования между ними и Обществом в
|
||||||
|
соответствии с Уставом Общества и его отдельными Положениями, включая Положение
|
||||||
|
Общества о предоставлении займов пайщикам.
|
||||||
|
9.11. Мастер информирует Заемщиков о факте доступности получения займов и размере займа для
|
||||||
|
каждого Заемщика, исходя из условий, изложенных в п. 9.5. - 9.8. настоящего
|
||||||
|
Пользовательского Соглашения.
|
||||||
|
9.12. Предоставление займов Заемщикам производятся по заявлениям в Совет Общества, которые
|
||||||
|
рассматривается в течение 5 (пяти) дней с даты направления заявления по отдельному
|
||||||
|
соглашению.
|
||||||
|
10. Права и Обязанности
|
||||||
|
10.1. Участник имеет право:
|
||||||
|
10.1.1. вносить Паевой взнос в неограниченном размере стоимости;
|
||||||
|
10.1.2. вносить Паевой взнос неограниченное количество раз;
|
||||||
|
10.1.3. возвращать Паевой взнос частично в соответствии с условиями ЦПП, Договора УХД и
|
||||||
|
его Приложений или полностью при прекращении участия в настоящей ЦПП или выходе из
|
||||||
|
состава пайщиков Общества;
|
||||||
|
10.1.4. предлагать Имущество в качестве обеспечения для получения беспроцентного займа от
|
||||||
|
Общества в соответствии с условиями настоящего Пользовательского Соглашения.
|
||||||
|
10.2. Участник обязан:
|
||||||
|
10.2.1. нести личную и иную предусмотренную Российским законодательством
|
||||||
|
ответственность за соответствие характеристик Имущества, указанных им при предложении
|
||||||
|
этого Имущества к внесению Паевым взносом в Общество или предложенного Обществу в
|
||||||
|
качестве обеспечения для получения беспроцентного займа;
|
||||||
|
15 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
10.2.2. при получении Допуска к Проекту или его Компоненту осуществить действия в
|
||||||
|
соответствии с условиями п. 3.11.1.3. настоящего Пользовательского Соглашения, за
|
||||||
|
исключением случая, указанного в п. 3.13. настоящего Пользовательского Соглашения.
|
||||||
|
10.2.3. нести ответственность, связанную с его членством в Обществе, определенную Уставом
|
||||||
|
Общества, положениями, Договором УХД и настоящим Пользовательским Соглашением.
|
||||||
|
10.3. Общество обязано:
|
||||||
|
10.3.1. соблюдать условия ЦПП и права Участника, в соответствии с настоящим
|
||||||
|
Пользовательским соглашением, документами Общества и действующим законодательством
|
||||||
|
РФ;
|
||||||
|
10.3.2. возвращать Участнику внесенные им Паевые взносы в соответствии с условиями
|
||||||
|
настоящего Пользовательского соглашения, Договора УХД и его Приложений.
|
||||||
|
10.4. Общество имеет право:
|
||||||
|
10.4.1. аннулировать участие в ЦПП Участника, который дважды в течение 1 (одного)
|
||||||
|
календарного года отклонил или игнорировал Допуск согласно п.3.11.1.3 настоящего
|
||||||
|
Пользовательского Соглашения без предъявления уважительных причин в сроки указанные в
|
||||||
|
Допуске;
|
||||||
|
10.4.2. аннулировать участие в ЦПП Участника, при отсутствии Откликов на Предложения в
|
||||||
|
течение 1 (одного) календарного года с даты акцепта настоящего Пользовательского
|
||||||
|
Соглашения;
|
||||||
|
10.4.3. аннулировать Допуск Участника по представлению Мастера на любом из этапов
|
||||||
|
Проекта и/или его Компонентов, а также приостановить участие в ЦПП, в случае
|
||||||
|
несоответствия заявленных компетенций Участника, акцептовавшего настоящее
|
||||||
|
Пользовательское Соглашение.
|
||||||
|
10.4.4. вернуть Имущество Участника, принятое Обществом на рассмотрение к принятию в
|
||||||
|
качестве Паевого взноса или в качестве обеспечения для предоставления беспроцентного
|
||||||
|
займа в рамках настоящего Пользовательского Соглашения без каких-либо обязательств
|
||||||
|
Общества.
|
||||||
|
11. Форс-мажорные обстоятельства
|
||||||
|
11.1. В случае вступления в силу таких изменений в законодательство РФ, которые повлекут за
|
||||||
|
собой несоответствие им условий ЦПП, Общество может внести в ЦПП такие изменения, при
|
||||||
|
которых условия ЦПП соответствуют действующему на территории РФ законодательству.
|
||||||
|
11.2. Изменения законодательства РФ, которые повлекут за собой несоответствие им условий
|
||||||
|
настоящего Пользовательского соглашения, считаются форс-мажорными обстоятельствами для
|
||||||
|
Общества.
|
||||||
|
11.3. Форс-мажорными являются также все случаи, которые являются форс мажорными при
|
||||||
|
гражданском обороте в том числе: повреждение имущества через пожар, затопление, порча
|
||||||
|
имущества в связи и отключением доступа электроэнергии не по вине Общества, кража
|
||||||
|
имущества, порча имущества через вандальные действия, гражданские конфликты, военные
|
||||||
|
действия, комендантский час, объявленный карантин, стихийные бедствия и др.
|
||||||
|
11.4. При наступлении форс-мажорных случаев или внесении изменений в условия ЦПП, Общество
|
||||||
|
сразу уведомляет о них Участников.
|
||||||
|
12. Прочие условия
|
||||||
|
12.1. Под Сайтом в настоящем Пользовательском соглашении также понимаются прочие
|
||||||
|
программные продукты и программное обеспечение, реализованные с помощью
|
||||||
|
информационных технологий, первоисточник для скачивания и установки, ссылки для
|
||||||
|
открытия и/или запуска которых размещены на Сайте.
|
||||||
|
16 | Страница Пользовательское соглашение ЦПП «ГЕНЕР АЦИЯ»
|
||||||
|
12.2. Общество и Участник в части их взаимоотношений, условия которых не предусмотрены
|
||||||
|
настоящим Пользовательским соглашением, руководствуются взаимными договорами,
|
||||||
|
внутренними нормативными документами Общества и законодательством Российской
|
||||||
|
Федерации.
|
||||||
|
12.3. Изменения и дополнения вносятся в настоящее Пользовательское соглашения и Положение
|
||||||
|
Общества о ЦПП решением Совета Общества с учетом соблюдения прав ранее принявших его
|
||||||
|
условия Участников. При этом изменения условий ЦПП, принятые решениями Совета
|
||||||
|
Общества и, возможность внесения которых прямо предусмотрена настоящим
|
||||||
|
Пользовательским соглашением (п. 12.1.), ущемляющими права Участников в ЦПП,
|
||||||
|
изменениями не считаются и основанием для предъявления претензий Обществу быть не
|
||||||
|
могут. Участники, ранее принявшие условия ЦПП, изложенные в настоящем
|
||||||
|
Пользовательском соглашении, обязаны принять условия нового Положения Общества о ЦПП,
|
||||||
|
либо отказаться от участия в ЦПП.
|
||||||
|
|
||||||
|
“СОГЛАСЕН”
|
||||||
|
_____________________________ ____________________ ___________________
|
||||||
|
ФИО Подпись Дата
|
||||||
File diff suppressed because one or more lines are too long
@@ -23,6 +23,8 @@ export * as ReturnByAssetAct from './802.ReturnByAssetAct'
|
|||||||
export * as ReturnByMoney from './900.ReturnByMoney'
|
export * as ReturnByMoney from './900.ReturnByMoney'
|
||||||
export * as ReturnByMoneyDecision from './901.ReturnByMoneyDecision'
|
export * as ReturnByMoneyDecision from './901.ReturnByMoneyDecision'
|
||||||
|
|
||||||
|
export * as GeneratorOfferTemplate from './995.GeneratorOfferTemplate'
|
||||||
|
export * as GeneratorOffer from './996.GeneratorOffer'
|
||||||
export * as CapitalizationAgreement from './1000.CapitalizationAgreement'
|
export * as CapitalizationAgreement from './1000.CapitalizationAgreement'
|
||||||
export * as BlagorostProvision from './998.BlagorostProvision'
|
export * as BlagorostProvision from './998.BlagorostProvision'
|
||||||
export * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
export * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
||||||
|
|||||||
+4
-1
@@ -9,5 +9,8 @@
|
|||||||
"i18n-ally.localesPaths": ["src/i18n"],
|
"i18n-ally.localesPaths": ["src/i18n"],
|
||||||
"typescript.format.enable": true,
|
"typescript.format.enable": true,
|
||||||
"typescript.format.indentSwitchCase": false,
|
"typescript.format.indentSwitchCase": false,
|
||||||
"typescript.validate.enable": true
|
"typescript.validate.enable": true,
|
||||||
|
"[vue]": {
|
||||||
|
"editor.defaultFormatter": "Vue.volar"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -23,6 +23,7 @@ export function useMakeClearance() {
|
|||||||
): Promise<IMakeClearanceOutput> => {
|
): Promise<IMakeClearanceOutput> => {
|
||||||
isLoading.value = true;
|
isLoading.value = true;
|
||||||
try {
|
try {
|
||||||
|
console.log('input', input)
|
||||||
const result = await api.makeClearance(input);
|
const result = await api.makeClearance(input);
|
||||||
return result;
|
return result;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import { DraftContract } from 'cooptypes'
|
||||||
|
import { GeneratorOfferTemplate } from '../Templates'
|
||||||
|
import { DocFactory } from '../Factory'
|
||||||
|
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||||
|
import type { MongoDBConnector } from '../Services/Databazor'
|
||||||
|
|
||||||
|
export { GeneratorOfferTemplate as Template } from '../Templates'
|
||||||
|
|
||||||
|
export class Factory extends DocFactory<GeneratorOfferTemplate.Action> {
|
||||||
|
constructor(storage: MongoDBConnector) {
|
||||||
|
super(storage)
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateDocument(data: GeneratorOfferTemplate.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||||
|
let template: ITemplate<GeneratorOfferTemplate.Model>
|
||||||
|
|
||||||
|
if (process.env.SOURCE === 'local') {
|
||||||
|
template = GeneratorOfferTemplate.Template
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
template = await this.getTemplate(DraftContract.contractName.production, GeneratorOfferTemplate.registry_id, data.block_num)
|
||||||
|
}
|
||||||
|
|
||||||
|
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||||
|
const vars = await this.getVars(data.coopname)
|
||||||
|
const coop = await this.getCooperative(data.coopname)
|
||||||
|
const user = await this.getUser(data.username, data.block_num)
|
||||||
|
const common_user = this.getCommonUser(user)
|
||||||
|
|
||||||
|
const combinedData: GeneratorOfferTemplate.Model = {
|
||||||
|
meta,
|
||||||
|
coop,
|
||||||
|
vars,
|
||||||
|
common_user,
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.validate(combinedData, template.model)
|
||||||
|
|
||||||
|
const translation = template.translations[meta.lang]
|
||||||
|
const document: IGeneratedDocument = await this.generatePDF('', template.context, combinedData, translation, meta, options?.skip_save)
|
||||||
|
|
||||||
|
return document
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import { DraftContract } from 'cooptypes'
|
||||||
|
import { GeneratorOffer } from '../Templates'
|
||||||
|
import { DocFactory } from '../Factory'
|
||||||
|
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||||
|
import type { MongoDBConnector } from '../Services/Databazor'
|
||||||
|
|
||||||
|
export { GeneratorOffer as Template } from '../Templates'
|
||||||
|
|
||||||
|
export class Factory extends DocFactory<GeneratorOffer.Action> {
|
||||||
|
constructor(storage: MongoDBConnector) {
|
||||||
|
super(storage)
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateDocument(data: GeneratorOffer.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||||
|
let template: ITemplate<GeneratorOffer.Model>
|
||||||
|
|
||||||
|
if (process.env.SOURCE === 'local') {
|
||||||
|
template = GeneratorOffer.Template
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
template = await this.getTemplate(DraftContract.contractName.production, GeneratorOffer.registry_id, data.block_num)
|
||||||
|
}
|
||||||
|
|
||||||
|
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||||
|
const vars = await this.getVars(data.coopname)
|
||||||
|
const coop = await this.getCooperative(data.coopname)
|
||||||
|
const user = await this.getUser(data.username, data.block_num)
|
||||||
|
const common_user = this.getCommonUser(user)
|
||||||
|
|
||||||
|
const combinedData: GeneratorOffer.Model = {
|
||||||
|
meta,
|
||||||
|
coop,
|
||||||
|
vars,
|
||||||
|
common_user,
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.validate(combinedData, template.model)
|
||||||
|
|
||||||
|
const translation = template.translations[meta.lang]
|
||||||
|
const document: IGeneratedDocument = await this.generatePDF('', template.context, combinedData, translation, meta, options?.skip_save)
|
||||||
|
|
||||||
|
return document
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -65,6 +65,8 @@ export * as AnnualGeneralMeetingVotingBallot from './303.AnnualGeneralMeetingVot
|
|||||||
export * as AnnualGeneralMeetingDecision from './304.AnnualGeneralMeetingDecision'
|
export * as AnnualGeneralMeetingDecision from './304.AnnualGeneralMeetingDecision'
|
||||||
|
|
||||||
// ЦПП БЛАГОРОСТ
|
// ЦПП БЛАГОРОСТ
|
||||||
|
export * as GeneratorOfferTemplate from './995.GeneratorOfferTemplate'
|
||||||
|
export * as GeneratorOffer from './996.GeneratorOffer'
|
||||||
export * as BlagorostProvision from './998.BlagorostProvision'
|
export * as BlagorostProvision from './998.BlagorostProvision'
|
||||||
export * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
export * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
||||||
export * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
export * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import type { JSONSchemaType } from 'ajv'
|
||||||
|
import { Cooperative } from 'cooptypes'
|
||||||
|
import type { ITemplate } from '../Interfaces'
|
||||||
|
import { IMetaJSONSchema } from '../Schema/MetaSchema'
|
||||||
|
import { CooperativeSchema, VarsSchema, CommonUserSchema } from '../Schema'
|
||||||
|
|
||||||
|
export const registry_id = Cooperative.Registry.GeneratorOfferTemplate.registry_id
|
||||||
|
|
||||||
|
// Модель действия для генерации
|
||||||
|
export type Action = Cooperative.Registry.GeneratorOfferTemplate.Action
|
||||||
|
|
||||||
|
// Модель данных
|
||||||
|
export type Model = Cooperative.Registry.GeneratorOfferTemplate.Model
|
||||||
|
|
||||||
|
// Схема для сверки
|
||||||
|
export const Schema: JSONSchemaType<Model> = {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
meta: IMetaJSONSchema,
|
||||||
|
coop: CooperativeSchema,
|
||||||
|
vars: VarsSchema,
|
||||||
|
common_user: CommonUserSchema,
|
||||||
|
},
|
||||||
|
required: ['meta', 'coop', 'vars', 'common_user'],
|
||||||
|
additionalProperties: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Template: ITemplate<Model> = {
|
||||||
|
title: Cooperative.Registry.GeneratorOfferTemplate.title,
|
||||||
|
description: Cooperative.Registry.GeneratorOfferTemplate.description,
|
||||||
|
model: Schema,
|
||||||
|
context: Cooperative.Registry.GeneratorOfferTemplate.context,
|
||||||
|
translations: Cooperative.Registry.GeneratorOfferTemplate.translations,
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import type { JSONSchemaType } from 'ajv'
|
||||||
|
import { Cooperative } from 'cooptypes'
|
||||||
|
import type { ITemplate } from '../Interfaces'
|
||||||
|
import { IMetaJSONSchema } from '../Schema/MetaSchema'
|
||||||
|
import { CooperativeSchema, VarsSchema, CommonUserSchema } from '../Schema'
|
||||||
|
|
||||||
|
export const registry_id = Cooperative.Registry.GeneratorOffer.registry_id
|
||||||
|
|
||||||
|
// Модель действия для генерации
|
||||||
|
export type Action = Cooperative.Registry.GeneratorOffer.Action
|
||||||
|
|
||||||
|
// Модель данных
|
||||||
|
export type Model = Cooperative.Registry.GeneratorOffer.Model
|
||||||
|
|
||||||
|
// Схема для сверки
|
||||||
|
export const Schema: JSONSchemaType<Model> = {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
meta: IMetaJSONSchema,
|
||||||
|
coop: CooperativeSchema,
|
||||||
|
vars: VarsSchema,
|
||||||
|
common_user: CommonUserSchema,
|
||||||
|
},
|
||||||
|
required: ['meta', 'coop', 'vars', 'common_user'],
|
||||||
|
additionalProperties: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Template: ITemplate<Model> = {
|
||||||
|
title: Cooperative.Registry.GeneratorOffer.title,
|
||||||
|
description: Cooperative.Registry.GeneratorOffer.description,
|
||||||
|
model: Schema,
|
||||||
|
context: Cooperative.Registry.GeneratorOffer.context,
|
||||||
|
translations: Cooperative.Registry.GeneratorOffer.translations,
|
||||||
|
}
|
||||||
@@ -20,6 +20,10 @@ export * as ReturnByAssetAct from './802.returnByAssetAct'
|
|||||||
export * as ReturnByMoney from './900.returnByMoney'
|
export * as ReturnByMoney from './900.returnByMoney'
|
||||||
export * as ReturnByMoneyDecision from './901.ReturnByMoneyDecision'
|
export * as ReturnByMoneyDecision from './901.ReturnByMoneyDecision'
|
||||||
|
|
||||||
|
// Документы ЦПП ГЕНЕРАТОР
|
||||||
|
export * as GeneratorOfferTemplate from './995.GeneratorOfferTemplate'
|
||||||
|
export * as GeneratorOffer from './996.GeneratorOffer'
|
||||||
|
|
||||||
// Документы ЦПП БЛАГОРОСТ
|
// Документы ЦПП БЛАГОРОСТ
|
||||||
export * as BlagorostProvision from './998.BlagorostProvision'
|
export * as BlagorostProvision from './998.BlagorostProvision'
|
||||||
export * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
export * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ import * as AnnualGeneralMeetingDecision from './304.AnnualGeneralMeetingDecisio
|
|||||||
import * as BlagorostProvision from './998.BlagorostProvision'
|
import * as BlagorostProvision from './998.BlagorostProvision'
|
||||||
import * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
import * as BlagorostOfferTemplate from './999.BlagorostOfferTemplate'
|
||||||
import * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
import * as GenerationAgreementTemplate from './997.GenerationAgreementTemplate'
|
||||||
|
import * as GeneratorOfferTemplate from './995.GeneratorOfferTemplate'
|
||||||
|
import * as GeneratorOffer from './996.GeneratorOffer'
|
||||||
import * as BlagorostOffer from './1000.CapitalizationAgreement'
|
import * as BlagorostOffer from './1000.CapitalizationAgreement'
|
||||||
|
|
||||||
export const Registry = {
|
export const Registry = {
|
||||||
@@ -91,6 +93,8 @@ export const Registry = {
|
|||||||
802: ReturnByAssetAct,
|
802: ReturnByAssetAct,
|
||||||
900: ReturnByMoney,
|
900: ReturnByMoney,
|
||||||
901: ReturnByMoneyDecision,
|
901: ReturnByMoneyDecision,
|
||||||
|
995: GeneratorOfferTemplate,
|
||||||
|
996: GeneratorOffer,
|
||||||
997: GenerationAgreementTemplate,
|
997: GenerationAgreementTemplate,
|
||||||
998: BlagorostProvision,
|
998: BlagorostProvision,
|
||||||
999: BlagorostOfferTemplate,
|
999: BlagorostOfferTemplate,
|
||||||
|
|||||||
@@ -100,6 +100,10 @@ export class Generator implements IGenerator {
|
|||||||
[Actions.ReturnByMoney.Template.registry_id]: new Actions.ReturnByMoney.Factory(this.storage), // 900
|
[Actions.ReturnByMoney.Template.registry_id]: new Actions.ReturnByMoney.Factory(this.storage), // 900
|
||||||
[Actions.ReturnByMoneyDecision.Template.registry_id]: new Actions.ReturnByMoneyDecision.Factory(this.storage), // 901
|
[Actions.ReturnByMoneyDecision.Template.registry_id]: new Actions.ReturnByMoneyDecision.Factory(this.storage), // 901
|
||||||
|
|
||||||
|
// ЦПП ГЕНЕРАТОР
|
||||||
|
[Actions.GeneratorOfferTemplate.Template.registry_id]: new Actions.GeneratorOfferTemplate.Factory(this.storage), // 995
|
||||||
|
[Actions.GeneratorOffer.Template.registry_id]: new Actions.GeneratorOffer.Factory(this.storage), // 996
|
||||||
|
|
||||||
// ЦПП БЛАГОРОСТ
|
// ЦПП БЛАГОРОСТ
|
||||||
[Actions.GenerationAgreementTemplate.Template.registry_id]: new Actions.GenerationAgreementTemplate.Factory(this.storage), // 997
|
[Actions.GenerationAgreementTemplate.Template.registry_id]: new Actions.GenerationAgreementTemplate.Factory(this.storage), // 997
|
||||||
[Actions.BlagorostProvision.Template.registry_id]: new Actions.BlagorostProvision.Factory(this.storage), // 998
|
[Actions.BlagorostProvision.Template.registry_id]: new Actions.BlagorostProvision.Factory(this.storage), // 998
|
||||||
|
|||||||
@@ -8,6 +8,25 @@ beforeAll(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('тест генератора документов с registry_id >= 1000', async () => {
|
describe('тест генератора документов с registry_id >= 1000', async () => {
|
||||||
|
// Шаблоны документов ЦПП ГЕНЕРАТОР
|
||||||
|
it('генерируем шаблон пользовательского соглашения (оферты) по участию в целевой потребительской программе "ГЕНЕРАТОР"', async () => {
|
||||||
|
await testDocumentGeneration({
|
||||||
|
registry_id: 995,
|
||||||
|
coopname: 'voskhod',
|
||||||
|
username: 'ant',
|
||||||
|
lang: 'ru',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('генерируем пользовательское соглашение (оферту) по участию в целевой потребительской программе "ГЕНЕРАТОР"', async () => {
|
||||||
|
await testDocumentGeneration({
|
||||||
|
registry_id: 996,
|
||||||
|
coopname: 'voskhod',
|
||||||
|
username: 'ant',
|
||||||
|
lang: 'ru',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
// Шаблоны документов
|
// Шаблоны документов
|
||||||
it('генерируем шаблон договора участия в хозяйственной деятельности', async () => {
|
it('генерируем шаблон договора участия в хозяйственной деятельности', async () => {
|
||||||
await testDocumentGeneration({
|
await testDocumentGeneration({
|
||||||
|
|||||||
Generated
+133
-1
@@ -236,6 +236,9 @@ importers:
|
|||||||
'@novu/api':
|
'@novu/api':
|
||||||
specifier: ^1.4.0
|
specifier: ^1.4.0
|
||||||
version: 1.4.0(zod@3.23.8)
|
version: 1.4.0(zod@3.23.8)
|
||||||
|
'@octokit/rest':
|
||||||
|
specifier: ^22.0.1
|
||||||
|
version: 22.0.1
|
||||||
'@sentry/nestjs':
|
'@sentry/nestjs':
|
||||||
specifier: ^10.32.1
|
specifier: ^10.32.1
|
||||||
version: 10.32.1(@nestjs/common@10.4.6(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@10.4.6(@nestjs/common@10.4.6(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@10.4.6)(encoding@0.1.13)(reflect-metadata@0.1.14)(rxjs@7.8.2))
|
version: 10.32.1(@nestjs/common@10.4.6(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/core@10.4.6(@nestjs/common@10.4.6(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.2))(@nestjs/platform-express@10.4.6)(encoding@0.1.13)(reflect-metadata@0.1.14)(rxjs@7.8.2))
|
||||||
@@ -544,7 +547,7 @@ importers:
|
|||||||
specifier: ^2.0.0
|
specifier: ^2.0.0
|
||||||
version: 2.0.22
|
version: 2.0.22
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^2.0.5
|
specifier: ^2.8.8
|
||||||
version: 2.8.8
|
version: 2.8.8
|
||||||
supertest:
|
supertest:
|
||||||
specifier: ^6.0.1
|
specifier: ^6.0.1
|
||||||
@@ -4391,10 +4394,22 @@ packages:
|
|||||||
resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==}
|
resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
'@octokit/auth-token@6.0.0':
|
||||||
|
resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@octokit/core@4.2.4':
|
'@octokit/core@4.2.4':
|
||||||
resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==}
|
resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
'@octokit/core@7.0.6':
|
||||||
|
resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
|
'@octokit/endpoint@11.0.2':
|
||||||
|
resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@octokit/endpoint@7.0.6':
|
'@octokit/endpoint@7.0.6':
|
||||||
resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==}
|
resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
@@ -4403,12 +4418,25 @@ packages:
|
|||||||
resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==}
|
resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
'@octokit/graphql@9.0.3':
|
||||||
|
resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@octokit/openapi-types@18.1.1':
|
'@octokit/openapi-types@18.1.1':
|
||||||
resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==}
|
resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==}
|
||||||
|
|
||||||
|
'@octokit/openapi-types@27.0.0':
|
||||||
|
resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==}
|
||||||
|
|
||||||
'@octokit/plugin-enterprise-rest@6.0.1':
|
'@octokit/plugin-enterprise-rest@6.0.1':
|
||||||
resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
|
resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
|
||||||
|
|
||||||
|
'@octokit/plugin-paginate-rest@14.0.0':
|
||||||
|
resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
peerDependencies:
|
||||||
|
'@octokit/core': '>=6'
|
||||||
|
|
||||||
'@octokit/plugin-paginate-rest@6.1.2':
|
'@octokit/plugin-paginate-rest@6.1.2':
|
||||||
resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==}
|
resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
@@ -4420,6 +4448,18 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@octokit/core': '>=3'
|
'@octokit/core': '>=3'
|
||||||
|
|
||||||
|
'@octokit/plugin-request-log@6.0.0':
|
||||||
|
resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
peerDependencies:
|
||||||
|
'@octokit/core': '>=6'
|
||||||
|
|
||||||
|
'@octokit/plugin-rest-endpoint-methods@17.0.0':
|
||||||
|
resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
peerDependencies:
|
||||||
|
'@octokit/core': '>=6'
|
||||||
|
|
||||||
'@octokit/plugin-rest-endpoint-methods@7.2.3':
|
'@octokit/plugin-rest-endpoint-methods@7.2.3':
|
||||||
resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==}
|
resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
@@ -4430,6 +4470,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==}
|
resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
'@octokit/request-error@7.1.0':
|
||||||
|
resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
|
'@octokit/request@10.0.7':
|
||||||
|
resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@octokit/request@6.2.8':
|
'@octokit/request@6.2.8':
|
||||||
resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==}
|
resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
@@ -4438,12 +4486,19 @@ packages:
|
|||||||
resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==}
|
resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
|
||||||
|
'@octokit/rest@22.0.1':
|
||||||
|
resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@octokit/tsconfig@1.0.2':
|
'@octokit/tsconfig@1.0.2':
|
||||||
resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==}
|
resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==}
|
||||||
|
|
||||||
'@octokit/types@10.0.0':
|
'@octokit/types@10.0.0':
|
||||||
resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==}
|
resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==}
|
||||||
|
|
||||||
|
'@octokit/types@16.0.0':
|
||||||
|
resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
|
||||||
|
|
||||||
'@octokit/types@9.3.2':
|
'@octokit/types@9.3.2':
|
||||||
resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==}
|
resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==}
|
||||||
|
|
||||||
@@ -6697,6 +6752,9 @@ packages:
|
|||||||
before-after-hook@2.2.3:
|
before-after-hook@2.2.3:
|
||||||
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
|
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
|
||||||
|
|
||||||
|
before-after-hook@4.0.0:
|
||||||
|
resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==}
|
||||||
|
|
||||||
better-docs@2.7.3:
|
better-docs@2.7.3:
|
||||||
resolution: {integrity: sha512-OEk9e7RQUQbo1DmVo0mdsALZ+mT0SwIen7/DGnN4xKNktXKgz1j7+KQ2pObNHHVSFGu8YMQW/Ig1v6eiTkdnbw==}
|
resolution: {integrity: sha512-OEk9e7RQUQbo1DmVo0mdsALZ+mT0SwIen7/DGnN4xKNktXKgz1j7+KQ2pObNHHVSFGu8YMQW/Ig1v6eiTkdnbw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -9097,6 +9155,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
|
resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
|
||||||
engines: {'0': node >=0.6.0}
|
engines: {'0': node >=0.6.0}
|
||||||
|
|
||||||
|
fast-content-type-parse@3.0.0:
|
||||||
|
resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==}
|
||||||
|
|
||||||
fast-decode-uri-component@1.0.1:
|
fast-decode-uri-component@1.0.1:
|
||||||
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
|
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
|
||||||
|
|
||||||
@@ -15296,6 +15357,9 @@ packages:
|
|||||||
universal-user-agent@6.0.1:
|
universal-user-agent@6.0.1:
|
||||||
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
|
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
|
||||||
|
|
||||||
|
universal-user-agent@7.0.3:
|
||||||
|
resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==}
|
||||||
|
|
||||||
universalify@2.0.1:
|
universalify@2.0.1:
|
||||||
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
|
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
@@ -20072,6 +20136,8 @@ snapshots:
|
|||||||
|
|
||||||
'@octokit/auth-token@3.0.4': {}
|
'@octokit/auth-token@3.0.4': {}
|
||||||
|
|
||||||
|
'@octokit/auth-token@6.0.0': {}
|
||||||
|
|
||||||
'@octokit/core@4.2.4(encoding@0.1.13)':
|
'@octokit/core@4.2.4(encoding@0.1.13)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/auth-token': 3.0.4
|
'@octokit/auth-token': 3.0.4
|
||||||
@@ -20084,6 +20150,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
|
'@octokit/core@7.0.6':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/auth-token': 6.0.0
|
||||||
|
'@octokit/graphql': 9.0.3
|
||||||
|
'@octokit/request': 10.0.7
|
||||||
|
'@octokit/request-error': 7.1.0
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
before-after-hook: 4.0.0
|
||||||
|
universal-user-agent: 7.0.3
|
||||||
|
|
||||||
|
'@octokit/endpoint@11.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
universal-user-agent: 7.0.3
|
||||||
|
|
||||||
'@octokit/endpoint@7.0.6':
|
'@octokit/endpoint@7.0.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/types': 9.3.2
|
'@octokit/types': 9.3.2
|
||||||
@@ -20098,10 +20179,23 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
|
'@octokit/graphql@9.0.3':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/request': 10.0.7
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
universal-user-agent: 7.0.3
|
||||||
|
|
||||||
'@octokit/openapi-types@18.1.1': {}
|
'@octokit/openapi-types@18.1.1': {}
|
||||||
|
|
||||||
|
'@octokit/openapi-types@27.0.0': {}
|
||||||
|
|
||||||
'@octokit/plugin-enterprise-rest@6.0.1': {}
|
'@octokit/plugin-enterprise-rest@6.0.1': {}
|
||||||
|
|
||||||
|
'@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/core': 7.0.6
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
|
||||||
'@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))':
|
'@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/core': 4.2.4(encoding@0.1.13)
|
'@octokit/core': 4.2.4(encoding@0.1.13)
|
||||||
@@ -20112,6 +20206,15 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/core': 4.2.4(encoding@0.1.13)
|
'@octokit/core': 4.2.4(encoding@0.1.13)
|
||||||
|
|
||||||
|
'@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/core': 7.0.6
|
||||||
|
|
||||||
|
'@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/core': 7.0.6
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
|
||||||
'@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))':
|
'@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/core': 4.2.4(encoding@0.1.13)
|
'@octokit/core': 4.2.4(encoding@0.1.13)
|
||||||
@@ -20123,6 +20226,18 @@ snapshots:
|
|||||||
deprecation: 2.3.1
|
deprecation: 2.3.1
|
||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
|
|
||||||
|
'@octokit/request-error@7.1.0':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
|
||||||
|
'@octokit/request@10.0.7':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/endpoint': 11.0.2
|
||||||
|
'@octokit/request-error': 7.1.0
|
||||||
|
'@octokit/types': 16.0.0
|
||||||
|
fast-content-type-parse: 3.0.0
|
||||||
|
universal-user-agent: 7.0.3
|
||||||
|
|
||||||
'@octokit/request@6.2.8(encoding@0.1.13)':
|
'@octokit/request@6.2.8(encoding@0.1.13)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/endpoint': 7.0.6
|
'@octokit/endpoint': 7.0.6
|
||||||
@@ -20143,12 +20258,23 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
|
'@octokit/rest@22.0.1':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/core': 7.0.6
|
||||||
|
'@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
|
||||||
|
'@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6)
|
||||||
|
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
|
||||||
|
|
||||||
'@octokit/tsconfig@1.0.2': {}
|
'@octokit/tsconfig@1.0.2': {}
|
||||||
|
|
||||||
'@octokit/types@10.0.0':
|
'@octokit/types@10.0.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/openapi-types': 18.1.1
|
'@octokit/openapi-types': 18.1.1
|
||||||
|
|
||||||
|
'@octokit/types@16.0.0':
|
||||||
|
dependencies:
|
||||||
|
'@octokit/openapi-types': 27.0.0
|
||||||
|
|
||||||
'@octokit/types@9.3.2':
|
'@octokit/types@9.3.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@octokit/openapi-types': 18.1.1
|
'@octokit/openapi-types': 18.1.1
|
||||||
@@ -23171,6 +23297,8 @@ snapshots:
|
|||||||
|
|
||||||
before-after-hook@2.2.3: {}
|
before-after-hook@2.2.3: {}
|
||||||
|
|
||||||
|
before-after-hook@4.0.0: {}
|
||||||
|
|
||||||
better-docs@2.7.3(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
better-docs@2.7.3(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
brace: 0.11.1
|
brace: 0.11.1
|
||||||
@@ -26697,6 +26825,8 @@ snapshots:
|
|||||||
|
|
||||||
extsprintf@1.3.0: {}
|
extsprintf@1.3.0: {}
|
||||||
|
|
||||||
|
fast-content-type-parse@3.0.0: {}
|
||||||
|
|
||||||
fast-decode-uri-component@1.0.1: {}
|
fast-decode-uri-component@1.0.1: {}
|
||||||
|
|
||||||
fast-deep-equal@3.1.3: {}
|
fast-deep-equal@3.1.3: {}
|
||||||
@@ -34224,6 +34354,8 @@ snapshots:
|
|||||||
|
|
||||||
universal-user-agent@6.0.1: {}
|
universal-user-agent@6.0.1: {}
|
||||||
|
|
||||||
|
universal-user-agent@7.0.3: {}
|
||||||
|
|
||||||
universalify@2.0.1: {}
|
universalify@2.0.1: {}
|
||||||
|
|
||||||
unixify@1.0.0:
|
unixify@1.0.0:
|
||||||
|
|||||||
Reference in New Issue
Block a user