@jjlmoya/utils-home 1.29.0 → 1.30.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 (30) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +1 -0
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/applianceCostCalculator/appliance-cost-calculator.css +635 -0
  7. package/src/tool/applianceCostCalculator/bibliography.astro +14 -0
  8. package/src/tool/applianceCostCalculator/bibliography.ts +14 -0
  9. package/src/tool/applianceCostCalculator/component.astro +322 -0
  10. package/src/tool/applianceCostCalculator/entry.ts +29 -0
  11. package/src/tool/applianceCostCalculator/i18n/de.ts +229 -0
  12. package/src/tool/applianceCostCalculator/i18n/en.ts +229 -0
  13. package/src/tool/applianceCostCalculator/i18n/es.ts +229 -0
  14. package/src/tool/applianceCostCalculator/i18n/fr.ts +229 -0
  15. package/src/tool/applianceCostCalculator/i18n/id.ts +229 -0
  16. package/src/tool/applianceCostCalculator/i18n/it.ts +229 -0
  17. package/src/tool/applianceCostCalculator/i18n/ja.ts +229 -0
  18. package/src/tool/applianceCostCalculator/i18n/ko.ts +229 -0
  19. package/src/tool/applianceCostCalculator/i18n/nl.ts +229 -0
  20. package/src/tool/applianceCostCalculator/i18n/pl.ts +229 -0
  21. package/src/tool/applianceCostCalculator/i18n/pt.ts +229 -0
  22. package/src/tool/applianceCostCalculator/i18n/ru.ts +229 -0
  23. package/src/tool/applianceCostCalculator/i18n/sv.ts +229 -0
  24. package/src/tool/applianceCostCalculator/i18n/tr.ts +229 -0
  25. package/src/tool/applianceCostCalculator/i18n/zh.ts +229 -0
  26. package/src/tool/applianceCostCalculator/index.ts +9 -0
  27. package/src/tool/applianceCostCalculator/logic.ts +122 -0
  28. package/src/tool/applianceCostCalculator/seo.astro +15 -0
  29. package/src/tool/applianceCostCalculator/ui.ts +41 -0
  30. package/src/tools.ts +2 -0
