Обновлены формулировки и стили в компонентах для повышения ясности и единообразия. Включены изменения в расчетах и описаниях «Премий» в calculator.ts, ContributionResultsSection, MonthlyResultsTable и других компонентах. Исправлены описания ролей в LegendSection и SystemParamsSection для улучшения понимания.

This commit is contained in:
Alex Ant
2025-05-24 15:38:53 +05:00
parent 72c3af201a
commit fe8d19441c
8 changed files with 49 additions and 43 deletions
+4 -4
View File
@@ -63,7 +63,7 @@ export function calculateBenefits({
// Не вычитаем totalWithdrawed из складочного капитала, так как его покрывает инвестор
let shareholderCapital = initialCapital + totalGenerated + firstContributorsBonus + investorAmount - totalWithdrawed + initialMonthlyInvestorAmount;
// Вклад создателя включает остающуюся часть стоимости и премию + взнос инвестора
// Вклад создателя включает остающуюся часть стоимости и «Премию» + взнос инвестора
let initialContribution = (creatorBaseFact - creatorInitialWithdrawal + creatorBonusFact) + investorAmount;
// Начальная доля создателя с учетом возврата части стоимости
@@ -136,7 +136,7 @@ export function calculateBenefits({
const othersMonthlyBase = othersCreatorBase + othersAuthorBase; // Общая базовая стоимость
const othersWithdrawalAmount = othersMonthlyBase * (withdrawalRate / 100); // Возврат по рубильнику
// Рассчитываем премию вкладчиков (руб)
// Рассчитываем «Премию» вкладчиков (руб)
const contributorsBonus = (monthlyGeneration - othersWithdrawalAmount) * CALCULATOR_CONSTANTS.GOLDEN_RATIO;
// Прирост складочного капитала за месяц от созданных ценностей
@@ -155,13 +155,13 @@ export function calculateBenefits({
// Общий прирост капитала (включая инвестора)
const totalCapitalGrowth = capitalGrowth + monthlyInvestorAmount;
// Увеличиваем складочный капитал: новый взнос + премия вкладчиков + инвестор - возврат (руб)
// Увеличиваем складочный капитал: новый взнос + «Премия» вкладчиков + инвестор - возврат (руб)
shareholderCapital += totalCapitalGrowth;
// Пересчитываем долю инвесторов после изменения складочного капитала
investorsShare = totalInvestorsAmount / shareholderCapital * 100;
// Увеличиваем вклад создателя на его долю в премии вкладчиков (руб)
// Увеличиваем вклад создателя на его долю в «Премии» вкладчиков (руб)
const creatorBonusShare = contributorsBonus * (creatorShare / 100);
initialContribution += creatorBonusShare;
@@ -29,7 +29,7 @@ export const ContributionFormSection: FC<ContributionFormSectionProps> = ({
tooltipFormatter={(value: number | undefined) => `${value?.toLocaleString('ru-RU')}`}
/>
<DescriptionText>
Укажите стоимость труда, который Вы вносите в «Результат» как «Создатель». Взнос увеличивает вашу долю в складочном капитале и создаёт премии, которые капитализируются новыми взносами "трудом" и возвращаются из числа членских взносов кооперативов за использование системы электронного документооборота платформы. Стоимость вклада расчитывается как затраченное время на «Результат» по вашей ставке за час.
Укажите стоимость труда, который Вы вносите в «Результат» как «Создатель». Взнос увеличивает вашу долю в складочном капитале и создаёт «Премии», которые капитализируются новыми взносами "трудом" и возвращаются из числа членских взносов кооперативов за использование системы электронного документооборота платформы. Стоимость вклада расчитывается как затраченное время на «Результат» по вашей ставке за час.
</DescriptionText>
</div>
</BaseCard>
@@ -56,12 +56,12 @@ export const ContributionResultsSection: FC<ContributionResultsSectionProps> = (
'Ваш взнос «Создателя»',
'Ваш взнос «Инвестора»',
'Взнос «Авторов»',
'Ваша премия «Создателя»',
'Премия «Авторов»',
'Премия «Вкладчиков»',
'Ваша «Премия» «Создателя»',
'«Премия» «Авторов»',
'«Премия» «Вкладчиков»',
'Вклад других «Инвесторов»',
'Взнос других «Создателей»',
'Премия других «Создателей»'
'«Премия» других «Создателей»'
];
// Цвета для графика
@@ -157,8 +157,8 @@ export const ContributionResultsSection: FC<ContributionResultsSectionProps> = (
<div className="result-item">
<Text>
Ваша премия «Создателя»:
<SharedTooltip text="Дополнительная сумма, которую система начисляет Вам как «Создателю» «Результата» (100% от стоимости вашего «Результата» за вычетом выплаченной компенсации стоимости труда). Премия всегда капитализируется и увеличивает вашу долю в складочном капитале." />
Ваша «Премия» «Создателя»:
<SharedTooltip text="Дополнительная сумма, которую система начисляет Вам как «Создателю» «Результата» (100% от стоимости вашего «Результата» за вычетом выплаченной компенсации стоимости труда). «Премия» всегда капитализируется и увеличивает вашу долю в складочном капитале." />
</Text>
<Text strong>{creatorBonus.toLocaleString('ru-RU')} </Text>
</div>
@@ -171,15 +171,15 @@ export const ContributionResultsSection: FC<ContributionResultsSectionProps> = (
</div>
<div className="result-item">
<Text>
Премия «Авторов»:
<SharedTooltip text="Общая сумма премий всех «Авторов» (100% от стоимости их труда). Включает премии как ваших «Авторов», так и «Авторов» других «Создателей». Премии капитализируются в складочном капитале." />
«Премия» «Авторов»:
<SharedTooltip text="Общая сумма «Премий» всех «Авторов» (100% от стоимости их труда). Включает «Премии» как ваших «Авторов», так и «Авторов» других «Создателей». «Премии» капитализируются в складочном капитале." />
</Text>
<Text strong>{((authorBonus || 0) + (firstMonthOthersAuthorBonus || 0)).toLocaleString('ru-RU')} </Text>
</div>
<div className="result-item">
<Text>
Премия «Вкладчиков»:
<SharedTooltip text="Дополнительная капитализация для ранних «Вкладчиков» («Авторов», «Создателей» и «Инвесторов»), рассчитанная по коэффициенту золотого сечения (161.8% от суммы стоимости и премий «Авторов» и «Создателей» за вычетом их возвратов). Эта премия увеличивает общий складочный капитал и распределяется между всеми участниками согласно доле." />
«Премия» «Вкладчиков»:
<SharedTooltip text="Дополнительная капитализация для ранних «Вкладчиков» («Авторов», «Создателей» и «Инвесторов»), рассчитанная по коэффициенту золотого сечения (161.8% от суммы стоимости и премий «Авторов» и «Создателей» за вычетом их возвратов). Эта «Премия» увеличивает общий складочный капитал и распределяется между всеми участниками согласно доле." />
</Text>
<Text strong>{additionalCapitalization.toLocaleString('ru-RU')} </Text>
</div>
@@ -199,8 +199,8 @@ export const ContributionResultsSection: FC<ContributionResultsSectionProps> = (
</div>
<div className="result-item">
<Text>
Премия других «Создателей»:
<SharedTooltip text="Дополнительная сумма, начисляемая другим «Создателям» (100% от стоимости их «Результатов»). Эта премия капитализируется в складочном капитале." />
«Премия» других «Создателей»:
<SharedTooltip text="Дополнительная сумма, начисляемая другим «Создателям» (100% от стоимости их «Результатов»). Эта «Премия» капитализируется в складочном капитале." />
</Text>
<Text strong>{firstMonthOthersCreatorBonus.toLocaleString('ru-RU')} </Text>
</div>
@@ -22,7 +22,7 @@ export const LegendSection: FC = () => {
<Col xs={24} sm={12} lg={6}>
<div className="legend-role">
<Text className="legend-role-title"><BulbOutlined style={{ fontSize: 24, marginRight: 8 }} />«Автор»</Text>
<Text>Участник, который предложил проектную идею результата.</Text>
<Text>Участник, который предложил проектную идею для «Результата».</Text>
</div>
</Col>
<Col xs={24} sm={12} lg={6}>
@@ -39,20 +39,26 @@ export const LegendSection: FC = () => {
</Col>
</Row>
<Row gutter={[16, 16]} style={{ marginTop: '25px' }} justify={"space-around"}>
<Col xs={24} lg={8} style={{ display: 'flex', justifyContent: 'center' }}>
<Col xs={24} lg={6} style={{ display: 'flex', justifyContent: 'center' }}>
<div className="legend-role">
<Text className="legend-role-title"><FileTextOutlined style={{ fontSize: 24, marginRight: 8 }} />«Результат»</Text>
<Text>Полезный объект интеллектуальной собственности - программа, презентация, приложение, метод, ...</Text>
</div>
</Col>
<Col xs={24} lg={8} style={{ display: 'flex', justifyContent: 'center' }}>
<Col xs={24} lg={6} style={{ display: 'flex', justifyContent: 'center' }}>
<div className="legend-role">
<Text className="legend-role-title"><FileTextOutlined style={{ fontSize: 24, marginRight: 8 }} />«Доля»</Text>
<Text>Право требования возврата взноса из кооператива.</Text>
<Text>Часть складочного капитала, выраженная в праве требования возврата паевого взноса из кооператива.</Text>
</div>
</Col>
<Col xs={24} lg={8} style={{ display: 'flex', justifyContent: 'center' }}>
<Col xs={24} lg={6} style={{ display: 'flex', justifyContent: 'center' }}>
<div className="legend-role">
<Text className="legend-role-title"><FileTextOutlined style={{ fontSize: 24, marginRight: 8 }} />«Премия»</Text>
<Text>Дополнительный взнос, который образуется при внесении «Результата» в кооператив.</Text>
</div>
</Col>
<Col xs={24} lg={6} style={{ display: 'flex', justifyContent: 'center' }}>
<div className="legend-role">
<Text className="legend-role-title"><FileTextOutlined style={{ fontSize: 24, marginRight: 8 }} />«Благорост»</Text>
<Text>Увеличение стоимости «Доли» в «Результате» от последующих вкладов временем «Создателей».</Text>
@@ -62,7 +68,7 @@ export const LegendSection: FC = () => {
<Divider />
<div className="legend-description">
<Text>
<strong>Как это работает:</strong> Каждый вклад «Создателя» в «Результат» образует премии для «Авторов» и «Вкладчиков», которые справедливо распределяются по золотому сечению, увеличивая стоимость «Доли» и «Результата» в целом. Денежные взносы «Инвесторов» не образуют новых премий и обеспечивают компенсацию стоимости труда «Авторов» и «Создателей».
<strong>Как это работает:</strong> Каждый вклад «Создателя» в «Результат» образует дополнительные взносы («Премии») для «Создателей», «Авторов» и «Вкладчиков», которые определяются по золотому сечению, увеличивая «Долю» и «Результат» в целом. Денежные взносы «Инвесторов» не образуют дополнительных взносов (премий) и обеспечивают компенсацию стоимости труда «Авторов» и «Создателей».
</Text>
</div>
<div className="legend-description">
@@ -15,7 +15,7 @@ export const MonthlyContributionsSection: FC<MonthlyContributionsSectionProps> =
<div className="input-container" style={{ flex: '1 1 auto', display: 'flex', flexDirection: 'column' }}>
<LabelText>
Сумма взносов в месяц
<SharedTooltip text="Общая сумма взносов результатами других создателей, вносимая ими в систему ежемесячно после вашего внесения результата. Эти взносы создают премии, которые увеличивают складочный капитал и приносят выгоду всем участникам, включая Вас." />
<SharedTooltip text="Общая сумма взносов результатами других создателей, вносимая ими в систему ежемесячно после вашего внесения результата. Эти взносы создают «Премии», которые увеличивают складочный капитал и приносят выгоду всем участникам, включая Вас." />
</LabelText>
<DebouncedInputSlider
value={monthlyContributions}
@@ -31,26 +31,26 @@ export const MonthlyResultsTable: FC<MonthlyResultsTableProps> = ({
render: (value: number) => value + 1
},
{
title: columnTitle('Складочный капитал', 'Общая сумма всех вкладов и премий в системе на конец месяца, с учетом выплат членских взносов, которые уменьшают складочный капитал'),
title: columnTitle('Складочный капитал', 'Общая сумма всех вкладов и «Премий» в системе на конец месяца, с учетом выплат членских взносов, которые уменьшают складочный капитал'),
dataIndex: 'shareholderCapital',
key: 'shareholderCapital',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Прирост складочного капитала', 'Общий прирост складочного капитала за месяц с учетом всех взносов и премий'),
title: columnTitle('Прирост складочного капитала', 'Общий прирост складочного капитала за месяц с учетом всех взносов и «Премий»'),
dataIndex: 'capitalGrowth',
key: 'capitalGrowth',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Сумма генерации', 'Общая сумма стоимости взносов «Результатов» труда «Создателей» и «Авторов», а также их премий (без учёта премий «Вкладчиков» и взносов «Инвесторов») за месяц'),
title: columnTitle('Сумма генерации', 'Общая сумма стоимости взносов «Результатов» труда «Создателей» и «Авторов», а также их «Премий» (без учёта «Премий» «Вкладчиков» и взносов «Инвесторов») за месяц'),
dataIndex: 'monthlyGeneration',
key: 'monthlyGeneration',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Премия «Вкладчиков»', 'Дополнительная капитализация от новых взносов «Результатами» труда «Создателей» и «Авторов» (161.8% от суммы стоимости труда и их премий за вычетом возвратов)'),
title: columnTitle('«Премия» «Вкладчиков»', 'Дополнительная капитализация от новых взносов «Результатами» труда «Создателей» и «Авторов» (161.8% от суммы стоимости труда и их «Премий» за вычетом возвратов)'),
dataIndex: 'contributorsBonus',
key: 'contributorsBonus',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
@@ -93,13 +93,13 @@ export const MonthlyResultsTable: FC<MonthlyResultsTableProps> = ({
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Премия других «Создателей»', 'Дополнительная сумма, начисляемая другим «Создателям» (100% от стоимости их «Результатов»)'),
title: columnTitle('«Премия» других «Создателей»', 'Дополнительная сумма, начисляемая другим «Создателям» (100% от стоимости их «Результатов»)'),
dataIndex: 'othersCreatorBonus',
key: 'othersCreatorBonus',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Премия «Авторов» других', 'Дополнительная сумма, начисляемая «Авторам» других «Создателей» (100% от стоимости их труда)'),
title: columnTitle('«Премия» «Авторов» других', 'Дополнительная сумма, начисляемая «Авторам» других «Создателей» (100% от стоимости их труда)'),
dataIndex: 'othersAuthorBonus',
key: 'othersAuthorBonus',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
@@ -111,7 +111,7 @@ export const MonthlyResultsTable: FC<MonthlyResultsTableProps> = ({
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
},
{
title: columnTitle('Предполагаемая стоимость вашего вклада', 'Общая сумма вашего вклада на конец месяца, включая первоначальный взнос и накопленную долю в премиях вкладчиков'),
title: columnTitle('Предполагаемая стоимость вашего вклада', 'Общая сумма вашего вклада на конец месяца, включая первоначальный взнос и накопленную долю в «Премия»х вкладчиков'),
dataIndex: 'initialContribution',
key: 'initialContribution',
render: (value: number) => value.toLocaleString('ru-RU') + ' RUB'
@@ -37,7 +37,7 @@ export const ProfitabilityResultsSection: FC<ProfitabilityResultsSectionProps> =
</Col>
<Col flex="1 1 50%">
<Statistic
title="Премия «Создателя»"
title="«Премия» «Создателя»"
value={creatorBonus}
precision={0}
prefix="+"
@@ -47,7 +47,7 @@ export const ProfitabilityResultsSection: FC<ProfitabilityResultsSectionProps> =
</Col>
</Row>
<DescriptionText>
Включает в себя предполагаемую доходность от роста стоимости Вашего взноса и членских взносов кооперативов за использование электронного документооборота платформы, а также, включает в себя единоразовую премию «Создателя» за вклад трудом.
Включает в себя: предполагаемую доходность от дополнительных взносов («Премий»), увеличивающих стоимость Вашего права требования; членские взносы кооперативов за использование электронного документооборота платформы; а также единоразовую «Премию» «Создателя» за вклад трудом.
</DescriptionText>
<div className="disclaimer" style={{ marginTop: '16px', fontSize: '12px', background: 'rgba(223, 136, 64, 0.68)', padding: '12px', borderRadius: '8px' }}>
<Text italic>
@@ -64,8 +64,8 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
color="#1890ff"
text={
<span>
Премия «Создателя»: <b>{(CALCULATOR_CONSTANTS.CREATOR_BONUS_RATIO * 100).toFixed(0)}%</b>
<SharedTooltip text="Премия «Создателя» — дополнительная сумма, начисляемая «Создателю» (100% от его стоимости)." />
«Премия» «Создателя»: <b>{(CALCULATOR_CONSTANTS.CREATOR_BONUS_RATIO * 100).toFixed(0)}%</b>
<SharedTooltip text="«Премия» «Создателя» — дополнительная сумма, начисляемая «Создателю» (100% от его стоимости)." />
</span>
}
/>
@@ -73,8 +73,8 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
color="#722ed1"
text={
<span>
Премия «Автора»: <b>{(CALCULATOR_CONSTANTS.AUTHOR_BONUS_RATIO * 100).toFixed(0)}%</b>
<SharedTooltip text="Премия «Автора» — дополнительная сумма, начисляемая «Автору» (100% от его стоимости)." />
«Премия» «Автора»: <b>{(CALCULATOR_CONSTANTS.AUTHOR_BONUS_RATIO * 100).toFixed(0)}%</b>
<SharedTooltip text="«Премия» «Автора» — дополнительная сумма, начисляемая «Автору» (100% от его стоимости)." />
</span>
}
/>
@@ -82,8 +82,8 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
color="#faad14"
text={
<span>
Премия «Вкладчиков»: <b>{CALCULATOR_CONSTANTS.GOLDEN_RATIO * 100}%</b>
<SharedTooltip text="Премия «Вкладчиков» — коэффициент (1.618), по которому рассчитывается дополнительная выгода для ранних участников." />
«Премия» «Вкладчиков»: <b>{CALCULATOR_CONSTANTS.GOLDEN_RATIO * 100}%</b>
<SharedTooltip text="«Премия» «Вкладчиков» — коэффициент (1.618), по которому рассчитывается дополнительная выгода для ранних участников." />
</span>
}
/>
@@ -146,7 +146,7 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
</div>
{/* Ежемесячные взносы результатами других создателей */}
<div className="p-md" >
<LabelText>Ежемесячные взносы «Результатами» других «Создателей»</LabelText>
<LabelText>Ежемесячные взносы трудом других «Создателей»</LabelText>
<DebouncedInputSlider
value={monthlyContributions}
onChange={onMonthlyContributionsChange}
@@ -160,7 +160,7 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
sliderStyle={{ marginBottom: 16 }}
/>
<DescriptionText>
Общая сумма взносов «Результатами» других «Создателей», вносимая ими в систему ежемесячно после вашего внесения «Результата». Эти взносы создают премии, которые увеличивают складочный капитал и приносят выгоду всем участникам, включая Вас.
Общая сумма взносов «Результатами» других «Создателей», вносимая ими в систему ежемесячно после вашего внесения «Результата». Эти взносы создают «Премии», которые увеличивают складочный капитал и приносят выгоду всем участникам, включая Вас.
</DescriptionText>
</div>
{/* Множитель роста взносов результатами */}
@@ -182,7 +182,7 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
</div>
{/* Эффективность капитала */}
<div className="p-md" >
<LabelText>Эффективность капитала</LabelText>
<LabelText>Эффективность капитала в месяц</LabelText>
<DebouncedInputSlider
value={membershipFee}
onChange={onMembershipFeeChange}
@@ -194,7 +194,7 @@ export const SystemParamsSection: FC<SystemParamsSectionProps> = ({
unitSuffix="%"
/>
<DescriptionText>
Эффективность показывает, сколько членских взносов приходит за электронный документооборот на каждый новый рубль складочного капитала.
Эффективность показывает, сколько членских взносов приходит за электронный документооборот на каждый новый рубль складочного капитала в месяц.
</DescriptionText>
</div>
{/* Множитель роста членских взносов */}