feat(capital): parameterize CPP templates via private data
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
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,64 @@
|
||||
export interface CapitalProgramPrivateData {
|
||||
approval_protocol_number: string
|
||||
approval_protocol_day: string
|
||||
approval_protocol_month: string
|
||||
approval_protocol_year: string
|
||||
cooperative_name: string
|
||||
cooperative_short_name: string
|
||||
cooperative_quoted_name: string
|
||||
website: string
|
||||
chairman_full_name: string
|
||||
generator_program_purpose: string
|
||||
eoap_definition: string
|
||||
generator_task_goal: string
|
||||
idea_unit_cost: string
|
||||
idea_unit_cost_words: string
|
||||
blagorost_goal_expansion: string
|
||||
blagorost_task_expansion: string
|
||||
blagorost_task_development: string
|
||||
return_source_description: string
|
||||
return_additional_source: string
|
||||
offer_template_number: string
|
||||
}
|
||||
|
||||
export const capitalProgramPrivateDataRequiredFields = [
|
||||
'approval_protocol_number',
|
||||
'approval_protocol_day',
|
||||
'approval_protocol_month',
|
||||
'approval_protocol_year',
|
||||
'cooperative_name',
|
||||
'cooperative_short_name',
|
||||
'cooperative_quoted_name',
|
||||
'website',
|
||||
'chairman_full_name',
|
||||
'generator_program_purpose',
|
||||
'eoap_definition',
|
||||
'generator_task_goal',
|
||||
'idea_unit_cost',
|
||||
'idea_unit_cost_words',
|
||||
'blagorost_goal_expansion',
|
||||
'blagorost_task_expansion',
|
||||
'blagorost_task_development',
|
||||
'return_source_description',
|
||||
'return_additional_source',
|
||||
'offer_template_number',
|
||||
] as const
|
||||
|
||||
export function requireCapitalProgramPrivateData(
|
||||
payload: CapitalProgramPrivateData | null | undefined,
|
||||
registry_id: number,
|
||||
): CapitalProgramPrivateData {
|
||||
if (!payload)
|
||||
throw new Error(`PrivateData для документа #${registry_id} не найдены: передайте doc_data_hash`)
|
||||
|
||||
const missing = capitalProgramPrivateDataRequiredFields.filter((field) => {
|
||||
const value = payload[field]
|
||||
return typeof value !== 'string' || value.trim() === ''
|
||||
})
|
||||
|
||||
if (missing.length) {
|
||||
throw new Error(`PrivateData для документа #${registry_id} заполнены не полностью: ${missing.join(', ')}`)
|
||||
}
|
||||
|
||||
return payload
|
||||
}
|
||||
@@ -80,3 +80,5 @@ export * as AnnualGeneralMeetingSovietDecision from './301.AnnualGeneralMeetingS
|
||||
export * as AnnualGeneralMeetingNotification from './302.AnnualGeneralMeetingNotification'
|
||||
export * as AnnualGeneralMeetingVotingBallot from './303.AnnualGeneralMeetingVotingBallot'
|
||||
export * as AnnualGeneralMeetingDecision from './304.AnnualGeneralMeetingDecision'
|
||||
|
||||
export * from './capitalProgramPrivateData'
|
||||
|
||||
@@ -17,7 +17,7 @@ export class Factory extends DocFactory<BlagorostOffer.Action> {
|
||||
const udataService = new Udata(this.storage)
|
||||
|
||||
// Независимые источники тянем параллельно (см. resolveParallel в DocFactory)
|
||||
const { template, vars, coop, userData, blagorostAgreementUdata, blagorostAgreementCreatedAtUdata } = await this.resolveParallel({
|
||||
const { template, vars, coop, userData, blagorostAgreementUdata, blagorostAgreementCreatedAtUdata, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(BlagorostOffer.Template as ITemplate<BlagorostOffer.Model>)
|
||||
: this.getTemplate<BlagorostOffer.Model>(DraftContract.contractName.production, 1000, data.block_num),
|
||||
@@ -36,12 +36,14 @@ export class Factory extends DocFactory<BlagorostOffer.Action> {
|
||||
key: Cooperative.Model.UdataKey.BLAGOROST_AGREEMENT_CREATED_AT,
|
||||
block_num: data.block_num,
|
||||
}),
|
||||
docData: () => this.loadDocData<BlagorostOffer.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
// meta зависит от template.title — считаем после батча
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
|
||||
const common_user = this.getCommonUser(userData)
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, BlagorostOffer.registry_id)
|
||||
|
||||
// Проверяем наличие данных протоколов, утвердивших предыдущие документы
|
||||
if (!vars.blagorost_program?.protocol_number || !vars.blagorost_program?.protocol_day_month_year) {
|
||||
@@ -68,6 +70,7 @@ export class Factory extends DocFactory<BlagorostOffer.Action> {
|
||||
common_user,
|
||||
blagorost_agreement_number: String(blagorostAgreementUdata.value),
|
||||
blagorost_agreement_created_at: String(blagorostAgreementCreatedAtUdata.value),
|
||||
doc_data,
|
||||
}
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DraftContract } from 'cooptypes'
|
||||
import { Cooperative, DraftContract } from 'cooptypes'
|
||||
import { GeneratorProgramTemplate } from '../Templates'
|
||||
import { DocFactory } from '../Factory'
|
||||
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||
@@ -12,20 +12,23 @@ export class Factory extends DocFactory<GeneratorProgramTemplate.Action> {
|
||||
}
|
||||
|
||||
async generateDocument(data: GeneratorProgramTemplate.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||
const { template, vars, coop } = await this.resolveParallel({
|
||||
const { template, vars, coop, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(GeneratorProgramTemplate.Template as ITemplate<GeneratorProgramTemplate.Model>)
|
||||
: this.getTemplate<GeneratorProgramTemplate.Model>(DraftContract.contractName.production, GeneratorProgramTemplate.registry_id, data.block_num),
|
||||
vars: () => this.getVars(data.coopname),
|
||||
coop: () => this.getCooperative(data.coopname),
|
||||
docData: () => this.loadDocData<GeneratorProgramTemplate.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, GeneratorProgramTemplate.registry_id)
|
||||
|
||||
const combinedData: GeneratorProgramTemplate.Model = {
|
||||
meta,
|
||||
coop,
|
||||
vars,
|
||||
doc_data,
|
||||
}
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DraftContract } from 'cooptypes'
|
||||
import { Cooperative, DraftContract } from 'cooptypes'
|
||||
import { GeneratorOfferTemplate } from '../Templates'
|
||||
import { DocFactory } from '../Factory'
|
||||
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||
@@ -12,17 +12,19 @@ export class Factory extends DocFactory<GeneratorOfferTemplate.Action> {
|
||||
}
|
||||
|
||||
async generateDocument(data: GeneratorOfferTemplate.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||
const { template, vars, coop, user } = await this.resolveParallel({
|
||||
const { template, vars, coop, user, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(GeneratorOfferTemplate.Template as ITemplate<GeneratorOfferTemplate.Model>)
|
||||
: this.getTemplate<GeneratorOfferTemplate.Model>(DraftContract.contractName.production, GeneratorOfferTemplate.registry_id, data.block_num),
|
||||
vars: () => this.getVars(data.coopname),
|
||||
coop: () => this.getCooperative(data.coopname),
|
||||
user: () => this.getUser(data.username, data.block_num),
|
||||
docData: () => this.loadDocData<GeneratorOfferTemplate.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
const common_user = this.getCommonUser(user)
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, GeneratorOfferTemplate.registry_id)
|
||||
|
||||
// Проверяем наличие данных протокола, утвердившего генерационную программу
|
||||
if (!vars.generator_program?.protocol_number || !vars.generator_program?.protocol_day_month_year) {
|
||||
@@ -34,6 +36,7 @@ export class Factory extends DocFactory<GeneratorOfferTemplate.Action> {
|
||||
coop,
|
||||
vars,
|
||||
common_user,
|
||||
doc_data,
|
||||
}
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
@@ -17,7 +17,7 @@ export class Factory extends DocFactory<GeneratorOffer.Action> {
|
||||
const udataService = new Udata(this.storage)
|
||||
|
||||
// Независимые источники тянем параллельно (см. resolveParallel в DocFactory)
|
||||
const { template, vars, coop, user, generatorAgreementUdata, generatorAgreementCreatedAtUdata } = await this.resolveParallel({
|
||||
const { template, vars, coop, user, generatorAgreementUdata, generatorAgreementCreatedAtUdata, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(GeneratorOffer.Template as ITemplate<GeneratorOffer.Model>)
|
||||
: this.getTemplate<GeneratorOffer.Model>(DraftContract.contractName.production, GeneratorOffer.registry_id, data.block_num),
|
||||
@@ -36,12 +36,14 @@ export class Factory extends DocFactory<GeneratorOffer.Action> {
|
||||
key: Cooperative.Model.UdataKey.GENERATOR_AGREEMENT_CREATED_AT,
|
||||
block_num: data.block_num,
|
||||
}),
|
||||
docData: () => this.loadDocData<GeneratorOffer.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
// meta зависит от template.title — считаем после батча
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
|
||||
const common_user = this.getCommonUser(user)
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, GeneratorOffer.registry_id)
|
||||
|
||||
// Проверяем наличие данных протокола, утвердившего генерационную программу
|
||||
if (!vars.generator_program?.protocol_number || !vars.generator_program?.protocol_day_month_year) {
|
||||
@@ -68,6 +70,7 @@ export class Factory extends DocFactory<GeneratorOffer.Action> {
|
||||
common_user,
|
||||
generator_agreement_number: String(generatorAgreementUdata.value),
|
||||
generator_agreement_created_at: String(generatorAgreementCreatedAtUdata.value),
|
||||
doc_data,
|
||||
}
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DraftContract } from 'cooptypes'
|
||||
import { Cooperative, DraftContract } from 'cooptypes'
|
||||
import { BlagorostProgramTemplate } from '../Templates'
|
||||
import { DocFactory } from '../Factory'
|
||||
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||
@@ -12,16 +12,18 @@ export class Factory extends DocFactory<BlagorostProgramTemplate.Action> {
|
||||
}
|
||||
|
||||
async generateDocument(data: BlagorostProgramTemplate.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||
const { template, vars } = await this.resolveParallel({
|
||||
const { template, vars, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(BlagorostProgramTemplate.Template as ITemplate<BlagorostProgramTemplate.Model>)
|
||||
: this.getTemplate<BlagorostProgramTemplate.Model>(DraftContract.contractName.production, BlagorostProgramTemplate.registry_id, data.block_num),
|
||||
vars: () => this.getVars(data.coopname),
|
||||
docData: () => this.loadDocData<BlagorostProgramTemplate.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, BlagorostProgramTemplate.registry_id)
|
||||
|
||||
const combinedData: BlagorostProgramTemplate.Model = { meta, vars }
|
||||
const combinedData: BlagorostProgramTemplate.Model = { meta, vars, doc_data }
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DraftContract } from 'cooptypes'
|
||||
import { Cooperative, DraftContract } from 'cooptypes'
|
||||
import { BlagorostOfferTemplate } from '../Templates'
|
||||
import { DocFactory } from '../Factory'
|
||||
import type { IGeneratedDocument, IGenerationOptions, IMetaDocument, ITemplate } from '../Interfaces'
|
||||
@@ -12,15 +12,17 @@ export class Factory extends DocFactory<BlagorostOfferTemplate.Action> {
|
||||
}
|
||||
|
||||
async generateDocument(data: BlagorostOfferTemplate.Action, options?: IGenerationOptions): Promise<IGeneratedDocument> {
|
||||
const { template, vars, coop } = await this.resolveParallel({
|
||||
const { template, vars, coop, docData } = await this.resolveParallel({
|
||||
template: () => process.env.SOURCE === 'local'
|
||||
? Promise.resolve(BlagorostOfferTemplate.Template as ITemplate<BlagorostOfferTemplate.Model>)
|
||||
: this.getTemplate<BlagorostOfferTemplate.Model>(DraftContract.contractName.production, BlagorostOfferTemplate.registry_id, data.block_num),
|
||||
vars: () => this.getVars(data.coopname),
|
||||
coop: () => this.getCooperative(data.coopname),
|
||||
docData: () => this.loadDocData<BlagorostOfferTemplate.Model['doc_data']>(data),
|
||||
})
|
||||
|
||||
const meta: IMetaDocument = await this.getMeta({ title: template.title, ...data })
|
||||
const doc_data = Cooperative.Registry.requireCapitalProgramPrivateData(docData, BlagorostOfferTemplate.registry_id)
|
||||
|
||||
// Проверяем наличие данных протокола, утвердившего Положение (документ 998)
|
||||
if (!vars.blagorost_program?.protocol_number || !vars.blagorost_program?.protocol_day_month_year) {
|
||||
@@ -31,6 +33,7 @@ export class Factory extends DocFactory<BlagorostOfferTemplate.Action> {
|
||||
meta,
|
||||
coop,
|
||||
vars,
|
||||
doc_data,
|
||||
}
|
||||
|
||||
await this.validate(combinedData, template.model)
|
||||
|
||||
@@ -19,11 +19,12 @@ export const Schema: JSONSchemaType<Model> = {
|
||||
meta: IMetaJSONSchema,
|
||||
coop: CooperativeSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
common_user: CommonUserSchema,
|
||||
blagorost_agreement_number: { type: 'string' },
|
||||
blagorost_agreement_created_at: { type: 'string' },
|
||||
},
|
||||
required: ['meta', 'coop', 'vars', 'common_user', 'blagorost_agreement_number', 'blagorost_agreement_created_at'],
|
||||
required: ['meta', 'coop', 'vars', 'common_user', 'blagorost_agreement_number', 'blagorost_agreement_created_at', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
} as any
|
||||
|
||||
|
||||
@@ -12,6 +12,11 @@ export type Action = Cooperative.Registry.GeneratorProgramTemplate.Action
|
||||
// Модель данных
|
||||
export type Model = Cooperative.Registry.GeneratorProgramTemplate.Model
|
||||
|
||||
const CapitalProgramPrivateDataSchema = {
|
||||
type: 'object',
|
||||
additionalProperties: { type: 'string' },
|
||||
} as const
|
||||
|
||||
// Схема для сверки
|
||||
export const Schema: JSONSchemaType<Model> = {
|
||||
type: 'object',
|
||||
@@ -19,10 +24,11 @@ export const Schema: JSONSchemaType<Model> = {
|
||||
meta: IMetaJSONSchema,
|
||||
coop: CooperativeSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
},
|
||||
required: ['meta', 'coop', 'vars'],
|
||||
required: ['meta', 'coop', 'vars', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
}
|
||||
} as any
|
||||
|
||||
export const Template: ITemplate<Model> = {
|
||||
title: Cooperative.Registry.GeneratorProgramTemplate.title,
|
||||
|
||||
@@ -12,6 +12,11 @@ export type Action = Cooperative.Registry.GeneratorOfferTemplate.Action
|
||||
// Модель данных
|
||||
export type Model = Cooperative.Registry.GeneratorOfferTemplate.Model
|
||||
|
||||
const CapitalProgramPrivateDataSchema = {
|
||||
type: 'object',
|
||||
additionalProperties: { type: 'string' },
|
||||
} as const
|
||||
|
||||
// Схема для сверки
|
||||
export const Schema: JSONSchemaType<Model> = {
|
||||
type: 'object',
|
||||
@@ -19,11 +24,12 @@ export const Schema: JSONSchemaType<Model> = {
|
||||
meta: IMetaJSONSchema,
|
||||
coop: CooperativeSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
common_user: CommonUserSchema,
|
||||
},
|
||||
required: ['meta', 'coop', 'vars', 'common_user'],
|
||||
required: ['meta', 'coop', 'vars', 'common_user', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
}
|
||||
} as any
|
||||
|
||||
export const Template: ITemplate<Model> = {
|
||||
title: Cooperative.Registry.GeneratorOfferTemplate.title,
|
||||
|
||||
@@ -12,6 +12,11 @@ export type Action = Cooperative.Registry.GeneratorOffer.Action
|
||||
// Модель данных
|
||||
export type Model = Cooperative.Registry.GeneratorOffer.Model
|
||||
|
||||
const CapitalProgramPrivateDataSchema = {
|
||||
type: 'object',
|
||||
additionalProperties: { type: 'string' },
|
||||
} as const
|
||||
|
||||
// Схема для сверки
|
||||
export const Schema: JSONSchemaType<Model> = {
|
||||
type: 'object',
|
||||
@@ -19,13 +24,14 @@ export const Schema: JSONSchemaType<Model> = {
|
||||
meta: IMetaJSONSchema,
|
||||
coop: CooperativeSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
common_user: CommonUserSchema,
|
||||
generator_agreement_number: { type: 'string' },
|
||||
generator_agreement_created_at: { type: 'string' },
|
||||
},
|
||||
required: ['meta', 'coop', 'vars', 'common_user', 'generator_agreement_number', 'generator_agreement_created_at'],
|
||||
required: ['meta', 'coop', 'vars', 'common_user', 'generator_agreement_number', 'generator_agreement_created_at', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
}
|
||||
} as any
|
||||
|
||||
export const Template: ITemplate<Model> = {
|
||||
title: Cooperative.Registry.GeneratorOffer.title,
|
||||
|
||||
@@ -18,16 +18,22 @@ export interface Model {
|
||||
vars: IVars
|
||||
}
|
||||
|
||||
const CapitalProgramPrivateDataSchema = {
|
||||
type: 'object',
|
||||
additionalProperties: { type: 'string' },
|
||||
} as const
|
||||
|
||||
// Схема для сверки
|
||||
export const Schema: JSONSchemaType<Model> = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
meta: IMetaJSONSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
},
|
||||
required: ['meta', 'vars'],
|
||||
required: ['meta', 'vars', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
}
|
||||
} as any
|
||||
|
||||
export const Template: ITemplate<Model> = {
|
||||
title: Cooperative.Registry.BlagorostProgramTemplate.title,
|
||||
|
||||
@@ -12,6 +12,11 @@ export type Action = Cooperative.Registry.BlagorostOfferTemplate.Action
|
||||
// Модель данных
|
||||
export type Model = Cooperative.Registry.BlagorostOfferTemplate.Model
|
||||
|
||||
const CapitalProgramPrivateDataSchema = {
|
||||
type: 'object',
|
||||
additionalProperties: { type: 'string' },
|
||||
} as const
|
||||
|
||||
// Схема для сверки
|
||||
export const Schema: JSONSchemaType<Model> = {
|
||||
type: 'object',
|
||||
@@ -19,10 +24,11 @@ export const Schema: JSONSchemaType<Model> = {
|
||||
meta: IMetaJSONSchema,
|
||||
coop: CooperativeSchema,
|
||||
vars: VarsSchema,
|
||||
doc_data: CapitalProgramPrivateDataSchema,
|
||||
},
|
||||
required: ['meta', 'coop', 'vars'],
|
||||
required: ['meta', 'coop', 'vars', 'doc_data'],
|
||||
additionalProperties: true,
|
||||
}
|
||||
} as any
|
||||
|
||||
export const Template: ITemplate<Model> = {
|
||||
title: Cooperative.Registry.BlagorostOfferTemplate.title,
|
||||
|
||||
@@ -4,6 +4,8 @@ import { Generator } from '../src'
|
||||
import { testDocumentGeneration } from './utils/testDocument'
|
||||
import { generator, mongoUri } from './utils'
|
||||
|
||||
const capitalProgramDocDataHashes = new Map<number, string>()
|
||||
|
||||
beforeAll(async () => {
|
||||
await generator.connect(mongoUri)
|
||||
|
||||
@@ -44,6 +46,34 @@ beforeAll(async () => {
|
||||
for (const data of udatas) {
|
||||
await generator.save('udata', { ...commonUdata, ...data })
|
||||
}
|
||||
|
||||
const capitalProgramPrivateData = {
|
||||
approval_protocol_number: '1',
|
||||
approval_protocol_day: '15',
|
||||
approval_protocol_month: 'января',
|
||||
approval_protocol_year: '26',
|
||||
cooperative_name: 'ВОСХОД',
|
||||
cooperative_short_name: 'ПК',
|
||||
cooperative_quoted_name: '«ВОСХОД»',
|
||||
website: 'https://цифровой-кооператив.рф',
|
||||
chairman_full_name: 'Муравьев Алексей Николаевич',
|
||||
generator_program_purpose: 'развитию информационной экосистемы взаимодействия физических и юридических лиц, на основе международных кооперативных принципов и законодательства Российской Федерации в отношении потребительских обществ (кооперативов) под названием “Кооперативная Экономика”',
|
||||
eoap_definition: 'информационная экосистема, интегрируемая в социально-экономическую среду Российской Федерации, состоящая из комплекса программных продуктов на базе технологии распределенного реестра, обеспечивающих широкое экономическое и социальное взаимодействие физических и юридических лиц, включая нерезидентов различных юрисдикций и организационно-правовых форм, на основе международных кооперативных принципов и законодательства Российской Федерации в отношении потребительских кооперативов (обществ) под названием “Кооперативная Экономика”',
|
||||
generator_task_goal: 'центра привлечения и интеграции передовых инновационных цифровых разработок, а также экономических и социальных методов и решений',
|
||||
idea_unit_cost: '50',
|
||||
idea_unit_cost_words: 'пятьдесят',
|
||||
blagorost_goal_expansion: 'вследствие увеличения количества Участников информационной кооперативной экосистемы - ЕОАП - для расширения и повышения социальной эффективности их экономического взаимодействия в некоммерческом формате',
|
||||
blagorost_task_expansion: 'расширение участников ЕОАП - информационной кооперативной экосистемы как центра экономического взаимодействия в некоммерческом формате',
|
||||
blagorost_task_development: 'развитие ЕОАП как центра привлечения и интеграции инновационных цифровых разработок, а также экономических и социальных методов и решений',
|
||||
return_source_description: 'аппаратно-программная сеть узлов распределенного реестра в формате «СМЭВ+SWIFT», построенная на принципах самоорганизации и самофинансирования деятельности технологической инфраструктуры ЕОАП, обеспечивающей консенсус ее распределенных узлов по формированию базового продукта ЕОАП - полного цикла документооборота по синхронному взаимодействию пайщиков и кооперативов - участников экосистемы ЕОАП - через использование цифровых контрактов, с одновременным выполнением функций нотариата и учета финансовых и юридических событий',
|
||||
return_additional_source: 'взносы пользователей ЕОАП, его отдельных программных продуктов и приложений, переданных Обществу или создаваемых в рамках Общества, которые интегрируются в ЕОАП',
|
||||
offer_template_number: '______',
|
||||
}
|
||||
|
||||
for (const registry_id of [994, 995, 996, 998, 999, 1000]) {
|
||||
const { hash } = await generator.saveDocData({ ...capitalProgramPrivateData, registry_id }, registry_id)
|
||||
capitalProgramDocDataHashes.set(registry_id, hash)
|
||||
}
|
||||
})
|
||||
|
||||
describe('тест генератора документов с registry_id >= 1000', async () => {
|
||||
@@ -54,6 +84,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(994),
|
||||
})
|
||||
})
|
||||
|
||||
@@ -63,6 +94,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(995),
|
||||
})
|
||||
})
|
||||
|
||||
@@ -72,6 +104,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(996),
|
||||
})
|
||||
})
|
||||
|
||||
@@ -92,6 +125,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(998),
|
||||
})
|
||||
})
|
||||
it('генерируем шаблон оферты Благорост', async () => {
|
||||
@@ -100,6 +134,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(999),
|
||||
})
|
||||
})
|
||||
|
||||
@@ -110,6 +145,7 @@ describe('тест генератора документов с registry_id >= 1
|
||||
coopname: 'voskhod',
|
||||
username: 'ant',
|
||||
lang: 'ru',
|
||||
doc_data_hash: capitalProgramDocDataHashes.get(1000),
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user