@jjlmoya/utils-finance 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +159 -159
  3. package/src/category/i18n/ru.ts +158 -158
  4. package/src/category/index.ts +39 -38
  5. package/src/category/seo.astro +1 -1
  6. package/src/components/PreviewNavSidebar.astro +1 -1
  7. package/src/components/PreviewToolbar.astro +1 -1
  8. package/src/data.ts +1 -1
  9. package/src/entries.ts +4 -1
  10. package/src/env.d.ts +1 -1
  11. package/src/index.ts +1 -0
  12. package/src/layouts/PreviewLayout.astro +113 -113
  13. package/src/pages/index.astro +1 -1
  14. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/locale_completeness.test.ts +2 -2
  17. package/src/tests/mocks/astro_mock.js +1 -1
  18. package/src/tests/no_h1_in_components.test.ts +1 -1
  19. package/src/tests/script_density.test.ts +94 -94
  20. package/src/tests/seo_length.test.ts +23 -23
  21. package/src/tests/seo_translation_completeness.test.ts +69 -0
  22. package/src/tests/seo_wellformed_export.test.ts +65 -0
  23. package/src/tests/tool_validation.test.ts +17 -17
  24. package/src/tool/compoundInterest/compound-interest-calculator.css +236 -236
  25. package/src/tool/compoundInterest/entry.ts +32 -32
  26. package/src/tool/compoundInterest/i18n/de.ts +195 -195
  27. package/src/tool/compoundInterest/i18n/fr.ts +195 -195
  28. package/src/tool/compoundInterest/i18n/it.ts +195 -195
  29. package/src/tool/compoundInterest/i18n/pl.ts +194 -194
  30. package/src/tool/compoundInterest/i18n/ru.ts +195 -195
  31. package/src/tool/compoundInterest/i18n/tr.ts +195 -195
  32. package/src/tool/compoundInterest/i18n/zh.ts +189 -189
  33. package/src/tool/compoundInterest/seo.astro +15 -15
  34. package/src/tool/courtFeeCalculator/i18n/it.ts +158 -158
  35. package/src/tool/courtFeeCalculator/i18n/ru.ts +158 -158
  36. package/src/tool/courtFeeCalculator/i18n/tr.ts +158 -158
  37. package/src/tool/courtFeeCalculator/seo.astro +15 -15
  38. package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +197 -197
  39. package/src/tool/debtSnowball/bibliography.ts +12 -12
  40. package/src/tool/debtSnowball/i18n/de.ts +16 -16
  41. package/src/tool/debtSnowball/i18n/id.ts +16 -16
  42. package/src/tool/debtSnowball/i18n/it.ts +168 -168
  43. package/src/tool/debtSnowball/i18n/nl.ts +16 -16
  44. package/src/tool/debtSnowball/i18n/pl.ts +168 -168
  45. package/src/tool/debtSnowball/i18n/pt.ts +1 -1
  46. package/src/tool/debtSnowball/i18n/ru.ts +1 -1
  47. package/src/tool/debtSnowball/i18n/sv.ts +22 -29
  48. package/src/tool/debtSnowball/i18n/tr.ts +168 -168
  49. package/src/tool/debtSnowball/i18n/zh.ts +168 -168
  50. package/src/tool/debtSnowball/seo.astro +15 -15
  51. package/src/tool/dividendYield/bibliography.astro +14 -0
  52. package/src/tool/dividendYield/bibliography.ts +12 -0
  53. package/src/tool/dividendYield/component.astro +83 -0
  54. package/src/tool/dividendYield/controller.ts +85 -0
  55. package/src/tool/dividendYield/dividend-yield-calculator.css +352 -0
  56. package/src/tool/dividendYield/dom-views.ts +58 -0
  57. package/src/tool/dividendYield/entry.ts +29 -0
  58. package/src/tool/dividendYield/evaluator.ts +16 -0
  59. package/src/tool/dividendYield/i18n/de.ts +53 -0
  60. package/src/tool/dividendYield/i18n/en.ts +138 -0
  61. package/src/tool/dividendYield/i18n/es.ts +49 -0
  62. package/src/tool/dividendYield/i18n/fr.ts +49 -0
  63. package/src/tool/dividendYield/i18n/id.ts +49 -0
  64. package/src/tool/dividendYield/i18n/it.ts +49 -0
  65. package/src/tool/dividendYield/i18n/ja.ts +49 -0
  66. package/src/tool/dividendYield/i18n/ko.ts +25 -0
  67. package/src/tool/dividendYield/i18n/nl.ts +25 -0
  68. package/src/tool/dividendYield/i18n/pl.ts +25 -0
  69. package/src/tool/dividendYield/i18n/pt.ts +25 -0
  70. package/src/tool/dividendYield/i18n/ru.ts +25 -0
  71. package/src/tool/dividendYield/i18n/sv.ts +25 -0
  72. package/src/tool/dividendYield/i18n/tr.ts +25 -0
  73. package/src/tool/dividendYield/i18n/zh.ts +25 -0
  74. package/src/tool/dividendYield/index.ts +11 -0
  75. package/src/tool/dividendYield/logic.test.ts +73 -0
  76. package/src/tool/dividendYield/logic.ts +55 -0
  77. package/src/tool/dividendYield/seo.astro +14 -0
  78. package/src/tool/dividendYield/storage.ts +24 -0
  79. package/src/tool/dividendYield/ui.ts +33 -0
  80. package/src/tool/financialFreedom/financial-freedom-calculator.css +311 -311
  81. package/src/tool/financialFreedom/i18n/en.ts +182 -182
  82. package/src/tool/financialFreedom/i18n/fr.ts +128 -128
  83. package/src/tool/financialFreedom/i18n/id.ts +24 -7
  84. package/src/tool/financialFreedom/i18n/it.ts +24 -7
  85. package/src/tool/financialFreedom/i18n/ja.ts +1 -1
  86. package/src/tool/financialFreedom/i18n/nl.ts +24 -7
  87. package/src/tool/financialFreedom/i18n/pl.ts +24 -7
  88. package/src/tool/financialFreedom/i18n/pt.ts +24 -7
  89. package/src/tool/financialFreedom/i18n/ru.ts +128 -128
  90. package/src/tool/financialFreedom/i18n/sv.ts +1 -1
  91. package/src/tool/financialFreedom/i18n/tr.ts +2 -2
  92. package/src/tool/financialFreedom/i18n/zh.ts +128 -128
  93. package/src/tool/fireCalculator/i18n/it.ts +241 -241
  94. package/src/tool/fireCalculator/i18n/ru.ts +241 -241
  95. package/src/tool/fireCalculator/i18n/tr.ts +241 -241
  96. package/src/tool/fireCalculator/i18n/zh.ts +241 -241
  97. package/src/tool/fireCalculator/seo.astro +15 -15
  98. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +151 -151
  99. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +118 -118
  100. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +118 -118
  101. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +118 -118
  102. package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +366 -366
  103. package/src/tool/ibanBicSwiftConverter/seo.astro +15 -15
  104. package/src/tool/inflation/bibliography.ts +20 -20
  105. package/src/tool/inflation/entry.ts +32 -32
  106. package/src/tool/inflation/i18n/de.ts +284 -284
  107. package/src/tool/inflation/i18n/fr.ts +284 -284
  108. package/src/tool/inflation/i18n/it.ts +284 -284
  109. package/src/tool/inflation/i18n/nl.ts +284 -284
  110. package/src/tool/inflation/i18n/pl.ts +284 -284
  111. package/src/tool/inflation/i18n/pt.ts +284 -284
  112. package/src/tool/inflation/i18n/ru.ts +284 -284
  113. package/src/tool/inflation/i18n/sv.ts +284 -284
  114. package/src/tool/inflation/i18n/tr.ts +284 -284
  115. package/src/tool/inflation/i18n/zh.ts +284 -284
  116. package/src/tool/inflation/seo.astro +15 -15
  117. package/src/tool/lateInterest/bibliography.ts +16 -16
  118. package/src/tool/lateInterest/entry.ts +32 -32
  119. package/src/tool/lateInterest/i18n/de.ts +213 -213
  120. package/src/tool/lateInterest/i18n/es.ts +213 -213
  121. package/src/tool/lateInterest/i18n/it.ts +213 -213
  122. package/src/tool/lateInterest/i18n/nl.ts +213 -213
  123. package/src/tool/lateInterest/i18n/pl.ts +213 -213
  124. package/src/tool/lateInterest/i18n/pt.ts +213 -213
  125. package/src/tool/lateInterest/i18n/ru.ts +213 -213
  126. package/src/tool/lateInterest/i18n/sv.ts +213 -213
  127. package/src/tool/lateInterest/i18n/tr.ts +213 -213
  128. package/src/tool/lateInterest/i18n/zh.ts +213 -213
  129. package/src/tool/lateInterest/seo.astro +15 -15
  130. package/src/tool/legalInterestRate/i18n/it.ts +129 -129
  131. package/src/tool/legalInterestRate/i18n/ru.ts +129 -129
  132. package/src/tool/legalInterestRate/i18n/tr.ts +128 -121
  133. package/src/tool/legalInterestRate/i18n/zh.ts +11 -4
  134. package/src/tool/legalInterestRate/seo.astro +15 -15
  135. package/src/tool/lotteryOptimizer/i18n/it.ts +163 -163
  136. package/src/tool/lotteryOptimizer/i18n/pl.ts +163 -163
  137. package/src/tool/lotteryOptimizer/i18n/ru.ts +163 -163
  138. package/src/tool/lotteryOptimizer/i18n/tr.ts +163 -163
  139. package/src/tool/lotteryOptimizer/i18n/zh.ts +162 -155
  140. package/src/tool/lotteryOptimizer/seo.astro +15 -15
  141. package/src/tool/mortgage/bibliography.ts +20 -20
  142. package/src/tool/mortgage/entry.ts +32 -32
  143. package/src/tool/mortgage/i18n/de.ts +210 -210
  144. package/src/tool/mortgage/i18n/es.ts +210 -210
  145. package/src/tool/mortgage/i18n/fr.ts +210 -210
  146. package/src/tool/mortgage/i18n/id.ts +210 -210
  147. package/src/tool/mortgage/i18n/it.ts +210 -210
  148. package/src/tool/mortgage/i18n/nl.ts +210 -210
  149. package/src/tool/mortgage/i18n/pl.ts +210 -210
  150. package/src/tool/mortgage/i18n/ru.ts +210 -210
  151. package/src/tool/mortgage/i18n/tr.ts +210 -210
  152. package/src/tool/mortgage/i18n/zh.ts +210 -210
  153. package/src/tool/mortgage/mortgage-calculator.css +595 -595
  154. package/src/tool/mortgage/seo.astro +15 -15
  155. package/src/tool/percentageCalculator/bibliography.ts +16 -16
  156. package/src/tool/percentageCalculator/entry.ts +32 -32
  157. package/src/tool/percentageCalculator/i18n/de.ts +220 -220
  158. package/src/tool/percentageCalculator/i18n/en.ts +220 -220
  159. package/src/tool/percentageCalculator/i18n/es.ts +220 -220
  160. package/src/tool/percentageCalculator/i18n/fr.ts +220 -220
  161. package/src/tool/percentageCalculator/i18n/it.ts +220 -220
  162. package/src/tool/percentageCalculator/i18n/pl.ts +220 -220
  163. package/src/tool/percentageCalculator/i18n/ru.ts +220 -220
  164. package/src/tool/percentageCalculator/i18n/tr.ts +220 -220
  165. package/src/tool/percentageCalculator/i18n/zh.ts +220 -220
  166. package/src/tool/percentageCalculator/seo.astro +15 -15
  167. package/src/tool/profitability/i18n/de.ts +24 -7
  168. package/src/tool/profitability/i18n/fr.ts +121 -104
  169. package/src/tool/profitability/i18n/id.ts +2 -2
  170. package/src/tool/profitability/i18n/it.ts +24 -7
  171. package/src/tool/profitability/i18n/ja.ts +1 -1
  172. package/src/tool/profitability/i18n/nl.ts +24 -7
  173. package/src/tool/profitability/i18n/pl.ts +1 -1
  174. package/src/tool/profitability/i18n/pt.ts +24 -7
  175. package/src/tool/profitability/i18n/ru.ts +118 -118
  176. package/src/tool/profitability/i18n/sv.ts +1 -1
  177. package/src/tool/profitability/i18n/tr.ts +1 -1
  178. package/src/tool/profitability/i18n/zh.ts +118 -118
  179. package/src/tool/profitability/profitability-calculator.css +229 -229
  180. package/src/tool/rentIncreaseCalculator/i18n/it.ts +125 -125
  181. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +125 -125
  182. package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +326 -326
  183. package/src/tool/rentIncreaseCalculator/seo.astro +15 -15
  184. package/src/tool/revolvingCardCalculator/i18n/de.ts +38 -20
  185. package/src/tool/revolvingCardCalculator/i18n/es.ts +19 -18
  186. package/src/tool/revolvingCardCalculator/i18n/fr.ts +32 -28
  187. package/src/tool/revolvingCardCalculator/i18n/id.ts +18 -18
  188. package/src/tool/revolvingCardCalculator/i18n/it.ts +18 -18
  189. package/src/tool/revolvingCardCalculator/i18n/ja.ts +2 -2
  190. package/src/tool/revolvingCardCalculator/i18n/ko.ts +2 -2
  191. package/src/tool/revolvingCardCalculator/i18n/nl.ts +22 -19
  192. package/src/tool/revolvingCardCalculator/i18n/pl.ts +2 -2
  193. package/src/tool/revolvingCardCalculator/i18n/pt.ts +2 -2
  194. package/src/tool/revolvingCardCalculator/i18n/ru.ts +2 -2
  195. package/src/tool/revolvingCardCalculator/i18n/sv.ts +2 -2
  196. package/src/tool/revolvingCardCalculator/i18n/tr.ts +2 -2
  197. package/src/tool/revolvingCardCalculator/i18n/zh.ts +6 -6
  198. package/src/tool/salaryEmployerCost/i18n/de.ts +10 -10
  199. package/src/tool/salaryEmployerCost/i18n/fr.ts +9 -9
  200. package/src/tool/salaryEmployerCost/i18n/id.ts +9 -9
  201. package/src/tool/salaryEmployerCost/i18n/it.ts +9 -9
  202. package/src/tool/salaryEmployerCost/i18n/ja.ts +1 -1
  203. package/src/tool/salaryEmployerCost/i18n/ko.ts +1 -1
  204. package/src/tool/salaryEmployerCost/i18n/nl.ts +2 -2
  205. package/src/tool/salaryEmployerCost/i18n/pl.ts +2 -2
  206. package/src/tool/salaryEmployerCost/i18n/pt.ts +2 -2
  207. package/src/tool/salaryEmployerCost/i18n/ru.ts +2 -2
  208. package/src/tool/salaryEmployerCost/i18n/sv.ts +2 -2
  209. package/src/tool/salaryEmployerCost/i18n/tr.ts +2 -2
  210. package/src/tool/salaryEmployerCost/i18n/zh.ts +2 -2
  211. package/src/tools.ts +2 -1
