Complete ORKK source data migration

This commit is contained in:
KrivovDE
2026-09-09 17:46:43 +03:00
parent fde6a14edf
commit 57f98ea354
2 changed files with 35 additions and 13 deletions

View File

@@ -4709,3 +4709,10 @@ body.expanded .brief-fixed-header{
.uaz-structure-view .percent-hvesenya{left:1076px;top:297px}
.uaz-structure-view .percent-alter{left:552px;top:555px;font-size:16px}
.uaz-structure-view .percent-sollers{left:587px;top:758px}
.finance-source-note{
margin:.75rem .25rem 0;
color:rgba(255,255,255,.62);
font-size:.75rem;
text-align:right;
}

View File

@@ -263,13 +263,20 @@ Object.assign(ulyanovskPages,{
},
'okb-orkk':{
title:'АО «Объединённая ракетно-космическая корпорация»',short:'АО «ОРКК»',
displayTitle:'АО «Объединённая ракетно-космическая корпорация» (АО «ОРКК»), бывшее ОАО «Научно-исследовательский институт космического приборостроения»',
subtitle:'Государственная корпорация по космической деятельности «Роскосмос» · Ракетно-космическая промышленность · г. Москва',
notice:'Головная организация интегрированной структуры. Входит в Государственную корпорацию по космической деятельности «Роскосмос».',
notice:'Головная организация ИС. Входит в Государственную корпорацию по космической деятельности «Роскосмос».',
pairs:[
['ID','6341'],['ИНН','7722692000'],['ОГРН','1097746448580'],['ОКПО','07558633'],['Код эмитента','13759-A'],['ОКОПФ','12267'],['ОКАТО','45268554'],
['ID','6341'],['ИНН','7722692000'],['ОГРН','1097746448580 (данные ФНС, выписка из ЕГРЮЛ)'],['ОКПО','07558633'],['Код эмитента','13759-A'],['ОКОПФ','12267'],['ОКАТО','45268554'],
['Субъект федерации','г. Москва, Центральный федеральный округ'],['Местонахождение','121059, г. Москва, наб. Бережковская, д. 22'],['Юридический адрес','111024, г. Москва, ул. Авиамоторная, д. 53, корп. 1, эт. 2, пом. VII, комн. 32'],
['Телефоны','(495) 780-22-44; (495) 673-93-03'],['Факс','(495) 660-65-65'],['E-mail','info@rosorkk.ru, belikova.ev@rosorkk.ru'],['Интернет-сайт','www.rosorkk.ru'],['Раскрытие информации','e-disclosure.ru, www.e-disclosure.ru, e-disclosure.azipi.ru, disclosure.1prime.ru']
],
contactLinks:{
'e-disclosure.ru':'http://e-disclosure.ru/portal/company.aspx?id=26310',
'www.e-disclosure.ru':'http://www.e-disclosure.ru/portal/company.aspx?id=26310',
'e-disclosure.azipi.ru':'http://e-disclosure.azipi.ru/organization/802594/',
'disclosure.1prime.ru':'https://disclosure.1prime.ru/portal/default.aspx?emId=7722692000'
},
leadership:[
{period:'2026 — н.в.',role:'Генеральный директор',name:'Гуреев С.Б.'},
{period:'2024 — 2026',role:'Генеральный директор',name:'Берг А.Г.'},
@@ -278,7 +285,7 @@ Object.assign(ulyanovskPages,{
{period:'2020 — 2021',role:'Генеральный директор',name:'Гуреев С.Б.'},
{period:'2018 — 2020',role:'Генеральный директор',name:'Жерегеля А.В.'},
{period:'2015 — 2018',role:'Генеральный директор',name:'Власов Ю.В. (канд. техн. наук)'},
{period:'2014 — 2015',role:'Генеральный директор',name:'Комаров И.А.'},
{period:'2014 — 2015',role:'Генеральный директор',name:'Комаров И.А.',url:'https://ru.wikipedia.org/wiki/Комаров,_Игорь_Анатольевич'},
{period:'2012 — 2014',role:'Генеральный директор',name:'Яскин Ю.С. (канд. техн. наук)'},
{period:'1993 — 2012',role:'Генеральный директор',name:'Королёв Ю.Н. (д-р экон. наук)'}
],
@@ -299,15 +306,17 @@ Object.assign(ulyanovskPages,{
'10.03.2011 № Л026-00122-77/00027435 (1510К) — космическая деятельность.'
],
finance:[['2016','3 557 633 тыс. руб.','1 705 878 тыс. руб.']],
financeNote:'По данным Росстата.',
preserveSourceMetrics:true,
ownership:'Уставный капитал: 120 953 507 000,000 руб. Акционеры (% ОА): 100,000% независимые акционеры, в т.ч.; 100,000% Государственная корпорация по космической деятельности «Роскосмос».',
registryHolder:'АО «ВТБ Регистратор»',
ownershipDetails:['Номинал акции — 1 000,000 руб.','Обыкновенных акций — 100,000% УК'],
ownershipDetails:['Номинал акции — 1 000,000 руб.','Обыкновенных акций — 100,000% УК','Независимые акционеры — 100,000%, в том числе Государственная корпорация по космической деятельности «Роскосмос» — 100,000%'],
participations:[
'100,000% АО «ЭХО»','100,000% АО «Ракетно-космический центр „Прогресс“»','100,000% АО «Институт навигационных технологий»','100,000% АО «Научно-исследовательский институт космического приборостроения»','100,000% АО «Внуково-Космос»','100,000% АО «Финкосмос»','100,000% АО «Государственный ракетный центр имени академика В.П. Макеева»','100,000% АО «Научно-производственная корпорация „Системы прецизионного приборостроения“»','99,000% ООО «РК-Учет»','97,051% АО «Российская корпорация ракетно-космического приборостроения и информационных систем»','88,299% АО «Институт подготовки кадров машиностроения и приборостроения»','85,637% АО «Информационные спутниковые системы имени академика М.Ф. Решетнёва»','81,767% АО «Научно-производственная корпорация „Космические системы мониторинга, информационно-управляющие и электромеханические комплексы“ имени А.Г. Иосифьяна»','52,245% АО «НПО Энергомаш имени академика В.П. Глушко»','45,000% (!) ЗАО «Бинкос»','39,000% (!) ООО «Инновационно-технологическая компания „Бионикакосмос“»','26,000% (!) ООО «ПТ-Электроник»','26,000% (!) ООО «РК-Галактик»','26,000% (!) ООО «РК-Сервис»','26,000% (!) ООО «РК-ЭНЕРГО»','23,715% ПАО «Ракетно-космическая корпорация „Энергия“ имени С.П. Королёва»','21,658% АО «Усть-Катавский вагоностроительный завод»','13,600% АО «Конструкторское бюро химавтоматики»','7,891% (!) ОАО «Машиностроительный завод „Арсенал“»','7,792% (!) АО «Композит»'
],
branches:['Филиал АО «Объединённая ракетно-космическая корпорация» — «Научно-исследовательский институт космического приборостроения»'],
spunOffOrganizations:['АО «Научно-исследовательский институт космического приборостроения» — выделено в 2020 году','АО «Усть-Катавский вагоностроительный завод» — выделено в 2018 году'],
ownershipNotes:['УК — уставный капитал','ОА — обыкновенные акции','ДУ — доверительное управление','(!) — не контролируется государственным корпоративным сектором или государством'],
related:['okb-roscosmos','okb-rks']
},
'okb-rks':{
@@ -832,17 +841,17 @@ const linkifyUlyText=(value,keys=[])=>{
});
return markup;
};
const linkifyUlyContact=([label,value])=>{
const linkifyUlyContact=([label,value],contactLinks={})=>{
const safe=escapeHtml(value);
if(label==='E-mail')return safe.replace(/[\w.+-]+@[\w.-]+\.[A-Za-zА-Яа-я]{2,}/g,email=>`<a class="external-link" href="mailto:${email}">${email}</a>`);
if(label==='Интернет-сайт')return safe.split(/(,\s*)/).map(part=>{
if(label==='Интернет-сайт'||label==='Раскрытие информации')return safe.split(/(,\s*)/).map(part=>{
if(!/^(?:https?:\/\/)?[\w.-]+\.[A-Za-zА-Яа-я]{2,}(?:\/[^\s]*)?$/.test(part))return part;
const href=/^https?:\/\//.test(part)?part:`https://${part}`;
const href=contactLinks[part]||(/^https?:\/\//.test(part)?part:`https://${part}`);
return `<a class="external-link" href="${href}" target="_blank" rel="noopener noreferrer">${part}</a>`;
}).join('');
return safe;
};
const ulyKv=(pairs,linkedKeys=[])=>`<div class="kv">${pairs.map(([label,value])=>`<span>${escapeHtml(label)}</span><span>${['E-mail','Интернет-сайт'].includes(label)?linkifyUlyContact([label,value]):linkifyUlyText(value,linkedKeys)}</span>`).join('')}</div>`;
const ulyKv=(pairs,linkedKeys=[],contactLinks={})=>`<div class="kv">${pairs.map(([label,value])=>`<span>${escapeHtml(label)}</span><span>${['E-mail','Интернет-сайт','Раскрытие информации'].includes(label)?linkifyUlyContact([label,value],contactLinks):linkifyUlyText(value,linkedKeys)}</span>`).join('')}</div>`;
const personInitials=title=>{
const words=String(title||'').trim().split(/\s+/);
return `${words[0]?.[0]||''}${words[1]?.[0]||''}`;
@@ -1148,10 +1157,15 @@ const renderUlyLomoOrganization=key=>{
const classifiers=classifierTable(pairs,related);
const leadershipRows=leadership.length?leadership.map(item=>{
const leaderKey=item.key||cardKeyForLabel(item.name);
return `<div class="leadership-row"><span>${escapeHtml(item.period)}</span><span>${escapeHtml(item.role)} ${leaderKey?internalCardLink(leaderKey,item.name):escapeHtml(item.name||'')}</span></div>`;
const leaderName=leaderKey
? internalCardLink(leaderKey,item.name)
: item.url
? `<a class="external-link" href="${escapeHtml(item.url)}" target="_blank" rel="noopener noreferrer">${escapeHtml(item.name||'')}</a>`
: escapeHtml(item.name||'');
return `<div class="leadership-row"><span>${escapeHtml(item.period)}</span><span>${escapeHtml(item.role)} ${leaderName}</span></div>`;
}).join(''):(data.leadershipText||[]).map(line=>`<div class="leadership-row leadership-row-source"><span>${linkifyUlyText(line,related)}</span></div>`).join('');
document.querySelector('.org-kicker').textContent=data.short||data.title;
document.querySelector('.org-pill').textContent=data.title;
document.querySelector('.org-pill').textContent=data.displayTitle||data.title;
document.querySelector('.intro .notice').textContent=data.notice||'Не контролируется государственным корпоративным сектором или государством.';
const informationText=data.about||data.history;
const informationTitle=data.about?'Краткая характеристика':'Историческая справка';
@@ -1161,17 +1175,18 @@ const renderUlyLomoOrganization=key=>{
${relatedDetailList('Параметры акций',data.ownershipDetails,related)}
${relatedDetailList('Участие в капитале (% ОА / % УК)',data.participations,related)}
${relatedDetailList('Филиалы (структурные подразделения)',data.branches,related)}
${relatedDetailList('Выделенные организации',data.spunOffOrganizations,related)}`;
${relatedDetailList('Выделенные организации',data.spunOffOrganizations,related)}
${relatedDetailList('Примечания',data.ownershipNotes,related)}`;
document.querySelector('#content').innerHTML=`
<section class="section-card" id="details"><div class="card-head"><h2>Реквизиты организации и контактная информация</h2>${ulyExpand()}</div>
${(identifiers.length||location.length)?`<div class="grid-2${identifiers.length&&location.length?'':' grid-2-single'}">${identifiers.length?`<div><h3 class="card-subtitle">Идентификаторы</h3><div class="inner">${ulyKv(identifiers,related)}</div></div>`:''}${location.length?`<div><h3 class="card-subtitle">Местоположение</h3><div class="inner">${ulyKv(location,related)}</div></div>`:''}</div>`:''}
${contacts.length?`<h3 class="card-subtitle">Контактная информация</h3><div class="inner contacts">${ulyKv(contacts,related)}</div>`:''}
${contacts.length?`<h3 class="card-subtitle">Контактная информация</h3><div class="inner contacts">${ulyKv(contacts,related,data.contactLinks)}</div>`:''}
${leadershipRows?`<div class="full-only"><h3 class="card-subtitle">Руководители</h3><div class="inner leadership-list">${leadershipRows}</div></div>`:''}
${relatedDetailList('Управляющие организации',data.managementOrganizations,related)}
${classifiers?`<div class="full-only">${classifiers}</div>`:''}</section>
${data.legal?`<section class="section-card" id="legal" data-legal-detail="true"><div class="card-head"><h2>${key==='saturn'?'Правовой статус/НПА':'Правовой статус'}</h2>${ulyExpand()}</div><div class="inner legal-short">${linkifyUlyText(data.legal,related)}</div><div class="full-only"><h3 class="card-subtitle">Нормативно-правовые акты</h3><div class="inner paragraph">${legalDetailHtml(legalDetails,related)}</div></div></section>`:''}
${informationText?`<section class="section-card" id="about"><div class="card-head"><h2>Информация</h2>${ulyExpand()}</div><h3 class="card-subtitle">${informationTitle}</h3><div class="inner paragraph summary">${linkifyUlyText(informationText,related)}</div>${data.about&&data.history?`<div class="full-only"><h3 class="card-subtitle">Историческая справка</h3><div class="inner paragraph">${linkifyUlyText(data.history,related)}</div></div>`:''}</section>`:''}
${finance.length||data.employees?.length?`<section class="section-card" id="finance"><div class="card-head"><h2>Финансовые показатели</h2>${capitalBadge(data.ownership)}${ulyExpand()}</div><div class="full-only">${financeContent}</div>${financeCompact}</section>`:''}
${finance.length||data.employees?.length?`<section class="section-card" id="finance"><div class="card-head"><h2>Финансовые показатели</h2>${capitalBadge(data.ownership)}${ulyExpand()}</div><div class="full-only">${financeContent}</div>${financeCompact}${data.financeNote?`<p class="finance-source-note">${escapeHtml(data.financeNote)}</p>`:''}</section>`:''}
${key==='saturn'?saturnOwnershipCard():data.ownership?`<section class="section-card" id="ownership"><div class="card-head"><h2>Структура собственности</h2>${key==='okb-mei'?`<button class="ghost-btn ownership-view-btn" type="button" data-structure-owner="okb">Структура собственности в графическом виде <svg class="eye-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"/><circle cx="12" cy="12" r="2.8"/></svg></button>`:''}${ulyExpand()}</div>${directOwnershipShares(ownership).length?`<div class="ownership-meta"><span>${/Акционеры\s*\(%\s*ОА\)/i.test(ownership)?'Акционеры (% ОА)':'Участники (% УК)'}</span></div><div class="inner ownership-panel generic-ownership-panel">${genericOwnershipDonut(data.title,ownership)}<div class="legend">${genericOwnershipLegend(ownership)}</div></div>`:`<div class="inner paragraph">${ownershipTextMarkup(ownership,related)}</div>`}${ownershipExtras}</section>`:data.participations?.length?`<section class="section-card" id="ownership"><div class="card-head"><h2>Структура собственности</h2>${ulyExpand()}</div><h3 class="card-subtitle">Участие в капитале (% ОА / % УК)</h3><div class="inner paragraph compact-only">${data.participations.slice(0,6).map(item=>linkifyUlyText(item,related)).join('<br><br>')}</div><div class="inner paragraph full-only">${data.participations.map(item=>linkifyUlyText(item,related)).join('<br><br>')}</div></section>`:''}
${data.activity||data.licenses?.length||data.specialization?`<section class="section-card" id="activity"><div class="card-head"><h2>Виды деятельности</h2>${ulyExpand()}</div>${data.activity?`<h3 class="card-subtitle">Основной вид деятельности</h3><div class="inner paragraph">${linkifyUlyText(data.activity,related)}</div>`:''}${data.licenses?.length?`<div class="full-only"><h3 class="card-subtitle">Действующие лицензии</h3><div class="inner paragraph">${data.licenses.map(item=>linkifyUlyText(item,related)).join('<br><br>')}</div></div>`:''}${data.specialization?`<div class="full-only"><h3 class="card-subtitle">Специализация</h3><div class="inner paragraph">${linkifyUlyText(data.specialization,related)}</div></div>`:''}</section>`:''}
${stabilitySection(data,related)}`;