Merge pull request 'feat(capital): CPP document templates via PrivateData' (#154) from feature/capital-cpp-private-data-templates into dev
Build bootstrap container / build (push) Successful in 3m30s

Reviewed-on: #154
Reviewed-by: Алексей Муравьев <chairman.voskhod@gmail.com>
This commit was merged in pull request #154.
This commit is contained in:
2026-07-19 15:14:39 +00:00
82 changed files with 2548 additions and 676 deletions
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,68 @@
export interface CapitalProgramPrivateData {
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_goal_reason: string
blagorost_task_expansion: string
blagorost_task_development: string
return_source_description: string
return_additional_source: string
}
export interface CapitalApprovalHeader {
protocol_number: string
protocol_day_month_year: string
}
export const CAPITAL_APPROVAL_PLACEHOLDER: CapitalApprovalHeader = {
protocol_number: '______',
protocol_day_month_year: '«___» __________ 20__ г.',
}
export const capitalProgramPrivateDataRequiredFields = [
'generator_program_purpose',
'eoap_definition',
'generator_task_goal',
'idea_unit_cost',
'idea_unit_cost_words',
'blagorost_goal_expansion',
'blagorost_goal_reason',
'blagorost_task_expansion',
'blagorost_task_development',
'return_source_description',
'return_additional_source',
] as const
export function resolveCapitalApprovalHeader(
decision?: { protocol_number?: string; protocol_day_month_year?: string } | null,
): CapitalApprovalHeader {
const protocol_number = decision?.protocol_number?.trim()
const protocol_day_month_year = decision?.protocol_day_month_year?.trim()
return {
protocol_number: protocol_number || CAPITAL_APPROVAL_PLACEHOLDER.protocol_number,
protocol_day_month_year: protocol_day_month_year || CAPITAL_APPROVAL_PLACEHOLDER.protocol_day_month_year,
}
}
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'