@@ -0,0 +1,229 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ApplianceCostCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'ev-aletleri-maliyet-hesaplayici';
7
+ const title = 'Ev Aletleri Su ve Enerji Döngü Maliyet Hesaplayıcı';
8
+ const description =
9
+ 'Çamaşır makinesi, bulaşık makinesi ve çamaşır kurutma makinesinin her döngüsünün gerçek maliyetini hesaplayın. Her döngünün ne kadar elektrik, su ve deterjan maliyetini gösterin ve Eco moduna geçerek ne kadar tasarruf edebileceğinizi keşfedin.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'Bir çamaşır makinesi döngüsü ne kadar mal olur?',
14
+ answer:
15
+ 'Tipik bir Eco 40°C döngüsü yaklaşık 0,45 kWh elektrik ve 40 litre su kullanır. Ortalama Avrupa fiyatlarında bu, başına yaklaşık 0,10 ila 0,15 euroya mal olur. Yoğun bir 60°C döngüsü 1,2 kWh ve 70 litrenin üzerine çıkabilir, maliyeti başına 0,30 euroyu aşır.',
16
+ },
17
+ {
18
+ question: 'Bulaşık makinesini gece çalıştırmak daha ucuz mu?',
19
+ answer:
20
+ 'Elektrik sağlayıcınız zaman tarifeli fiyatlandırma kullanıyorsa, bulaşık makinesini pik saatler dışında çalıştırmak enerji maliyetini yüzde 30 veya daha fazla azaltabilir. Pik saatler genellikle hafta içi sabah ve akşamlardır. Kesin pik dışı aralığınızı doğrulamak için sözleşmenizi veya akıllı sayaç verilerinizi kontrol edin.',
21
+ },
22
+ {
23
+ question: 'Kurutma makinesi çok elektrik kullanır mı?',
24
+ answer:
25
+ 'Evet. Çamaşır kurutma makinesi en enerji yoğun ev aletlerinden biridir. Tek bir tam yük 2,5 ila 3,5 kWh tüketebilir, başına 0,50 ila 0,80 euroya mal olur. Isı pompası kurutma makinesi kullanmak veya giysileri açık havada asmak bu maliyeti yüzde 60 ila 80 oranında kesebilir.',
26
+ },
27
+ {
28
+ question: 'Bir bulaşık makinesi ne kadar su kullanır?',
29
+ answer:
30
+ 'Modern bulaşık makineleri şaşırtıcı derecede verimlidir. Standart bir Eco döngüsü başına yalnızca 8 ila 12 litre su kullanırken, yoğun bir program 14 ila 16 litre kullanabilir. Bu, aynı bulaşıkları akan musluk altında elde yıkamaktan çok daha azdır, bu da genellikle 40 ila 60 litre tüketir.',
31
+ },
32
+ {
33
+ question: 'Ev aletlerini kullanmak için en ucuz zaman nedir?',
34
+ answer:
35
+ 'Zaman tarifeli fiyatlandırma altında en ucuz dönemler genellikle gece yarısı, çok erken sabah ve hafta sonlarıdır. Bu pik dışı aralıklar, hafta içi pik saatlerden yüzde 30 ila 50 daha ucuz olabilir. Bazı sağlayıcılar hafta sonları ücretsiz saatler de sunar.',
36
+ },
37
+ {
38
+ question: 'Eco moduna geçmek gerçekten para kazandırır mı?',
39
+ answer:
40
+ 'Kesinlikle. Eco modları daha düşük sıcaklıklar, daha kısa ısıtma fazları ve daha az su kullanır. Tam bir yıl boyunca, çamaşır makinesi ve bulaşık makinesinde Normalden Eco\'ya geçmek, kullanım sıklığına ve yerel fiyatlara bağlı olarak, elektrik ve suda birlikte 50 ila 100 euro tasarruf edebilir.',
41
+ },
42
+ ];
43
+
44
+ const howToData = [
45
+ {
46
+ name: 'Cihazınızı seçin',
47
+ text: 'Hesaplayıcının üst kısmındaki çamaşır makinesi, bulaşık makinesi veya çamaşır kurutma makinesi simgesine dokunun. Her cihazın farklı enerji ve su tüketim profilleri vardır.',
48
+ },
49
+ {
50
+ name: 'Döngü türü seçin',
51
+ text: 'Yıkama programını ayarlamak için Eco, Normal veya Yoğun kaydırıcısını kullanın. Eco daha az enerji ve su kullanır. Yoğun en fazlasını kullanır.',
52
+ },
53
+ {
54
+ name: 'Yerel fiyatlarınızı girin',
55
+ text: 'kWh başına elektrik fiyatınızı ve litre başına su fiyatınızı yazın. Bunları fatura veya sağlayıcı web sitesinde bulabilirsiniz.',
56
+ },
57
+ {
58
+ name: 'Kullanım sıklığını ayarlayın',
59
+ text: 'Haftada kaç döngü çalıştırdığınızı girin. Bu, hesaplayıcının yıllık maliyetinizi ve potansiyel yıllık tasarrufunuzu tahmin etmesini sağlar.',
60
+ },
61
+ {
62
+ name: 'Kullanım saatini seçin',
63
+ text: 'Cihazı çalıştırmayı planladığınız saati seçin. Pik saatler kırmızıyla vurgulanır. Pik dışı saatler yeşildir ve zaman tarifeli fiyatlandırmanız varsa daha ucuzdur.',
64
+ },
65
+ {
66
+ name: 'Deterjan maliyetlerini açın/kapatın',
67
+ text: 'Fişe toz, sıvı veya kapsül başına bir tahmin eklenmesini istiyorsanız deterjan anahtarını etkinleştirin.',
68
+ },
69
+ ];
70
+
71
+ const faqSchema: WithContext<FAQPage> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'FAQPage',
74
+ mainEntity: faqData.map((item) => ({
75
+ '@type': 'Question',
76
+ name: item.question,
77
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
78
+ })),
79
+ };
80
+
81
+ const howToSchema: WithContext<HowTo> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'HowTo',
84
+ name: title,
85
+ description,
86
+ step: howToData.map((step) => ({
87
+ '@type': 'HowToStep',
88
+ name: step.name,
89
+ text: step.text,
90
+ })),
91
+ };
92
+
93
+ const appSchema: WithContext<SoftwareApplication> = {
94
+ '@context': 'https://schema.org',
95
+ '@type': 'SoftwareApplication',
96
+ name: title,
97
+ description,
98
+ applicationCategory: 'UtilityApplication',
99
+ operatingSystem: 'All',
100
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'TRY' },
101
+ inLanguage: 'tr',
102
+ };
103
+
104
+ export const content: ToolLocaleContent<ApplianceCostCalculatorUI> = {
105
+ slug,
106
+ title,
107
+ description,
108
+ faq: faqData,
109
+ bibliography,
110
+ howTo: howToData,
111
+ schemas: [faqSchema, howToSchema, appSchema],
112
+ seo: [
113
+ {
114
+ type: 'title',
115
+ text: 'Her Yükün Gizli Maliyeti',
116
+ level: 2,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: 'Çoğu insan tek bir çamaşır makinesi döngüsünün gerçekte ne kadara mal olduğu hakkında hiçbir fikre sahip değil. Üç aylık bir elektrik faturası görür ve aletlerin çalıştırmasının ucuz olduğunu varsayar. Gerçek şu ki, haftada beş yük çamaşır yıkayan bir aile yılda sadece yıkama için 200 eurodan fazla harcayabilir. Haftada üç kez bulaşık makinesi ve haftada iki kez kurutma makinesi ekleyin ve toplam yıllık 500 euroyu aşar. Bu hesaplayıcı her kuruşu ayrıntılandırır, böylece alışkanlıklarınızı optimize edebilirsiniz.',
121
+ },
122
+ {
123
+ type: 'stats',
124
+ items: [
125
+ { value: '0,45', label: 'kWh Eco Yıkama', icon: 'mdi:washing-machine' },
126
+ { value: '40L', label: 'Su Eco Yıkama', icon: 'mdi:water' },
127
+ { value: '%30', label: 'Pik Ek Ücreti', icon: 'mdi:lightning-bolt' },
128
+ ],
129
+ columns: 3,
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Neden Küçük Değişiklikler Çoğalır',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Tek bir döngü için bir derece sıcaklık veya birkaç litre su önemsiz görünür. Ancak yılda 250 döngü boyunca, bu küçük farklar ciddi paraya dönüşür. 60°C\'den 40°C\'ye düşmek, başına yaklaşık yüzde 40 enerji tasarrufu sağlar. Bulaşık makinesinde Normalden Eco\'ya geçmek her seferinde yaklaşık 3 litre su ve 0,3 kWh tasarruf eder. Bunlar marjinal kazançlar değil. Yeni alet satın almadan faturanızı küçültmenin en hızlı yoludur.',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ items: [
143
+ {
144
+ title: 'Yoğun Döngü',
145
+ description: 'Ağır kirli yükler için maksimum ısı ve su.',
146
+ icon: 'mdi:alert',
147
+ points: ['1,2 ila 3,5 kWh başına', '70 litre çamaşır makineleri için', 'Pik saat ek ücreti uygulanır', 'En yüksek yıllık maliyet'],
148
+ },
149
+ {
150
+ title: 'Eco Döngü',
151
+ description: 'Daha düşük sıcaklık, optimize edilmiş süre, minimum su.',
152
+ icon: 'mdi:check-circle',
153
+ points: ['0,45 ila 1,5 kWh başına', 'Yalnızca 8 ila 40 litre', 'Pik dışı zamanlama mümkün', 'En düşük yıllık maliyet'],
154
+ },
155
+ ],
156
+ columns: 2,
157
+ },
158
+ {
159
+ type: 'diagnostic',
160
+ variant: 'info',
161
+ title: 'Hızlı Cihaz Denetimi',
162
+ icon: 'mdi:clipboard-check',
163
+ badge: 'Eylem',
164
+ html: '<p style="margin:0">Çamaşır makinesini yalnızca tam dolu çalıştırın. Normal kirlilik için Eco programını kullanın. Zaman tarifeli fiyatlandırmanız varsa, bulaşık makinesini 22:00\'dan sonra gecikmeli başlatma için ayarlayın. Her döngüden sonra kurutma makinesi tüy filtresini temizleyerek verimliliği koruyun. Hava müsait olduğunda giysileri açık havada veya askıda kurutun.</p>',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Kullanım Zamanı ve Pik Fiyatlandırma',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Birçok elektrik sağlayıcısı artık günün saatine bağlı olarak farklı ücretler alıyor. Pik dönemler, genellikle hafta içi sabah ve akşamlar, pik dışı dönemlerden yüzde 30 ila 50 daha pahalı olabilir. 20:00\'de çalıştırılan tek bir yük 0,18 euroya mal olabilirken, aynı yük 02:00\'de sadece 0,12 euroya mal olur. Yıl boyunca, cihazlarınızı doğru zamanlayarak başka bir şey değiştirmeden 50 ila 100 euro tasarruf edebilirsiniz. Bu hesaplayıcı pik saatleri kırmızı ve pik dışı saatleri yeşil olarak vurgular, böylece önceden planlayabilirsiniz.',
174
+ },
175
+ {
176
+ type: 'summary',
177
+ title: 'Cihaz Maliyetlerini Nasıl Düşürürsünüz',
178
+ items: [
179
+ 'Bu hesaplayıcıyı cihazlarınız için başına gerçek döngü maliyetini bulmak için kullanın.',
180
+ 'Mümkün olduğunda Eco moduna geçerek yüzde 40\'a kadar enerji tasarrufu sağlayın.',
181
+ 'Verimliliği en üst düzeye çıkarmak için tam yükler çalıştırın, kısmi yükler değil.',
182
+ 'Tarifanız zaman tarifeli fiyatlandırmayı destekliyorsa, döngüleri pik dışı saatlere ertelemeye çalışın.',
183
+ 'Çamaşır kurutma makinesi kullanmak yerine giysileri havada kurutarak bu maliyeti tamamen ortadan kaldırın.',
184
+ 'Filtreleri temizleyin ve düzenli olarak kireç çözün, böylece cihazlar belirtilen verimlilikte çalışır.',
185
+ ],
186
+ },
187
+ ],
188
+ ui: {
189
+ labelAppliance: 'Cihaz',
190
+ applianceWasher: 'Çamaşır Makinesi',
191
+ applianceDishwasher: 'Bulaşık Makinesi',
192
+ applianceDryer: 'Kurutma Makinesi',
193
+ labelCycle: 'Program',
194
+ cycleEco: 'Eco',
195
+ cycleNormal: 'Normal',
196
+ cycleIntensive: 'Yoğun',
197
+ labelElectricityPrice: 'Elektrik Fiyatı',
198
+ unitPriceKwh: '₺/kWh',
199
+ labelWaterPrice: 'Su Fiyatı',
200
+ unitPriceLiter: '₺/L',
201
+ labelDetergent: 'Deterjan',
202
+ labelDetergentToggle: 'Deterjan maliyetini dahil et',
203
+ labelHour: 'Planlanan Saat',
204
+ peakBadge: 'Pik tarife aktif',
205
+ offPeakBadge: 'Pik dışı tarife',
206
+ receiptTitle: 'Maliyet Dağılımı',
207
+ receiptElectricity: 'Elektrik',
208
+ receiptWater: 'Su',
209
+ receiptDetergent: 'Deterjan',
210
+ receiptTotal: 'Döngü başına toplam',
211
+ receiptPerYear: 'Yıllık tahmini',
212
+ comparisonTitle: 'Akıllı Değişim',
213
+ comparisonText: 'Normalden Eco\'ya geçmek her yükte para kazandırır.',
214
+ comparisonSavings: 'Yıllık tasarruf',
215
+ comparisonMonths: 'deterjan ayları',
216
+ badgePeak: 'Pik',
217
+ badgeOffPeak: 'Pik Dışı',
218
+ unitKwh: 'kWh',
219
+ unitLiters: 'L',
220
+ unitCycles: 'yıl',
221
+ labelCyclesPerWeek: 'Haftalık döngü',
222
+ currencySign: '₺',
223
+ labelCurrency: 'Para Birimi',
224
+ btnCurrUSD: '$',
225
+ btnCurrEUR: '€',
226
+ btnCurrGBP: '£',
227
+ btnCurrJPY: '¥',
228
+ },
229
+ };
@@ -0,0 +1,229 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ApplianceCostCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'appliance-cost-calculator';
7
+ const title = '家电用水用电单次成本计算器';
8
+ const description =
9
+ '计算洗衣机、洗碗机和烘干机的真实单次成本。准确查看每次洗涤周期消耗的电费、水费和洗涤剂费用,并发现切换到节能模式可节省多少。';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '洗衣机一个周期多少钱?',
14
+ answer:
15
+ '典型的节能40°C周期约使用0.45千瓦时电力和40升水。按照欧洲平均价格,每次洗涤成本约为0.10到0.15欧元。强力60°C周期可能超过1.2千瓦时和70升,将每次成本推高至0.30欧元以上。',
16
+ },
17
+ {
18
+ question: '晚上运行洗碗机更便宜吗?',
19
+ answer:
20
+ '如果您的电力供应商采用分时电价,在非高峰时段运行洗碗机可降低30%或更多的能源成本。高峰时段通常是工作日的上午和傍晚。查看您的合同或智能电表数据以确认您的确切非高峰时段。',
21
+ },
22
+ {
23
+ question: '烘干机耗电量大吗?',
24
+ answer:
25
+ '是的。烘干机是家庭中最耗电的电器之一。一次满载可消耗2.5到3.5千瓦时,每次周期成本为0.50到0.80欧元。使用热泵烘干机或在户外晾晒可将此成本降低60%到80%。',
26
+ },
27
+ {
28
+ question: '洗碗机用水量是多少?',
29
+ answer:
30
+ '现代洗碗机出奇地高效。标准节能周期每次仅使用8到12升水,而强力程序可能使用14到16升。这远低于在流动水龙头下手工清洗同样餐具,通常消耗40到60升。',
31
+ },
32
+ {
33
+ question: '使用家电最便宜的时间是什么时候?',
34
+ answer:
35
+ '在分时电价下,最便宜的时段通常是深夜、清晨和周末。这些非高峰时段可能比工作日高峰时段便宜30%到50%。部分供应商还在周末提供免费时段。',
36
+ },
37
+ {
38
+ question: '切换到节能模式真的能省钱吗?',
39
+ answer:
40
+ '绝对可以。节能模式使用更低的温度、更短的加热阶段和更少的水。一整年下来,将洗衣机和洗碗机从标准模式切换到节能模式,根据使用频率和当地价格,可节省50到100欧元的电费和的水费合计。',
41
+ },
42
+ ];
43
+
44
+ const howToData = [
45
+ {
46
+ name: '选择您的家电',
47
+ text: '点击计算器顶部的洗衣机、洗碗机或烘干机图标。每种家电都有不同的能耗和水耗特征。',
48
+ },
49
+ {
50
+ name: '选择洗涤程序类型',
51
+ text: '使用节能、标准或强力滑块设置洗涤程序。节能使用更少的能源和水。强力使用最多。',
52
+ },
53
+ {
54
+ name: '输入当地价格',
55
+ text: '输入每千瓦时电价和每升水价。您可以在水电账单或供应商网站上找到这些信息。',
56
+ },
57
+ {
58
+ name: '设置使用频率',
59
+ text: '输入您每周运行多少次。这使计算器能够估算您的年度成本和潜在的年节省金额。',
60
+ },
61
+ {
62
+ name: '选择使用时段',
63
+ text: '选择您计划运行家电的时段。高峰时段以红色高亮显示。非高峰时段为绿色,如果您采用分时电价则更便宜。',
64
+ },
65
+ {
66
+ name: '开启洗涤剂费用',
67
+ text: '如果您希望收据包含每次洗衣粉、液或胶囊的估算费用,请启用洗涤剂开关。',
68
+ },
69
+ ];
70
+
71
+ const faqSchema: WithContext<FAQPage> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'FAQPage',
74
+ mainEntity: faqData.map((item) => ({
75
+ '@type': 'Question',
76
+ name: item.question,
77
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
78
+ })),
79
+ };
80
+
81
+ const howToSchema: WithContext<HowTo> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'HowTo',
84
+ name: title,
85
+ description,
86
+ step: howToData.map((step) => ({
87
+ '@type': 'HowToStep',
88
+ name: step.name,
89
+ text: step.text,
90
+ })),
91
+ };
92
+
93
+ const appSchema: WithContext<SoftwareApplication> = {
94
+ '@context': 'https://schema.org',
95
+ '@type': 'SoftwareApplication',
96
+ name: title,
97
+ description,
98
+ applicationCategory: 'UtilityApplication',
99
+ operatingSystem: 'All',
100
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
101
+ inLanguage: 'zh',
102
+ };
103
+
104
+ export const content: ToolLocaleContent<ApplianceCostCalculatorUI> = {
105
+ slug,
106
+ title,
107
+ description,
108
+ faq: faqData,
109
+ bibliography,
110
+ howTo: howToData,
111
+ schemas: [faqSchema, howToSchema, appSchema],
112
+ seo: [
113
+ {
114
+ type: 'title',
115
+ text: '每次洗涤的隐性成本',
116
+ level: 2,
117
+ },
118
+ {
119
+ type: 'paragraph',
120
+ html: '大多数人完全不知道洗衣机一个周期的实际成本是多少。他们看到季度电费账单,就以为家电运行很便宜。事实上,一个每周洗五次的家庭每年仅洗衣就要花费超过200欧元。再加上每周三次洗碗机和每周两次烘干机,年度总额攀升至500欧元以上。这个计算器将每一分钱都拆解清楚,以便您优化使用习惯。',
121
+ },
122
+ {
123
+ type: 'stats',
124
+ items: [
125
+ { value: '0.45', label: '千瓦时节能洗涤', icon: 'mdi:washing-machine' },
126
+ { value: '40升', label: '节能洗涤用水', icon: 'mdi:water' },
127
+ { value: '30%', label: '峰值附加费', icon: 'mdi:lightning-bolt' },
128
+ ],
129
+ columns: 3,
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: '为什么微小改变会累积',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: '单次洗涤中一度温度或几升水看似微不足道。但在一年250次洗涤中,这些微小差异会累积成可观的金额。从60°C降至40°C,每次可减少约40%的能耗。将洗碗机从标准模式切换到节能模式,每次可节省约3升水和0.3千瓦时。这些不是边际收益。它们是在不购买新家电的情况下降低账单的最快方式。',
139
+ },
140
+ {
141
+ type: 'comparative',
142
+ items: [
143
+ {
144
+ title: '强力模式',
145
+ description: '最高温度和水量,用于重度污渍。',
146
+ icon: 'mdi:alert',
147
+ points: ['每次1.2到3.5千瓦时', '洗衣机70升', '高峰时段附加费适用', '年度成本最高'],
148
+ },
149
+ {
150
+ title: '节能模式',
151
+ description: '更低温度、优化时长、最少水量。',
152
+ icon: 'mdi:check-circle',
153
+ points: ['每次0.45到1.5千瓦时', '仅8到40升', '非高峰时段可行', '年度成本最低'],
154
+ },
155
+ ],
156
+ columns: 2,
157
+ },
158
+ {
159
+ type: 'diagnostic',
160
+ variant: 'info',
161
+ title: '家电快速审计',
162
+ icon: 'mdi:clipboard-check',
163
+ badge: '行动',
164
+ html: '<p style="margin:0">仅在满载时运行洗衣机。对于普通污渍使用节能程序。如果您采用分时电价,将洗碗机设置为22:00后延迟启动。每次使用后清洁烘干机绒毛过滤器以保持效率。天气允许时在户外或晾衣架上晾干衣物。</p>',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: '分时电价与峰值定价',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: '许多电力供应商现在根据一天中的不同时段收取不同费率。高峰时段,通常是工作日的上午和傍晚,可能比非高峰时段贵30%到50%。20:00运行的一次洗涤可能花费0.18欧元,而同一洗涤在02:00仅需0.12欧元。一年下来,正确安排家电使用时间可在不改变其他习惯的情况下节省50到100欧元。本计算器以红色高亮高峰时段,以绿色显示非高峰时段,以便您提前规划。',
174
+ },
175
+ {
176
+ type: 'summary',
177
+ title: '如何降低家电成本',
178
+ items: [
179
+ '使用本计算器找出家电每次周期的真实成本。',
180
+ '尽可能切换到节能模式,可节省高达40%的能源。',
181
+ '运行满载而非部分负载,以最大化效率。',
182
+ '如果您的电价支持分时定价,将周期推迟至非高峰时段。',
183
+ '在户外晾干衣物,而非使用烘干机,可完全消除其成本。',
184
+ '定期清洁过滤器和除垢,使家电保持额定效率运行。',
185
+ ],
186
+ },
187
+ ],
188
+ ui: {
189
+ labelAppliance: '家电',
190
+ applianceWasher: '洗衣机',
191
+ applianceDishwasher: '洗碗机',
192
+ applianceDryer: '烘干机',
193
+ labelCycle: '程序',
194
+ cycleEco: '节能',
195
+ cycleNormal: '标准',
196
+ cycleIntensive: '强力',
197
+ labelElectricityPrice: '电价',
198
+ unitPriceKwh: '¥/千瓦时',
199
+ labelWaterPrice: '水价',
200
+ unitPriceLiter: '¥/升',
201
+ labelDetergent: '洗涤剂',
202
+ labelDetergentToggle: '包含洗涤剂费用',
203
+ labelHour: '计划时段',
204
+ peakBadge: '峰值费率生效',
205
+ offPeakBadge: '非峰值费率',
206
+ receiptTitle: '成本明细',
207
+ receiptElectricity: '电费',
208
+ receiptWater: '水费',
209
+ receiptDetergent: '洗涤剂',
210
+ receiptTotal: '每次总成本',
211
+ receiptPerYear: '预计年费用',
212
+ comparisonTitle: '智能切换',
213
+ comparisonText: '从标准切换到节能模式,每次都能省钱。',
214
+ comparisonSavings: '年节省',
215
+ comparisonMonths: '个月洗涤剂',
216
+ badgePeak: '峰值',
217
+ badgeOffPeak: '非峰值',
218
+ unitKwh: '千瓦时',
219
+ unitLiters: '升',
220
+ unitCycles: '年',
221
+ labelCyclesPerWeek: '每周次数',
222
+ currencySign: '¥',
223
+ labelCurrency: '货币',
224
+ btnCurrUSD: '$',
225
+ btnCurrEUR: '€',
226
+ btnCurrGBP: '£',
227
+ btnCurrJPY: '¥',
228
+ },
229
+ };
@@ -0,0 +1,9 @@
1
+ import type { ToolDefinition } from '../../types';
2
+ import { applianceCostCalculator } from './entry';
3
+ export * from './entry';
4
+ export const APPLIANCE_COST_CALCULATOR_TOOL: ToolDefinition = {
5
+ entry: applianceCostCalculator,
6
+ Component: () => import('./component.astro'),
7
+ SEOComponent: () => import('./seo.astro'),
8
+ BibliographyComponent: () => import('./bibliography.astro'),
9
+ };
@@ -0,0 +1,122 @@
1
+ export interface ApplianceProfile {
2
+ id: 'washer' | 'dishwasher' | 'dryer';
3
+ kwhEco: number;
4
+ kwhNormal: number;
5
+ kwhIntensive: number;
6
+ litersEco: number;
7
+ litersNormal: number;
8
+ litersIntensive: number;
9
+ detergentEco: number;
10
+ detergentNormal: number;
11
+ detergentIntensive: number;
12
+ }
13
+
14
+ export interface CostResult {
15
+ electricityCost: number;
16
+ waterCost: number;
17
+ detergentCost: number;
18
+ totalCost: number;
19
+ annualCost: number;
20
+ kwhUsed: number;
21
+ litersUsed: number;
22
+ isPeak: boolean;
23
+ ecoSavingsPerYear: number;
24
+ ecoSavingsMonthsDetergent: number;
25
+ }
26
+
27
+ export interface CostInput {
28
+ applianceId: string;
29
+ cycle: 'eco' | 'normal' | 'intensive';
30
+ electricityPrice: number;
31
+ waterPrice: number;
32
+ detergentEnabled: boolean;
33
+ hour: number;
34
+ cyclesPerWeek: number;
35
+ }
36
+
37
+ export const APPLIANCE_PROFILES: Record<string, ApplianceProfile> = {
38
+ washer: {
39
+ id: 'washer',
40
+ kwhEco: 0.45, kwhNormal: 0.75, kwhIntensive: 1.2,
41
+ litersEco: 40, litersNormal: 55, litersIntensive: 70,
42
+ detergentEco: 0.15, detergentNormal: 0.25, detergentIntensive: 0.4,
43
+ },
44
+ dishwasher: {
45
+ id: 'dishwasher',
46
+ kwhEco: 0.6, kwhNormal: 1.0, kwhIntensive: 1.5,
47
+ litersEco: 8, litersNormal: 12, litersIntensive: 16,
48
+ detergentEco: 0.2, detergentNormal: 0.3, detergentIntensive: 0.5,
49
+ },
50
+ dryer: {
51
+ id: 'dryer',
52
+ kwhEco: 1.5, kwhNormal: 2.5, kwhIntensive: 3.5,
53
+ litersEco: 0, litersNormal: 0, litersIntensive: 0,
54
+ detergentEco: 0, detergentNormal: 0, detergentIntensive: 0,
55
+ },
56
+ };
57
+
58
+ export const PEAK_HOURS = new Set([8, 9, 10, 11, 18, 19, 20, 21]);
59
+ export const PEAK_MULTIPLIER = 1.35;
60
+
61
+ function getProfileValue(profile: ApplianceProfile, cycle: string, prefix: string): number {
62
+ return profile[`${prefix}${cycle.charAt(0).toUpperCase()}${cycle.slice(1)}` as keyof ApplianceProfile] as number;
63
+ }
64
+
65
+ interface SavingsInput {
66
+ profile: ApplianceProfile;
67
+ hour: number;
68
+ elec: number;
69
+ water: number;
70
+ det: boolean;
71
+ cycles: number;
72
+ }
73
+
74
+ function calcSavings(s: SavingsInput): number {
75
+ const kwhNormal = s.profile.kwhNormal;
76
+ const litersNormal = s.profile.litersNormal;
77
+ const detergentNormal = s.profile.detergentNormal;
78
+ const isPeak = PEAK_HOURS.has(s.hour);
79
+ const mult = isPeak ? PEAK_MULTIPLIER : 1;
80
+ const normalTotal = (kwhNormal * s.elec * mult) + (litersNormal * s.water) + (s.det ? detergentNormal : 0);
81
+ const ecoTotal = (s.profile.kwhEco * s.elec * mult) + (s.profile.litersEco * s.water) + (s.det ? s.profile.detergentEco : 0);
82
+ return (normalTotal - ecoTotal) * s.cycles * 52;
83
+ }
84
+
85
+ export function calculateCycleCost(input: CostInput): CostResult {
86
+ const profile = APPLIANCE_PROFILES[input.applianceId];
87
+ if (!profile) {
88
+ return {
89
+ electricityCost: 0, waterCost: 0, detergentCost: 0, totalCost: 0, annualCost: 0,
90
+ kwhUsed: 0, litersUsed: 0, isPeak: false, ecoSavingsPerYear: 0, ecoSavingsMonthsDetergent: 0,
91
+ };
92
+ }
93
+
94
+ const kwh = getProfileValue(profile, input.cycle, 'kwh');
95
+ const liters = getProfileValue(profile, input.cycle, 'liters');
96
+ const detergentUnit = getProfileValue(profile, input.cycle, 'detergent');
97
+
98
+ const isPeak = PEAK_HOURS.has(input.hour);
99
+ const multiplier = isPeak ? PEAK_MULTIPLIER : 1;
100
+
101
+ const electricityCost = kwh * input.electricityPrice * multiplier;
102
+ const waterCost = liters * input.waterPrice;
103
+ const detergentCost = input.detergentEnabled ? detergentUnit : 0;
104
+ const totalCost = electricityCost + waterCost + detergentCost;
105
+ const annualCost = totalCost * input.cyclesPerWeek * 52;
106
+
107
+ const ecoSavingsPerYear = calcSavings({
108
+ profile, hour: input.hour, elec: input.electricityPrice,
109
+ water: input.waterPrice, det: input.detergentEnabled, cycles: input.cyclesPerWeek,
110
+ });
111
+ const monthlyDetergentCost = (profile.detergentNormal * input.cyclesPerWeek * 52) / 12;
112
+ const ecoSavingsMonthsDetergent = ecoSavingsPerYear > 0 && monthlyDetergentCost > 0 ? Math.floor(ecoSavingsPerYear / monthlyDetergentCost) : 0;
113
+
114
+ return {
115
+ electricityCost, waterCost, detergentCost, totalCost, annualCost,
116
+ kwhUsed: kwh, litersUsed: liters, isPeak, ecoSavingsPerYear, ecoSavingsMonthsDetergent,
117
+ };
118
+ }
119
+
120
+ export function fmt2(n: number): string {
121
+ return n.toFixed(2);
122
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { applianceCostCalculator } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await applianceCostCalculator.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,41 @@
1
+ export interface ApplianceCostCalculatorUI extends Record<string, string> {
2
+ labelAppliance: string;
3
+ applianceWasher: string;
4
+ applianceDishwasher: string;
5
+ applianceDryer: string;
6
+ labelCycle: string;
7
+ cycleEco: string;
8
+ cycleNormal: string;
9
+ cycleIntensive: string;
10
+ labelElectricityPrice: string;
11
+ unitPriceKwh: string;
12
+ labelWaterPrice: string;
13
+ unitPriceLiter: string;
14
+ labelDetergent: string;
15
+ labelDetergentToggle: string;
16
+ labelHour: string;
17
+ peakBadge: string;
18
+ offPeakBadge: string;
19
+ receiptTitle: string;
20
+ receiptElectricity: string;
21
+ receiptWater: string;
22
+ receiptDetergent: string;
23
+ receiptTotal: string;
24
+ receiptPerYear: string;
25
+ comparisonTitle: string;
26
+ comparisonText: string;
27
+ comparisonSavings: string;
28
+ comparisonMonths: string;
29
+ badgePeak: string;
30
+ badgeOffPeak: string;
31
+ unitKwh: string;
32
+ unitLiters: string;
33
+ unitCycles: string;
34
+ labelCyclesPerWeek: string;
35
+ currencySign: string;
36
+ labelCurrency: string;
37
+ btnCurrUSD: string;
38
+ btnCurrEUR: string;
39
+ btnCurrGBP: string;
40
+ btnCurrJPY: string;
41
+ }
package/src/tools.ts CHANGED
@@ -12,6 +12,7 @@ import { AC_TONNAGE_CALCULATOR_TOOL } from './tool/acTonnageCalculator/index';
12
12
  import { WALL_PAINTING_CALCULATOR_TOOL } from './tool/wallPaintingCalculator/index';
13
13
  import { VAMPIRE_DRAW_SIMULATOR_TOOL } from './tool/vampireDrawSimulator/index';
14
14
  import { DESK_ERGONOMICS_TOOL } from './tool/deskErgonomics/index';
15
+ import { APPLIANCE_COST_CALCULATOR_TOOL } from './tool/applianceCostCalculator/index';
15
16
 
16
17
  export const ALL_TOOLS: ToolDefinition[] = [
17
18
  QR_GENERATOR_TOOL,
@@ -26,5 +27,6 @@ export const ALL_TOOLS: ToolDefinition[] = [
26
27
  WALL_PAINTING_CALCULATOR_TOOL,
27
28
  VAMPIRE_DRAW_SIMULATOR_TOOL,
28
29
  DESK_ERGONOMICS_TOOL,
30
+ APPLIANCE_COST_CALCULATOR_TOOL,
29
31
  ];
30
32