@@ -1,210 +1,210 @@
1
- import { bibliography } from '../bibliography'
2
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
- import type { ToolLocaleContent } from '../../../types';
4
- import type { MortgageUI } from '../ui';
5
-
6
- const slug = 'mortgage-calculator';
7
- const title = '房贷计算器与等额本息还款表';
8
- const description =
9
- '计算您的每月房贷还款额,了解您将支付多少利息,并立即可视化查看完整的还款计划。';
10
-
11
- const faqData = [
12
- {
13
- question: '什么是等额本息还款法?',
14
- answer:
15
- '这是最常用的还款系统。每月还款金额固定,但初期还款额中绝大部分是利息,本金还款极少。到后期,情况则相反。因此,在还款初期进行提前还贷最为划算。',
16
- },
17
- {
18
- question: '2026 年应该选固定利率还是浮动利率?',
19
- answer:
20
- '固定利率:现在支付的可能稍多,但 30 年内都能安稳入睡。浮动利率(如 LPR):今天可能更便宜,但如果利率上升,您的月供可能会飙升,从而给经济带来压力。这取决于您的风险厌恶程度。',
21
- },
22
- {
23
- question: '如果我提前还款 10 万元,能省多少钱?',
24
- answer:
25
- '这取决于还款时机。如果在 3% 利率、200 万元贷款的第一年提前还款,您可以节省超过 15 万元的利息。如果是第 20 年还款,节省的利息可能不到 2 万元。时机至关重要。',
26
- },
27
- {
28
- question: '我应该将薪水的百分之多少用于支付房贷?',
29
- answer:
30
- '一般建议不要超过每月净收入的 30-35%(包括其他债务)。超过这一阈值会显著增加在遇到突发情况时发生违约的风险。',
31
- },
32
- ];
33
-
34
- const howToData = [
35
- {
36
- name: '输入贷款金额',
37
- text: '输入您需要向银行申请的总金额(减去您已支付的首付款)。',
38
- },
39
- {
40
- name: '调整利率',
41
- text: '输入银行提供的年利率。您可以对比固定利率和浮动利率的不同情况。',
42
- },
43
- {
44
- name: '选择还款期限',
45
- text: '确定您希望用多少年偿还贷款。期限越长,月供越低,但支付的总利息会更多。',
46
- },
47
- {
48
- name: '分析还款计划表',
49
- text: '逐月查看您的债务演变情况,以及月供中利息与本金的分配比例。',
50
- },
51
- ];
52
-
53
- const faqSchema: WithContext<FAQPage> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'FAQPage',
56
- mainEntity: faqData.map((item) => ({
57
- '@type': 'Question',
58
- name: item.question,
59
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
- })),
61
- };
62
-
63
- const howToSchema: WithContext<HowTo> = {
64
- '@context': 'https://schema.org',
65
- '@type': 'HowTo',
66
- name: title,
67
- description,
68
- step: howToData.map((step, i) => ({
69
- '@type': 'HowToStep',
70
- position: i + 1,
71
- name: step.name,
72
- text: step.text,
73
- })),
74
- };
75
-
76
- const appSchema: WithContext<SoftwareApplication> = {
77
- '@context': 'https://schema.org',
78
- '@type': 'SoftwareApplication',
79
- name: title,
80
- description,
81
- applicationCategory: 'FinanceApplication',
82
- operatingSystem: 'All',
83
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
84
- inLanguage: 'zh',
85
- };
86
-
87
- export const content: ToolLocaleContent<MortgageUI> = {
88
- slug,
89
- title,
90
- description,
91
- faq: faqData,
92
- bibliography,
93
-
94
- howTo: howToData,
95
- schemas: [faqSchema, howToSchema, appSchema],
96
- seo: [
97
- {
98
- type: 'title',
99
- text: '房贷完全指南:等额本息系统与提前还贷',
100
- level: 2,
101
- },
102
- {
103
- type: 'paragraph',
104
- html: '房贷可能是您一生中承担的最大一笔债务。了解等额本息还款系统的工作原理对于做出明智的决定至关重要,这些决定可以为您节省数万元甚至更多的利息。',
105
- },
106
- {
107
- type: 'title',
108
- text: '等额本息系统的"陷阱":了解月供的构成',
109
- level: 3,
110
- },
111
- {
112
- type: 'paragraph',
113
- html: '大多数房贷使用的是<strong>等额本息还款法</strong>。其主要特点是每月还款额固定(在利率不变的情况下),但其构成本金和利息的比例随时间发生戏剧性的变化。',
114
- },
115
- {
116
- type: 'tip',
117
- title: '月供的演变',
118
- html: '<p><strong>初期(第 1-10 年):</strong> 您支付的大部分是利息,归还的本金非常少。在利率为 3% 的 250 万元贷款中,您的第一笔还款可能包含 80% 的利息。</p><p><strong>中期(第 11-25 年):</strong> 比例逐渐趋于平衡。</p><p><strong>后期(第 26-30 年):</strong> 您支付的几乎全是本金,利息非常少。</p>',
119
- },
120
- {
121
- type: 'paragraph',
122
- html: '因此,如果您打算<strong>提前还房贷</strong>,在贷款初期进行还款要划算得多。在第 1 年提前还款 10 万元节省的未来利息,远多于在第 20 年进行同样的提前还款。',
123
- },
124
- {
125
- type: 'title',
126
- text: '我应该把多少钱投入到房贷中?',
127
- level: 3,
128
- },
129
- {
130
- type: 'paragraph',
131
- html: '专家建议房贷月供<strong>不应超过每月净收入的 30-35%</strong>。如果您超过这个阈值,在遇到意外情况(失业、疾病等)时,违约风险会显著增加。',
132
- },
133
- {
134
- type: 'title',
135
- text: '2026 年背景:固定利率 vs 浮动利率',
136
- level: 3,
137
- },
138
- {
139
- type: 'paragraph',
140
- html: '在利率波动的背景下,选择<strong>固定利率</strong>还是<strong>浮动利率</strong>是一项重要的战略决策,每年可能会导致数千元的支出差异。',
141
- },
142
- {
143
- type: 'comparative',
144
- columns: 2,
145
- items: [
146
- {
147
- title: '固定利率',
148
- description: '虽然现在支付稍多,但因为月供永远不会增加,您可以安稳入睡。',
149
- points: [
150
- '整个还款期内月供可预测',
151
- '防范利率上升风险',
152
- '在经济不确定时获得心理安宁',
153
- '非常适合预算紧凑的家庭',
154
- ],
155
- },
156
- {
157
- title: '浮动利率',
158
- description: '今天可能更便宜,但会让您的经济暴露在波动风险之下。',
159
- highlight: true,
160
- points: [
161
- '初始月供较低',
162
- '面临 LPR 上调风险',
163
- '对家庭预算可能有严重影响',
164
- '仅适合能承受较高风险的用户',
165
- ],
166
- },
167
- ],
168
- },
169
- {
170
- type: 'tip',
171
- title: '选择固定还是浮动取决于您的个人情况',
172
- html: '<p><strong>选择固定利率,如果:</strong> 您的预算紧凑,追求确定性,且无法接受每月出现的意外支出。</p><p><strong>选择浮动利率,如果:</strong> 您有财务缓冲,认为利率会下降,或者贷款金额较小、期限较短。</p>',
173
- },
174
- ],
175
- ui: {
176
- labelTitle: '房贷计算器',
177
- labelLoanAmount: '贷款金额',
178
- labelInterestRate: '利率 (%)',
179
- labelYears: '期限 (年)',
180
- labelMonthlyExtra: '每月额外还款',
181
- labelMonthlyPayment: '每月月供',
182
- labelMonthCount: '个月',
183
- labelSavingsCard: '您的潜在节省额',
184
- labelSavingsInterest: '利息节省',
185
- labelSavingsTime: '时间缩短',
186
- labelTimelineComparison: '还款跨度对比',
187
- labelTimelineOriginal: '原定还款期',
188
- labelTimelineOptimized: '提前还款后期期限',
189
- labelCostBreakdown: '总成本明细',
190
- labelBorrowed: '贷款额',
191
- labelTotalBorrowed: '借款总本金',
192
- labelTotalInterest: '累计总利息',
193
- labelAmortizationTable: '还款表',
194
- labelTableHeader: '查看完整计划表',
195
- labelViewAll: '查看全部',
196
- labelPaid: '房贷已结清',
197
- labelTableMonth: '月份',
198
- labelTableInterest: '利息',
199
- labelTablePrincipal: '本金',
200
- labelTableExtra: '额外',
201
- labelTableBalance: '余额',
202
- labelMoreMonths: '更多月份',
203
- labelMonth: '月',
204
- currencySymbol: '¥',
205
- currencyCode: 'CNY',
206
- currencyLocale: 'zh-CN',
207
- monthPlural: '个月',
208
- yearPlural: '年',
209
- },
210
- };
1
+ import { bibliography } from '../bibliography'
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+ import type { ToolLocaleContent } from '../../../types';
4
+ import type { MortgageUI } from '../ui';
5
+
6
+ const slug = 'mortgage-calculator';
7
+ const title = '房贷计算器与等额本息还款表';
8
+ const description =
9
+ '计算您的每月房贷还款额,了解您将支付多少利息,并立即可视化查看完整的还款计划。';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '什么是等额本息还款法?',
14
+ answer:
15
+ '这是最常用的还款系统。每月还款金额固定,但初期还款额中绝大部分是利息,本金还款极少。到后期,情况则相反。因此,在还款初期进行提前还贷最为划算。',
16
+ },
17
+ {
18
+ question: '2026 年应该选固定利率还是浮动利率?',
19
+ answer:
20
+ '固定利率:现在支付的可能稍多,但 30 年内都能安稳入睡。浮动利率(如 LPR):今天可能更便宜,但如果利率上升,您的月供可能会飙升,从而给经济带来压力。这取决于您的风险厌恶程度。',
21
+ },
22
+ {
23
+ question: '如果我提前还款 10 万元,能省多少钱?',
24
+ answer:
25
+ '这取决于还款时机。如果在 3% 利率、200 万元贷款的第一年提前还款,您可以节省超过 15 万元的利息。如果是第 20 年还款,节省的利息可能不到 2 万元。时机至关重要。',
26
+ },
27
+ {
28
+ question: '我应该将薪水的百分之多少用于支付房贷?',
29
+ answer:
30
+ '一般建议不要超过每月净收入的 30-35%(包括其他债务)。超过这一阈值会显著增加在遇到突发情况时发生违约的风险。',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: '输入贷款金额',
37
+ text: '输入您需要向银行申请的总金额(减去您已支付的首付款)。',
38
+ },
39
+ {
40
+ name: '调整利率',
41
+ text: '输入银行提供的年利率。您可以对比固定利率和浮动利率的不同情况。',
42
+ },
43
+ {
44
+ name: '选择还款期限',
45
+ text: '确定您希望用多少年偿还贷款。期限越长,月供越低,但支付的总利息会更多。',
46
+ },
47
+ {
48
+ name: '分析还款计划表',
49
+ text: '逐月查看您的债务演变情况,以及月供中利息与本金的分配比例。',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step, i) => ({
69
+ '@type': 'HowToStep',
70
+ position: i + 1,
71
+ name: step.name,
72
+ text: step.text,
73
+ })),
74
+ };
75
+
76
+ const appSchema: WithContext<SoftwareApplication> = {
77
+ '@context': 'https://schema.org',
78
+ '@type': 'SoftwareApplication',
79
+ name: title,
80
+ description,
81
+ applicationCategory: 'FinanceApplication',
82
+ operatingSystem: 'All',
83
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
84
+ inLanguage: 'zh',
85
+ };
86
+
87
+ export const content: ToolLocaleContent<MortgageUI> = {
88
+ slug,
89
+ title,
90
+ description,
91
+ faq: faqData,
92
+ bibliography,
93
+
94
+ howTo: howToData,
95
+ schemas: [faqSchema, howToSchema, appSchema],
96
+ seo: [
97
+ {
98
+ type: 'title',
99
+ text: '房贷完全指南:等额本息系统与提前还贷',
100
+ level: 2,
101
+ },
102
+ {
103
+ type: 'paragraph',
104
+ html: '房贷可能是您一生中承担的最大一笔债务。了解等额本息还款系统的工作原理对于做出明智的决定至关重要,这些决定可以为您节省数万元甚至更多的利息。',
105
+ },
106
+ {
107
+ type: 'title',
108
+ text: '等额本息系统的"陷阱":了解月供的构成',
109
+ level: 3,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: '大多数房贷使用的是<strong>等额本息还款法</strong>。其主要特点是每月还款额固定(在利率不变的情况下),但其构成本金和利息的比例随时间发生戏剧性的变化。',
114
+ },
115
+ {
116
+ type: 'tip',
117
+ title: '月供的演变',
118
+ html: '<p><strong>初期(第 1-10 年):</strong> 您支付的大部分是利息,归还的本金非常少。在利率为 3% 的 250 万元贷款中,您的第一笔还款可能包含 80% 的利息。</p><p><strong>中期(第 11-25 年):</strong> 比例逐渐趋于平衡。</p><p><strong>后期(第 26-30 年):</strong> 您支付的几乎全是本金,利息非常少。</p>',
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: '因此,如果您打算<strong>提前还房贷</strong>,在贷款初期进行还款要划算得多。在第 1 年提前还款 10 万元节省的未来利息,远多于在第 20 年进行同样的提前还款。',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: '我应该把多少钱投入到房贷中?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: '专家建议房贷月供<strong>不应超过每月净收入的 30-35%</strong>。如果您超过这个阈值,在遇到意外情况(失业、疾病等)时,违约风险会显著增加。',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: '2026 年背景:固定利率 vs 浮动利率',
136
+ level: 3,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: '在利率波动的背景下,选择<strong>固定利率</strong>还是<strong>浮动利率</strong>是一项重要的战略决策,每年可能会导致数千元的支出差异。',
141
+ },
142
+ {
143
+ type: 'comparative',
144
+ columns: 2,
145
+ items: [
146
+ {
147
+ title: '固定利率',
148
+ description: '虽然现在支付稍多,但因为月供永远不会增加,您可以安稳入睡。',
149
+ points: [
150
+ '整个还款期内月供可预测',
151
+ '防范利率上升风险',
152
+ '在经济不确定时获得心理安宁',
153
+ '非常适合预算紧凑的家庭',
154
+ ],
155
+ },
156
+ {
157
+ title: '浮动利率',
158
+ description: '今天可能更便宜,但会让您的经济暴露在波动风险之下。',
159
+ highlight: true,
160
+ points: [
161
+ '初始月供较低',
162
+ '面临 LPR 上调风险',
163
+ '对家庭预算可能有严重影响',
164
+ '仅适合能承受较高风险的用户',
165
+ ],
166
+ },
167
+ ],
168
+ },
169
+ {
170
+ type: 'tip',
171
+ title: '选择固定还是浮动取决于您的个人情况',
172
+ html: '<p><strong>选择固定利率,如果:</strong> 您的预算紧凑,追求确定性,且无法接受每月出现的意外支出。</p><p><strong>选择浮动利率,如果:</strong> 您有财务缓冲,认为利率会下降,或者贷款金额较小、期限较短。</p>',
173
+ },
174
+ ],
175
+ ui: {
176
+ labelTitle: '房贷计算器',
177
+ labelLoanAmount: '贷款金额',
178
+ labelInterestRate: '利率 (%)',
179
+ labelYears: '期限 (年)',
180
+ labelMonthlyExtra: '每月额外还款',
181
+ labelMonthlyPayment: '每月月供',
182
+ labelMonthCount: '个月',
183
+ labelSavingsCard: '您的潜在节省额',
184
+ labelSavingsInterest: '利息节省',
185
+ labelSavingsTime: '时间缩短',
186
+ labelTimelineComparison: '还款跨度对比',
187
+ labelTimelineOriginal: '原定还款期',
188
+ labelTimelineOptimized: '提前还款后期期限',
189
+ labelCostBreakdown: '总成本明细',
190
+ labelBorrowed: '贷款额',
191
+ labelTotalBorrowed: '借款总本金',
192
+ labelTotalInterest: '累计总利息',
193
+ labelAmortizationTable: '还款表',
194
+ labelTableHeader: '查看完整计划表',
195
+ labelViewAll: '查看全部',
196
+ labelPaid: '房贷已结清',
197
+ labelTableMonth: '月份',
198
+ labelTableInterest: '利息',
199
+ labelTablePrincipal: '本金',
200
+ labelTableExtra: '额外',
201
+ labelTableBalance: '余额',
202
+ labelMoreMonths: '更多月份',
203
+ labelMonth: '月',
204
+ currencySymbol: '¥',
205
+ currencyCode: 'CNY',
206
+ currencyLocale: 'zh-CN',
207
+ monthPlural: '个月',
208
+ yearPlural: '年',
209
+ },
210
+ };