@jjlmoya/utils-finance 1.45.0 → 1.47.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 (73) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +5 -1
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/mfe_assets_contract.test.ts +48 -0
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/loanAprScenarioCalculator/bibliography.astro +11 -0
  8. package/src/tool/loanAprScenarioCalculator/bibliography.ts +29 -0
  9. package/src/tool/loanAprScenarioCalculator/component.astro +62 -0
  10. package/src/tool/loanAprScenarioCalculator/controller.ts +205 -0
  11. package/src/tool/loanAprScenarioCalculator/currency-dom.ts +107 -0
  12. package/src/tool/loanAprScenarioCalculator/currency.test.ts +57 -0
  13. package/src/tool/loanAprScenarioCalculator/currency.ts +105 -0
  14. package/src/tool/loanAprScenarioCalculator/dom-views.ts +190 -0
  15. package/src/tool/loanAprScenarioCalculator/entry.ts +28 -0
  16. package/src/tool/loanAprScenarioCalculator/evaluator.ts +21 -0
  17. package/src/tool/loanAprScenarioCalculator/i18n/de.ts +194 -0
  18. package/src/tool/loanAprScenarioCalculator/i18n/en.ts +194 -0
  19. package/src/tool/loanAprScenarioCalculator/i18n/es.ts +195 -0
  20. package/src/tool/loanAprScenarioCalculator/i18n/fr.ts +195 -0
  21. package/src/tool/loanAprScenarioCalculator/i18n/id.ts +193 -0
  22. package/src/tool/loanAprScenarioCalculator/i18n/it.ts +193 -0
  23. package/src/tool/loanAprScenarioCalculator/i18n/ja.ts +186 -0
  24. package/src/tool/loanAprScenarioCalculator/i18n/ko.ts +186 -0
  25. package/src/tool/loanAprScenarioCalculator/i18n/nl.ts +194 -0
  26. package/src/tool/loanAprScenarioCalculator/i18n/pl.ts +194 -0
  27. package/src/tool/loanAprScenarioCalculator/i18n/pt.ts +194 -0
  28. package/src/tool/loanAprScenarioCalculator/i18n/ru.ts +193 -0
  29. package/src/tool/loanAprScenarioCalculator/i18n/sv.ts +189 -0
  30. package/src/tool/loanAprScenarioCalculator/i18n/tr.ts +193 -0
  31. package/src/tool/loanAprScenarioCalculator/i18n/zh.ts +181 -0
  32. package/src/tool/loanAprScenarioCalculator/index.ts +11 -0
  33. package/src/tool/loanAprScenarioCalculator/loan-apr-scenario-calculator.css +699 -0
  34. package/src/tool/loanAprScenarioCalculator/logic.test.ts +65 -0
  35. package/src/tool/loanAprScenarioCalculator/logic.ts +259 -0
  36. package/src/tool/loanAprScenarioCalculator/presets.ts +51 -0
  37. package/src/tool/loanAprScenarioCalculator/scenario-dom.ts +101 -0
  38. package/src/tool/loanAprScenarioCalculator/seo.astro +11 -0
  39. package/src/tool/loanAprScenarioCalculator/storage.ts +60 -0
  40. package/src/tool/loanAprScenarioCalculator/ui.ts +55 -0
  41. package/src/tool/loanAprScenarioCalculator/validation.ts +24 -0
  42. package/src/tool/renterInsuranceCoverageGapCalculator/bibliography.astro +11 -0
  43. package/src/tool/renterInsuranceCoverageGapCalculator/bibliography.ts +6 -0
  44. package/src/tool/renterInsuranceCoverageGapCalculator/component.astro +80 -0
  45. package/src/tool/renterInsuranceCoverageGapCalculator/controller.ts +102 -0
  46. package/src/tool/renterInsuranceCoverageGapCalculator/currency.test.ts +17 -0
  47. package/src/tool/renterInsuranceCoverageGapCalculator/currency.ts +69 -0
  48. package/src/tool/renterInsuranceCoverageGapCalculator/dom-views.ts +68 -0
  49. package/src/tool/renterInsuranceCoverageGapCalculator/entry.ts +28 -0
  50. package/src/tool/renterInsuranceCoverageGapCalculator/evaluator.ts +17 -0
  51. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/de.ts +40 -0
  52. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/en.ts +98 -0
  53. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/es.ts +38 -0
  54. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/fr.ts +38 -0
  55. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/id.ts +38 -0
  56. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/it.ts +38 -0
  57. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ja.ts +38 -0
  58. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ko.ts +38 -0
  59. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/nl.ts +38 -0
  60. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/pl.ts +38 -0
  61. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/pt.ts +38 -0
  62. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ru.ts +38 -0
  63. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/sv.ts +38 -0
  64. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/tr.ts +38 -0
  65. package/src/tool/renterInsuranceCoverageGapCalculator/i18n/zh.ts +38 -0
  66. package/src/tool/renterInsuranceCoverageGapCalculator/index.ts +11 -0
  67. package/src/tool/renterInsuranceCoverageGapCalculator/logic.test.ts +52 -0
  68. package/src/tool/renterInsuranceCoverageGapCalculator/logic.ts +108 -0
  69. package/src/tool/renterInsuranceCoverageGapCalculator/renter-insurance-coverage-gap-calculator.css +462 -0
  70. package/src/tool/renterInsuranceCoverageGapCalculator/seo.astro +11 -0
  71. package/src/tool/renterInsuranceCoverageGapCalculator/storage.ts +23 -0
  72. package/src/tool/renterInsuranceCoverageGapCalculator/ui.ts +48 -0
  73. package/src/tools.ts +3 -1
@@ -0,0 +1,193 @@
1
+ import type { ToolLocaleContent } from "../../../types";
2
+ import { bibliography } from "../bibliography";
3
+ import type { LoanAprScenarioCalculatorUI } from "../ui";
4
+
5
+ const ui: LoanAprScenarioCalculatorUI = {
6
+ labelScenarioA: "Teklif A",
7
+ labelScenarioB: "Teklif B",
8
+ labelScenarioName: "Teklif adı",
9
+ labelCurrency: "Para birimi",
10
+ labelApproximateRates:
11
+ "Planlama için yaklaşık katsayılar; canlı döviz kurları değildir.",
12
+ labelPrincipal: "Borç alınan tutar",
13
+ labelTerm: "Geri ödeme süresi",
14
+ labelMonths: "ay",
15
+ labelInputBasis: "Hangi bilgiyi biliyorsunuz?",
16
+ labelAnnualRate: "Nominal yıllık faiz",
17
+ labelMonthlyPayment: "Bilinen aylık ödeme",
18
+ labelUpfrontFees: "Başlangıç ücretleri",
19
+ labelMonthlyFees: "Aylık ücretler",
20
+ labelFinalFees: "Son ücret",
21
+ labelOfferNameA: "Teklif A",
22
+ labelOfferNameB: "Teklif B",
23
+ labelRateMode: "Faizi biliyorum",
24
+ labelPaymentMode: "Ödemeyi biliyorum",
25
+ labelPreset: "Karşılaştırmayı başlat",
26
+ labelPresetBalanced: "Dengeli teklifler",
27
+ labelPresetLowFee: "Düşük faiz ve ücretler",
28
+ labelPresetLongTerm: "Daha uzun vade",
29
+ labelReset: "Değerleri sıfırla",
30
+ labelCopy: "Karşılaştırmayı kopyala",
31
+ labelCopied: "Karşılaştırma kopyalandı",
32
+ labelEffectiveApr: "Efektif yıllık maliyet",
33
+ labelNominalRate: "Nominal faiz",
34
+ labelMonthlyPaymentResult: "Aylık ödeme",
35
+ labelTotalPaid: "Toplam ödenen",
36
+ labelTotalFees: "Senaryodaki ücretler",
37
+ labelFinanceCost: "Anaparayı aşan maliyet",
38
+ labelNetCashReceived: "Başlangıç ücretlerinden sonra alınan",
39
+ labelWinner: "Hangi teklif daha ucuz?",
40
+ labelLowerCost: "Daha düşük efektif maliyet",
41
+ labelHigherCost: "Daha yüksek efektif maliyet",
42
+ labelTie: "Neredeyse eşit",
43
+ labelNeedValidInputs: "Geçerli bilgiler gerekli",
44
+ labelInvalidPrincipal:
45
+ "Borç alınan tutar sıfırdan ve başlangıç ücretlerinden büyük olmalıdır.",
46
+ labelInvalidTerm: "1 ile 600 ay arasında tam sayı bir vade kullanın.",
47
+ labelInvalidFees: "Ücretler negatif olamaz.",
48
+ labelInvalidPayment:
49
+ "Alınan net tutarı geri ödeyebilecek pozitif bir aylık ödeme girin.",
50
+ labelInvalidRate: "%0 ile %100 arasında nominal yıllık faiz kullanın.",
51
+ labelNoComparison: "Karşılaştırmak için iki teklifi de tamamlayın.",
52
+ labelTimeline: "Ödeme zaman çizelgesi",
53
+ labelStart: "Başlangıç",
54
+ labelMonthly: "Her ay",
55
+ labelEnd: "Son ay",
56
+ labelFormula: "Karşılaştırma nasıl çalışır",
57
+ labelFormulaText:
58
+ "Efektif yıllık maliyet, alınan tutarı iskonto edilmiş ödemeler ve ücretlerle eşitleyen aylık oranın yıllıklaştırılmış değeridir.",
59
+ labelApproximation:
60
+ "Tahmin eşit aylık ödemeleri, erteleme dönemi olmamasını ve yalnızca girdiğiniz ücretleri varsayar. Kredi verenin resmi APR değerinin yerine geçmez.",
61
+ labelScenarioSummary: "Senaryo özeti",
62
+ currencyCode: "TRY",
63
+ currencyLocale: "tr-TR",
64
+ };
65
+
66
+ const faq = [
67
+ {
68
+ question: "Faiz oranı ile efektif yıllık maliyet arasındaki fark nedir?",
69
+ answer:
70
+ "Nominal faiz, bakiye üzerinden alınan faizi gösterir. Efektif yıllık maliyet ayrıca girdiğiniz başlangıç, aylık ve son ücretlerin tutarını ve zamanını da dikkate alır.",
71
+ },
72
+ {
73
+ question: "Faiz yerine aylık ödeme girebilir miyim?",
74
+ answer:
75
+ "Evet. Teklif için bilinen aylık ödemeyi seçin. Hesaplayıcı alınan tutara, ödeme akışına ve ücretlere uyan aylık oranı tahmin eder.",
76
+ },
77
+ {
78
+ question: "Hangi teklif daha ucuz?",
79
+ answer:
80
+ "Önce efektif yıllık maliyeti karşılaştırın, sonra toplam ödenen ve alınan tutarı kontrol edin. Vade veya tutar farklıysa daha düşük yüzde yine de daha yüksek toplam maliyete yol açabilir.",
81
+ },
82
+ {
83
+ question: "Bu, kredi verenin resmi APR değeri mi?",
84
+ answer:
85
+ "Hayır. Girdilerinize dayanan şeffaf bir senaryo tahminidir. Vergiler, sigorta, ödeme tarihleri ve diğer maliyetler kredi verene ve yargı alanına göre farklı hesaplanabilir.",
86
+ },
87
+ ];
88
+
89
+ const howTo = [
90
+ {
91
+ name: "Tutarı ve vadeyi girin",
92
+ text: "Her teklif için alacağınız tutarı ve aylık ödeme sayısını ekleyin.",
93
+ },
94
+ {
95
+ name: "Bildiğiniz bilgiyi seçin",
96
+ text: "Teklifte bulunan nominal yıllık faizi veya aylık ödemeyi girin.",
97
+ },
98
+ {
99
+ name: "Tüm ücretleri ekleyin",
100
+ text: "Tam nakit akışını görmek için başlangıç, aylık ve son ücretleri girin.",
101
+ },
102
+ {
103
+ name: "Karşılaştırmayı okuyun",
104
+ text: "Efektif yıllık maliyeti kullanın, karar vermeden önce toplam ödenen ve alınan tutarı kontrol edin.",
105
+ },
106
+ ];
107
+
108
+ const schemas = [
109
+ {
110
+ "@context": "https://schema.org",
111
+ "@type": "SoftwareApplication",
112
+ name: "Kredi APR senaryo hesaplayıcısı",
113
+ description:
114
+ "Faiz, ödeme ve ücret içeren iki kredi senaryosunu karşılaştırır.",
115
+ applicationCategory: "FinanceApplication",
116
+ operatingSystem: "All",
117
+ offers: { "@type": "Offer", price: "0", priceCurrency: "TRY" },
118
+ },
119
+ {
120
+ "@context": "https://schema.org",
121
+ "@type": "FAQPage",
122
+ mainEntity: faq.map((item) => ({
123
+ "@type": "Question",
124
+ name: item.question,
125
+ acceptedAnswer: { "@type": "Answer", text: item.answer },
126
+ })),
127
+ },
128
+ {
129
+ "@context": "https://schema.org",
130
+ "@type": "HowTo",
131
+ name: "İki kredi teklifini karşılaştırma",
132
+ description:
133
+ "İki kredinin nakit akışını modelleyip efektif yıllık maliyetlerini karşılaştırın.",
134
+ step: howTo.map((step, index) => ({
135
+ "@type": "HowToStep",
136
+ position: index + 1,
137
+ name: step.name,
138
+ text: step.text,
139
+ })),
140
+ },
141
+ ];
142
+
143
+ export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
144
+ slug: "kredi-apr-senaryo-hesaplayici",
145
+ title: "Kredi APR senaryo hesaplayıcısı",
146
+ description:
147
+ "Karar vermeden önce efektif yıllık maliyeti tahmin etmek için iki kredi teklifinin faizini, ödeme planını ve ücretlerini karşılaştırın.",
148
+ ui,
149
+ faq,
150
+ bibliography,
151
+ howTo,
152
+ schemas,
153
+ seo: [
154
+ {
155
+ type: "title",
156
+ text: "Kredileri efektif yıllık maliyete göre karşılaştırın",
157
+ level: 2,
158
+ },
159
+ {
160
+ type: "paragraph",
161
+ html: "<p>Düşük görünen bir faiz oranı dosya ücretini, aylık hizmet ücretini veya son maliyeti gizleyebilir. Bu hesaplayıcı iki teklifin ayrıntılarını karşılaştırılabilir nakit akışlarına çevirerek gerçekten aldığınız paranın maliyetini gösterir.</p>",
162
+ },
163
+ { type: "title", text: "Tahmin neleri içerir", level: 3 },
164
+ {
165
+ type: "paragraph",
166
+ html: "<p>Her teklif için tutarı, vadeyi, nominal yıllık faizi veya bilinen aylık ödemeyi ve farklı zamanlardaki ücretleri girin. Hesaplayıcı alınan net tutarı iskonto edilmiş ödemeler ve ücretlerle dengeleyen aylık oranı bulur ve yıllıklaştırır.</p>",
167
+ },
168
+ {
169
+ type: "paragraph",
170
+ html: "<p>Böylece kredi fiyatı yalnızca faiz oranıyla sınırlı kalmaz. Resmi APR yerel kurallara ve senaryoda bulunmayan varsayımlara bağlı olabileceği için sonuç bir tahmindir.</p>",
171
+ },
172
+ { type: "title", text: "Sonuç nasıl okunur", level: 3 },
173
+ {
174
+ type: "list",
175
+ items: [
176
+ "Tutar ve vade benzer olduğunda efektif yıllık maliyeti karşılaştırın.",
177
+ "Gerçek nakit etkisini anlamak için toplam ödemeyi kontrol edin.",
178
+ "Başlangıç ücretlerinden sonra alınan tutara bakın.",
179
+ "Her maliyetin ne zaman oluştuğunu zaman çizelgesinde görün.",
180
+ ],
181
+ },
182
+ {
183
+ type: "tip",
184
+ title: "Son referans kredi verenin belgesidir",
185
+ html: "<p>Gerçek bir sözleşmede kredi verenin resmi APR değerini aynı varsayımlarla karşılaştırın. Sigorta, vergi, değişken faiz, erken ödeme ücretleri ve girmediğiniz masrafları sorun.</p>",
186
+ },
187
+ { type: "title", text: "Senaryo tahmininin sınırları", level: 3 },
188
+ {
189
+ type: "paragraph",
190
+ html: "<p>Araç eşit aylık ödemeleri, erteleme dönemi olmamasını ve başlangıçta, vade sırasında veya son ayda oluşan ücretleri varsayar. Ödeme gücünü, onayı, yasallığı veya ürünün resmi APR değerini doğrulamaz.</p>",
191
+ },
192
+ ],
193
+ };
@@ -0,0 +1,181 @@
1
+ import type { ToolLocaleContent } from "../../../types";
2
+ import { bibliography } from "../bibliography";
3
+ import type { LoanAprScenarioCalculatorUI } from "../ui";
4
+
5
+ const ui: LoanAprScenarioCalculatorUI = {
6
+ labelScenarioA: "方案 A",
7
+ labelScenarioB: "方案 B",
8
+ labelScenarioName: "方案名称",
9
+ labelCurrency: "货币",
10
+ labelApproximateRates: "用于规划的近似换算系数,不是实时汇率。",
11
+ labelPrincipal: "借款金额",
12
+ labelTerm: "还款期限",
13
+ labelMonths: "个月",
14
+ labelInputBasis: "你知道哪些数据?",
15
+ labelAnnualRate: "名义年利率",
16
+ labelMonthlyPayment: "已知月供",
17
+ labelUpfrontFees: "前期费用",
18
+ labelMonthlyFees: "月度费用",
19
+ labelFinalFees: "最后费用",
20
+ labelOfferNameA: "方案 A",
21
+ labelOfferNameB: "方案 B",
22
+ labelRateMode: "我知道利率",
23
+ labelPaymentMode: "我知道月供",
24
+ labelPreset: "开始比较",
25
+ labelPresetBalanced: "均衡方案",
26
+ labelPresetLowFee: "低利率加费用",
27
+ labelPresetLongTerm: "更长期限",
28
+ labelReset: "重置数值",
29
+ labelCopy: "复制比较结果",
30
+ labelCopied: "已复制比较结果",
31
+ labelEffectiveApr: "有效年度成本",
32
+ labelNominalRate: "名义利率",
33
+ labelMonthlyPaymentResult: "月供",
34
+ labelTotalPaid: "总支付",
35
+ labelTotalFees: "场景费用",
36
+ labelFinanceCost: "超过本金的成本",
37
+ labelNetCashReceived: "扣除前期费用后的到账金额",
38
+ labelWinner: "哪个方案成本更低?",
39
+ labelLowerCost: "有效成本更低",
40
+ labelHigherCost: "有效成本更高",
41
+ labelTie: "几乎相同",
42
+ labelNeedValidInputs: "需要有效数据",
43
+ labelInvalidPrincipal: "借款金额必须大于零,并且高于前期费用。",
44
+ labelInvalidTerm: "请输入1到600个月之间的整数期限。",
45
+ labelInvalidFees: "费用不能为负数。",
46
+ labelInvalidPayment: "请输入能够偿还到账净额的正数月供。",
47
+ labelInvalidRate: "请输入0%到100%之间的名义年利率。",
48
+ labelNoComparison: "请填写两个方案后再比较。",
49
+ labelTimeline: "付款时间线",
50
+ labelStart: "开始",
51
+ labelMonthly: "每月",
52
+ labelEnd: "最后一个月",
53
+ labelFormula: "比较方式",
54
+ labelFormulaText:
55
+ "有效年度成本是将月利率年化后的结果,它使到账金额等于折现后的付款和费用。",
56
+ labelApproximation:
57
+ "估算假设月供相同、没有宽限期,并且只包含你输入的费用。它不能替代贷款机构提供的正式 APR。",
58
+ labelScenarioSummary: "场景摘要",
59
+ currencyCode: "CNY",
60
+ currencyLocale: "zh-CN",
61
+ };
62
+
63
+ const faq = [
64
+ {
65
+ question: "利率和有效年度成本有什么区别?",
66
+ answer:
67
+ "名义利率描述余额产生的利息。有效年度成本还会反映你输入的前期、月度和最后费用的金额与发生时间。",
68
+ },
69
+ {
70
+ question: "可以输入月供而不是利率吗?",
71
+ answer:
72
+ "可以。请为该方案选择已知月供,计算器会根据到账金额、付款流和费用推算相应的月利率。",
73
+ },
74
+ {
75
+ question: "哪个方案更便宜?",
76
+ answer:
77
+ "先比较有效年度成本,再查看总支付和到账金额。如果期限或金额不同,百分比较低的方案仍可能有更高的总成本。",
78
+ },
79
+ {
80
+ question: "这是贷款机构的正式 APR 吗?",
81
+ answer:
82
+ "不是。这是根据输入数据得出的透明场景估算。不同贷款机构和地区可能以不同方式计算税费、保险、付款日期和其他成本。",
83
+ },
84
+ ];
85
+
86
+ const howTo = [
87
+ {
88
+ name: "输入金额和期限",
89
+ text: "为每个方案输入预计到账金额和月度还款次数。",
90
+ },
91
+ { name: "选择已知数据", text: "根据方案资料输入名义年利率或月供。" },
92
+ {
93
+ name: "加入所有费用",
94
+ text: "输入开始时、每月和最后产生的费用,以反映完整现金流。",
95
+ },
96
+ {
97
+ name: "阅读比较结果",
98
+ text: "使用有效年度成本比较,并在决定前查看总支付和到账金额。",
99
+ },
100
+ ];
101
+
102
+ const schemas = [
103
+ {
104
+ "@context": "https://schema.org",
105
+ "@type": "SoftwareApplication",
106
+ name: "贷款 APR 场景计算器",
107
+ description: "比较包含利率、月供和费用的两个贷款场景。",
108
+ applicationCategory: "FinanceApplication",
109
+ operatingSystem: "All",
110
+ offers: { "@type": "Offer", price: "0", priceCurrency: "CNY" },
111
+ },
112
+ {
113
+ "@context": "https://schema.org",
114
+ "@type": "FAQPage",
115
+ mainEntity: faq.map((item) => ({
116
+ "@type": "Question",
117
+ name: item.question,
118
+ acceptedAnswer: { "@type": "Answer", text: item.answer },
119
+ })),
120
+ },
121
+ {
122
+ "@context": "https://schema.org",
123
+ "@type": "HowTo",
124
+ name: "比较两个贷款方案",
125
+ description: "建立两个贷款的现金流并比较有效年度成本。",
126
+ step: howTo.map((step, index) => ({
127
+ "@type": "HowToStep",
128
+ position: index + 1,
129
+ name: step.name,
130
+ text: step.text,
131
+ })),
132
+ },
133
+ ];
134
+
135
+ export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
136
+ slug: "loan-apr-scenario-calculator",
137
+ title: "贷款 APR 场景计算器",
138
+ description:
139
+ "比较两个贷款方案的利率、还款安排和费用,在决定前估算有效年度成本。",
140
+ ui,
141
+ faq,
142
+ bibliography,
143
+ howTo,
144
+ schemas,
145
+ seo: [
146
+ { type: "title", text: "按有效年度成本比较贷款", level: 2 },
147
+ {
148
+ type: "paragraph",
149
+ html: "<p>较低的广告利率可能隐藏手续费、月度服务费或最后费用。这个计算器会把两个方案的细节转换为可比较的现金流,让你看到实际到账资金的成本。</p>",
150
+ },
151
+ { type: "title", text: "估算包含哪些内容", level: 3 },
152
+ {
153
+ type: "paragraph",
154
+ html: "<p>为每个方案输入借款金额、期限、名义年利率或已知月供,以及不同时间产生的费用。计算器会找到使到账净额与折现后的付款和费用相平衡的月利率,然后将其年化。</p>",
155
+ },
156
+ {
157
+ type: "paragraph",
158
+ html: "<p>这样比较的不只是利率本身。正式 APR 可能遵循地区规则并包含你没有输入的假设,因此这里的结果明确属于估算。</p>",
159
+ },
160
+ { type: "title", text: "如何阅读结果", level: 3 },
161
+ {
162
+ type: "list",
163
+ items: [
164
+ "当金额和期限接近时,比较有效年度成本。",
165
+ "查看总支付,了解实际现金影响。",
166
+ "查看扣除前期费用后的到账金额。",
167
+ "使用付款时间线了解每项费用何时发生。",
168
+ ],
169
+ },
170
+ {
171
+ type: "tip",
172
+ title: "最终请以贷款文件为准",
173
+ html: "<p>比较真实合同时,请用相同假设核对贷款机构的 APR。确认保险、税费、浮动利率、提前还款费用以及未输入的收费。</p>",
174
+ },
175
+ { type: "title", text: "场景估算的限制", level: 3 },
176
+ {
177
+ type: "paragraph",
178
+ html: "<p>工具假设月供相同、没有宽限期,并只处理开始时、期限中或最后一个月的费用。它不能证明负担能力、审批结果、合法性或产品的正式 APR。</p>",
179
+ },
180
+ ],
181
+ };
@@ -0,0 +1,11 @@
1
+ import type { ToolDefinition } from "../../types";
2
+ import { loanAprScenarioCalculator } from "./entry";
3
+
4
+ export * from "./entry";
5
+
6
+ export const LOAN_APR_SCENARIO_CALCULATOR_TOOL: ToolDefinition = {
7
+ entry: loanAprScenarioCalculator,
8
+ Component: () => import("./component.astro"),
9
+ SEOComponent: () => import("./seo.astro"),
10
+ BibliographyComponent: () => import("./bibliography.astro"),
11
+ };