@jjlmoya/utils-forensic-science 1.13.0 → 1.14.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 (138) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +61 -59
  3. package/src/category/seo.astro +1 -1
  4. package/src/components/PreviewNavSidebar.astro +1 -1
  5. package/src/components/PreviewToolbar.astro +1 -1
  6. package/src/data.ts +1 -1
  7. package/src/entries.ts +70 -68
  8. package/src/env.d.ts +1 -1
  9. package/src/index.ts +32 -31
  10. package/src/pages/[locale]/[slug].astro +161 -159
  11. package/src/pages/[locale].astro +8 -5
  12. package/src/pages/index.astro +1 -1
  13. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  14. package/src/tests/diacritics_density.test.ts +1 -1
  15. package/src/tests/faq_count.test.ts +19 -19
  16. package/src/tests/i18n_coverage.test.ts +36 -36
  17. package/src/tests/inverted_punctuation.test.ts +1 -1
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/mocks/astro_mock.js +1 -1
  20. package/src/tests/no_h1_in_components.test.ts +1 -1
  21. package/src/tests/script_density.test.ts +94 -94
  22. package/src/tests/seo_length.test.ts +46 -46
  23. package/src/tests/seo_parity.test.ts +2 -7
  24. package/src/tests/seo_translation_completeness.test.ts +68 -0
  25. package/src/tests/seo_wellformed_export.test.ts +65 -0
  26. package/src/tests/tool_validation.test.ts +2 -2
  27. package/src/tests/translation_copy.test.ts +23 -24
  28. package/src/tool/bloodstain-pattern-origin-analyzer/component.astro +9 -9
  29. package/src/tool/bloodstain-pattern-origin-analyzer/i18n/zh.ts +1 -1
  30. package/src/tool/dna-profile-match-probability-lab/bibliography.astro +14 -0
  31. package/src/tool/dna-profile-match-probability-lab/bibliography.ts +16 -0
  32. package/src/tool/dna-profile-match-probability-lab/component.astro +121 -0
  33. package/src/tool/dna-profile-match-probability-lab/controller.ts +159 -0
  34. package/src/tool/dna-profile-match-probability-lab/dna-profile-match-probability-lab.css +485 -0
  35. package/src/tool/dna-profile-match-probability-lab/dom-views.ts +93 -0
  36. package/src/tool/dna-profile-match-probability-lab/entry.ts +29 -0
  37. package/src/tool/dna-profile-match-probability-lab/evaluator.ts +19 -0
  38. package/src/tool/dna-profile-match-probability-lab/i18n/de.ts +43 -0
  39. package/src/tool/dna-profile-match-probability-lab/i18n/en.ts +196 -0
  40. package/src/tool/dna-profile-match-probability-lab/i18n/es.ts +40 -0
  41. package/src/tool/dna-profile-match-probability-lab/i18n/fr.ts +10 -0
  42. package/src/tool/dna-profile-match-probability-lab/i18n/id.ts +41 -0
  43. package/src/tool/dna-profile-match-probability-lab/i18n/it.ts +10 -0
  44. package/src/tool/dna-profile-match-probability-lab/i18n/ja.ts +40 -0
  45. package/src/tool/dna-profile-match-probability-lab/i18n/ko.ts +40 -0
  46. package/src/tool/dna-profile-match-probability-lab/i18n/nl.ts +29 -0
  47. package/src/tool/dna-profile-match-probability-lab/i18n/pl.ts +10 -0
  48. package/src/tool/dna-profile-match-probability-lab/i18n/pt.ts +41 -0
  49. package/src/tool/dna-profile-match-probability-lab/i18n/ru.ts +29 -0
  50. package/src/tool/dna-profile-match-probability-lab/i18n/sv.ts +41 -0
  51. package/src/tool/dna-profile-match-probability-lab/i18n/tr.ts +10 -0
  52. package/src/tool/dna-profile-match-probability-lab/i18n/zh.ts +29 -0
  53. package/src/tool/dna-profile-match-probability-lab/index.ts +11 -0
  54. package/src/tool/dna-profile-match-probability-lab/localize.ts +107 -0
  55. package/src/tool/dna-profile-match-probability-lab/logic.test.ts +56 -0
  56. package/src/tool/dna-profile-match-probability-lab/logic.ts +139 -0
  57. package/src/tool/dna-profile-match-probability-lab/seo.astro +15 -0
  58. package/src/tool/dna-profile-match-probability-lab/storage.ts +26 -0
  59. package/src/tool/dna-profile-match-probability-lab/ui.ts +3 -0
  60. package/src/tool/fire-pattern-origin-analyzer/component.astro +1 -1
  61. package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +5 -1
  62. package/src/tool/fire-pattern-origin-analyzer/logic.ts +9 -2
  63. package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +8 -4
  64. package/src/tool/fire-pattern-origin-analyzer/view-model.ts +6 -2
  65. package/src/tool/forensic-age-estimator/bibliography.astro +1 -1
  66. package/src/tool/forensic-age-estimator/component.astro +1 -1
  67. package/src/tool/forensic-age-estimator/entry.ts +17 -17
  68. package/src/tool/forensic-age-estimator/i18n/de.ts +244 -244
  69. package/src/tool/forensic-age-estimator/i18n/en.ts +244 -244
  70. package/src/tool/forensic-age-estimator/i18n/es.ts +244 -244
  71. package/src/tool/forensic-age-estimator/i18n/fr.ts +244 -244
  72. package/src/tool/forensic-age-estimator/i18n/id.ts +244 -244
  73. package/src/tool/forensic-age-estimator/i18n/it.ts +244 -244
  74. package/src/tool/forensic-age-estimator/i18n/nl.ts +244 -244
  75. package/src/tool/forensic-age-estimator/i18n/pl.ts +244 -244
  76. package/src/tool/forensic-age-estimator/i18n/pt.ts +244 -244
  77. package/src/tool/forensic-age-estimator/i18n/ru.ts +244 -244
  78. package/src/tool/forensic-age-estimator/i18n/sv.ts +244 -244
  79. package/src/tool/forensic-age-estimator/i18n/tr.ts +244 -244
  80. package/src/tool/forensic-age-estimator/i18n/zh.ts +245 -245
  81. package/src/tool/forensic-age-estimator/index.ts +1 -1
  82. package/src/tool/forensic-age-estimator/seo.astro +1 -1
  83. package/src/tool/forensic-blood-test-simulator/component.astro +1 -1
  84. package/src/tool/forensic-fiber-comparison-microscope/component.astro +1 -1
  85. package/src/tool/forensic-fiber-comparison-microscope/render.ts +1 -1
  86. package/src/tool/forensic-fiber-comparison-microscope/view.ts +1 -1
  87. package/src/tool/forensic-fingerprint-minutiae-identifier/component.astro +2 -2
  88. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/ja.ts +2 -1
  89. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/zh.ts +2 -0
  90. package/src/tool/forensic-fingerprint-minutiae-identifier/renderer.ts +9 -8
  91. package/src/tool/forensic-glass-becke-line-simulator/component.astro +1 -1
  92. package/src/tool/forensic-glass-becke-line-simulator/view.ts +8 -6
  93. package/src/tool/forensic-image-authenticity-analyzer/component.astro +1 -1
  94. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -105
  95. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -105
  96. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -105
  97. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -105
  98. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +95 -90
  99. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -105
  100. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +7 -2
  101. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +4 -1
  102. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +95 -92
  103. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +95 -92
  104. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -105
  105. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +97 -92
  106. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +97 -93
  107. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +98 -93
  108. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +11 -0
  109. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +1 -1
  110. package/src/tool/forensic-sex-determinator/component.astro +3 -2
  111. package/src/tool/forensic-stature-estimator/component.astro +1 -1
  112. package/src/tool/forensic-stature-estimator/i18n/id.ts +4 -0
  113. package/src/tool/forensic-stature-estimator/i18n/nl.ts +4 -0
  114. package/src/tool/forensic-stature-estimator/i18n/ru.ts +4 -0
  115. package/src/tool/forensic-tlc-ink-simulator/component.astro +1 -1
  116. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +1 -0
  117. package/src/tool/forensic-toolmark-striation-matcher/component.astro +1 -1
  118. package/src/tool/forensic-toolmark-striation-matcher/logic.ts +1 -1
  119. package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +7 -6
  120. package/src/tool/forensic-toolmark-striation-matcher/view.ts +19 -20
  121. package/src/tool/gsr-dispersion-calculator/component.astro +1 -1
  122. package/src/tool/gsr-dispersion-calculator/logic.ts +1 -1
  123. package/src/tool/time-of-death-algor-mortis-calculator/entry.ts +2 -0
  124. package/src/tool/widmark-alcohol-simulator/component.astro +1 -1
  125. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +5 -0
  126. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +2 -1
  127. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +1 -0
  128. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +4 -1
  129. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +4 -1
  130. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +5 -1
  131. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +5 -1
  132. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +5 -1
  133. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +4 -1
  134. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +5 -1
  135. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +4 -1
  136. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +4 -1
  137. package/src/tools.ts +37 -35
  138. package/src/types.ts +4 -4
@@ -105,6 +105,8 @@ export const content: ToolLocaleContent = {
105
105
  text: '法中毒学とエタノールの体内薬物動態',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "表示値は選択した時刻と入力条件に依存します。時刻が不確かな場合は複数の条件を比較し、推定した情報を明示してください。曲線を単独の証拠として読まないことが重要です。" },
109
+ { type: 'paragraph', html: "観測データとモデルの仮定を分けて記録し、時刻、吸収、体重、分布係数、消失速度の不確かさを示してください。グラフは条件比較の学習用であり、正式な鑑定や法的判断を単独で決めるものではありません。" },
108
110
  {
109
111
  type: 'paragraph',
110
112
  html: 'エタノールの<strong>吸収、分布、および消失</strong>の生理学的プロセスを理解することは、法医学および交通事故解析において重要です。摂取されたアルコールは食道を通って胃に達し、一部がそこで直接血流に吸収されますが、大部分は小腸の上部で急速に吸収されます。胃からの排泄速度がアルコール吸収の律速段階となるため、胃の中に食物が存在すると、血中アルコール濃度曲線が緩やかになります。',
@@ -157,7 +159,8 @@ export const content: ToolLocaleContent = {
157
159
 
158
160
  { type: 'paragraph', html: "結果は計画や条件比較に使えますが、公式計算や専門家の助言の代わりにはなりません。" },
159
161
  { type: 'paragraph', html: "利用する前に、計算機が示す前提条件と結果を一緒に確認してください。" },
160
- { type: 'paragraph', html: "入力値、単位、丸め、日付、地域を確認してください。どれも推定結果を変える可能性があります。" },],
162
+ { type: 'paragraph', html: "入力値、単位、丸め、日付、地域を確認してください。どれも推定結果を変える可能性があります。" },
163
+ { type: 'paragraph', html: "最後に飲んだ時刻、吸収時間、体重、分布係数、消失速度などの前提を記録してください。結果は条件を比較するための数学的な推定であり、正式な鑑定や法的判断を置き換えるものではありません。" },],
161
164
  faq,
162
165
  bibliography,
163
166
  howTo,
@@ -105,6 +105,9 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Forensische Toxicologie en Farmacokinetiek van Ethanol',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "Bij de beoordeling horen ook de beperkingen van het model: alcohol wordt niet bij iedereen even snel opgenomen of afgebroken en een geschatte drinktijd kan de uitkomst sterk beïnvloeden. Noteer welke gegevens rechtstreeks zijn gemeten en welke zijn ingevuld. Gebruik de grafiek om gevoeligheid voor gewicht, verdelingsfactor, absorptie en eliminatie te bekijken. Een scenario met een lage foutmarge is nog geen bewijs dat de onderliggende feiten juist zijn. Voor officiële beslissingen zijn een gevalideerde methode, betrouwbare meetgegevens en deskundige interpretatie nodig." },
109
+ { type: 'paragraph', html: "De getoonde waarde hangt af van het gekozen tijdstip en de ingevoerde parameters. Bewaar de oorspronkelijke gegevens, geef aan welke informatie is geschat en vergelijk meerdere scenario's wanneer het tijdstip onzeker is. Zo blijft de foutmarge zichtbaar en wordt de curve niet als afzonderlijk bewijs gelezen." },
110
+ { type: 'paragraph', html: "Een transparante schatting onderscheidt waargenomen gegevens van modelaannames. Leg de tijdlijn, mogelijke absorptiefase en onzekerheid in de eliminatie vast. De grafiek is bedoeld om scenario's te vergelijken en kan op zichzelf geen verantwoordelijkheid of juridische conclusie vaststellen. Toon altijd het bereik en de aannames naast de berekende waarde." },
108
111
  {
109
112
  type: 'paragraph',
110
113
  html: 'De absorptie, distributie en eliminatie van ethanol in het menselijk lichaam zijn cruciale concepten binnen de forensische wetenschap en verkeersongevallenreconstructie. Na consumptie wordt alcohol deels via de maag en hoofdzakelijk via de dunne darm opgenomen. Voedsel in de maag vertraagt de maaglediging en verlaagt daardoor de piekwaarde van de alcoholconcentratie in het bloed aanzienlijk.',
@@ -157,7 +160,8 @@ export const content: ToolLocaleContent = {
157
160
 
158
161
  { type: 'paragraph', html: "Gebruik het resultaat voor planning en scenariokeuze; het vervangt geen officiële berekening of professioneel advies." },
159
162
  { type: 'paragraph', html: "Interpreteer het resultaat samen met de aannames van de calculator voordat u het gebruikt." },
160
- { type: 'paragraph', html: "Controleer invoer, eenheden, afronding, datum en jurisdictie, want elk onderdeel kan de schatting wijzigen." },],
163
+ { type: 'paragraph', html: "Controleer invoer, eenheden, afronding, datum en jurisdictie, want elk onderdeel kan de schatting wijzigen." },
164
+ { type: 'paragraph', html: "Leg voor een terugberekening afzonderlijk vast wanneer het laatste drankje is genuttigd, welke absorptieduur is aangenomen, welk gewicht en welke verdelingsfactor zijn gebruikt en welk eliminatietempo is gekozen. Alcohol kan na het laatste drankje nog worden opgenomen; voedsel, hydratatie en individuele variatie beïnvloeden de curve. De uitkomst is een wiskundige vergelijking van scenario's en geen directe meting of zelfstandig forensisch oordeel. Presenteer daarom altijd de aannames, het bereik en de onzekerheid naast de berekende waarde." },],
161
165
  faq,
162
166
  bibliography,
163
167
  howTo,
@@ -105,6 +105,9 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Toksykologia Sądowa i Farmakokinetyka Etanolu',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "Interpretacja musi uwzględniać ograniczenia modelu: alkohol nie wchłania się i nie jest eliminowany w identyczny sposób u każdej osoby, a niepewna godzina spożycia może znacząco zmienić wynik. Zapisz, które dane zmierzono bezpośrednio, a które przyjęto. Wykres pomaga zbadać wrażliwość na masę ciała, współczynnik dystrybucji, wchłanianie i eliminację. Niski błąd modelu nie dowodzi prawdziwości danych wejściowych. Decyzje urzędowe wymagają zwalidowanej metody, wiarygodnych pomiarów i opinii specjalisty." },
109
+ { type: 'paragraph', html: "Pokazana wartość zależy od wybranego czasu i wprowadzonych parametrów. Zachowaj dane źródłowe, zaznacz informacje oszacowane i porównaj kilka scenariuszy, gdy godzina jest niepewna. Dzięki temu margines błędu pozostaje widoczny, a krzywa nie jest traktowana jako samodzielny dowód." },
110
+ { type: 'paragraph', html: "Przejrzysta estymacja oddziela dane zaobserwowane od założeń modelu. Zapisz oś czasu, możliwą fazę wchłaniania i niepewność eliminacji. Wykres służy do porównywania scenariuszy i sam nie ustala odpowiedzialności ani wniosku prawnego. Obok wartości pokazuj zakres oraz wszystkie przyjęte założenia." },
108
111
  {
109
112
  type: 'paragraph',
110
113
  html: 'Zrozumienie procesów <strong>wchłaniania, dystrybucji i eliminacji etanolu</strong> stanowi kluczowy wymóg w toksykologii sądowej oraz przy rekonstrukcji wypadków drogowych. Po spożyciu alkohol trafia do żołądka, skąd wchłania się jedynie niewielka część. Ponad 80% dawki wchłania się w dwunastnicy i jelicie cienkim ze względu na ich ogromną powierzchnię. Szybkość opróżniania żołądka jest głównym czynnikiem limitującym, co tłumaczy, dlaczego posiłek spłaszcza i opóźnia szczyt krzywej alcoholemia.',
@@ -157,7 +160,8 @@ export const content: ToolLocaleContent = {
157
160
 
158
161
  { type: 'paragraph', html: "Używaj wyniku do planowania i porównywania scenariuszy; nie zastępuje obliczeń urzędowych ani porady specjalisty." },
159
162
  { type: 'paragraph', html: "Przed użyciem zinterpretuj wynik razem z założeniami pokazanymi przez kalkulator." },
160
- { type: 'paragraph', html: "Sprawdź dane, jednostki, zaokrąglenie, datę i jurysdykcję, ponieważ każdy element może zmienić szacunek." },],
163
+ { type: 'paragraph', html: "Sprawdź dane, jednostki, zaokrąglenie, datę i jurysdykcję, ponieważ każdy element może zmienić szacunek." },
164
+ { type: 'paragraph', html: "W obliczeniach wstecznych zapisz osobno czas ostatniego drinka, przyjęty okres wchłaniania, masę ciała, współczynnik dystrybucji oraz tempo eliminacji. Wchłanianie może trwać po zakończeniu picia, a posiłek, nawodnienie i różnice osobnicze zmieniają przebieg krzywej. Wynik służy do matematycznego porównania scenariuszy i nie jest bezpośrednim pomiarem ani samodzielną opinią sądowo-medyczną. Raport powinien pokazywać założenia, zakres niepewności i kontekst pomiaru." },],
161
165
  faq,
162
166
  bibliography,
163
167
  howTo,
@@ -105,6 +105,9 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Toxicologia Forense e Farmacocinética do Etanol',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "A interpretação deve considerar os limites do modelo: a absorção e a eliminação do álcool variam entre pessoas e uma hora de consumo incerta pode alterar bastante o resultado. Registe quais dados foram medidos diretamente e quais foram assumidos. O gráfico ajuda a estudar a sensibilidade ao peso, ao fator de distribuição, à absorção e à eliminação. Uma pequena margem matemática não prova que os dados de entrada estejam corretos. Decisões oficiais exigem método validado, medições fiáveis e avaliação especializada." },
109
+ { type: 'paragraph', html: "O valor apresentado depende da hora escolhida e dos parâmetros introduzidos. Preserve os dados originais, indique que informações foram estimadas e compare vários cenários quando a hora for incerta. Assim, a margem de erro permanece visível e a curva não é interpretada como prova isolada." },
110
+ { type: 'paragraph', html: "Uma estimativa transparente distingue dados observados das premissas do modelo. Registe a linha temporal, a possível fase de absorção e a incerteza da eliminação. O gráfico serve para comparar cenários e não determina, por si só, responsabilidade ou uma conclusão jurídica. Apresente sempre o intervalo e as premissas junto do valor calculado." },
108
111
  {
109
112
  type: 'paragraph',
110
113
  html: 'A compreensão da <strong>absorção, distribuição e eliminação do etanol</strong> é essencial na ciência forense e reconstrução de acidentes de trânsito. Após a ingestão, o álcool desloca-se pelo esôfago até o estômago, onde ocorre uma pequena absorção direta. A maior parte do etanol é absorvida no duodeno devido à sua grande área de superfície. A taxa com que o estômago esvazia o seu conteúdo é o principal fator limitador da absorção de álcool, o que justifica a grande influência da comida no pico de alcoolemia.',
@@ -157,7 +160,8 @@ export const content: ToolLocaleContent = {
157
160
 
158
161
  { type: 'paragraph', html: "Use o resultado para planear e comparar cenários; não substitui um cálculo oficial nem aconselhamento profissional." },
159
162
  { type: 'paragraph', html: "Interprete o resultado juntamente com as premissas apresentadas pela calculadora antes de o utilizar." },
160
- { type: 'paragraph', html: "Confirme dados, unidades, arredondamento, data e jurisdição, pois cada elemento pode alterar a estimativa." },],
163
+ { type: 'paragraph', html: "Confirme dados, unidades, arredondamento, data e jurisdição, pois cada elemento pode alterar a estimativa." },
164
+ { type: 'paragraph', html: "Numa retroestimativa, registe separadamente a hora da última bebida, o período de absorção assumido, o peso, o fator de distribuição e a taxa de eliminação. A absorção pode continuar depois do fim do consumo, enquanto a comida, a hidratação e as diferenças individuais alteram a curva. O valor apresentado é uma comparação matemática de cenários, não uma medição direta nem um parecer forense autónomo. Mostre sempre as premissas, o intervalo de incerteza e o contexto da medição." },],
161
165
  faq,
162
166
  bibliography,
163
167
  howTo,
@@ -105,6 +105,8 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Судебная токсикология и фармакокинетика этанола',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "Показанное значение зависит от выбранного времени и введённых параметров. Сохраняйте исходные данные, отмечайте оценочные сведения и сравнивайте несколько сценариев, если время неизвестно точно. Так границы ошибки остаются видимыми, а кривая не воспринимается как отдельное доказательство." },
109
+ { type: 'paragraph', html: "Прозрачная оценка отделяет наблюдаемые данные от допущений модели. Указывайте временную шкалу, возможную фазу всасывания и неопределённость выведения. График предназначен для сравнения сценариев и сам по себе не устанавливает ответственность или юридический вывод. Рядом с результатом показывайте диапазон и все использованные предположения." },
108
110
  {
109
111
  type: 'paragraph',
110
112
  html: 'Понимание процессов <strong>всасывания, распределения и выведения этанола</strong> является фундаментальным требованием в судебной медицине и при реконструкции дорожно-транспортных происшествий. После употребления спирт проходит по пищеводу в желудок, где всасывается лишь незначительная часть. Основная часть всасывается в двенадцатиперстной кишке и тонком кишечнике из-за их колоссальной площади поверхности. Скорость эвакуации содержимого желудка выступает ключевым лимитирующим фактором, объясняя, почему пища в желудке сглаживает кривую BAC.',
@@ -157,7 +159,8 @@ export const content: ToolLocaleContent = {
157
159
 
158
160
  { type: 'paragraph', html: "Используйте результат для планирования и сравнения сценариев; он не заменяет официальный расчёт или консультацию специалиста." },
159
161
  { type: 'paragraph', html: "Перед использованием интерпретируйте результат вместе с допущениями, указанными калькулятором." },
160
- { type: 'paragraph', html: "Проверьте ввод, единицы, округление, дату и юрисдикцию: каждый параметр может изменить оценку." },],
162
+ { type: 'paragraph', html: "Проверьте ввод, единицы, округление, дату и юрисдикцию: каждый параметр может изменить оценку." },
163
+ { type: 'paragraph', html: "Для обратного расчёта отдельно фиксируйте время последнего напитка, принятое время всасывания, массу тела, коэффициент распределения и скорость выведения. Всасывание может продолжаться после окончания употребления, а еда, гидратация и индивидуальные различия меняют кривую. Показатель предназначен для математического сравнения сценариев, а не является прямым измерением или самостоятельным судебно-медицинским заключением. В отчёте должны быть видны допущения, диапазон неопределённости и контекст измерения." },],
161
164
  faq,
162
165
  bibliography,
163
166
  howTo,
@@ -105,6 +105,9 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Rättstoxikologi och Etylalkoholens Farmakokinetik',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "Tolkningen måste också ta hänsyn till modellens begränsningar: alkohol absorberas och elimineras inte på samma sätt hos alla personer, och en osäker konsumtionstid kan ändra resultatet betydligt. Markera vilka uppgifter som är direkt uppmätta och vilka som är antagna. Diagrammet hjälper till att undersöka känslighet för vikt, fördelningsfaktor, absorption och eliminering. En liten matematisk felmarginal bevisar inte att indata är riktiga. Officiella beslut kräver validerad metod, tillförlitliga mätningar och professionell bedömning." },
109
+ { type: 'paragraph', html: "Det visade värdet beror på vald tidpunkt och angivna parametrar. Bevara ursprungsuppgifterna, markera vilka uppgifter som är uppskattade och jämför flera scenarier när tiden är osäker. Då förblir felmarginalen synlig och kurvan kan inte läsas som ett fristående bevis." },
110
+ { type: 'paragraph', html: "En transparent uppskattning skiljer observerade uppgifter från modellens antaganden. Dokumentera tidslinjen, den möjliga absorptionsfasen och osäkerheten i elimineringen. Diagrammet används för att jämföra scenarier och kan inte ensamt fastställa ansvar eller en juridisk slutsats. Visa alltid intervallet och antagandena tillsammans med värdet." },
108
111
  {
109
112
  type: 'paragraph',
110
113
  html: 'Förståelse för <strong>upptag, fördelning och förbränning av etanol</strong> är ett grundkrav inom rättsmedicin och trafikolycksrekonstruktion. Efter konsumtion förs alkohol via matstrupen till magsäcken där en liten andel tas upp direkt. Huvuddelen av upptaget sker dock i tunntarmen på grund av dess mycket stora yta. Magsäckstömningens hastighet är den begränsande faktorn vilket förklarar varför mat i magen dämpar promillekurvan avsevärt.',
@@ -157,7 +160,8 @@ export const content: ToolLocaleContent = {
157
160
 
158
161
  { type: 'paragraph', html: "Använd resultatet för planering och scenariejämförelser; det ersätter inte en officiell beräkning eller professionell rådgivning." },
159
162
  { type: 'paragraph', html: "Tolka resultatet tillsammans med kalkylatorns antaganden innan du använder det." },
160
- { type: 'paragraph', html: "Kontrollera indata, enheter, avrundning, datum och rättsområde eftersom varje del kan ändra uppskattningen." },],
163
+ { type: 'paragraph', html: "Kontrollera indata, enheter, avrundning, datum och rättsområde eftersom varje del kan ändra uppskattningen." },
164
+ { type: 'paragraph', html: "Vid en bakåträkning ska tiden för den sista drycken, det antagna upptaget, kroppsvikten, fördelningsfaktorn och eliminationshastigheten dokumenteras var för sig. Upptaget kan fortsätta efter den sista drinken, och mat, vätskestatus samt individuella skillnader påverkar kurvan. Resultatet är en matematisk jämförelse av scenarier, inte en direkt mätning eller ett självständigt rättsmedicinskt utlåtande. Visa därför alltid antaganden, osäkerhetsintervall och mätningens sammanhang." },],
161
165
  faq,
162
166
  bibliography,
163
167
  howTo,
@@ -105,6 +105,8 @@ export const content: ToolLocaleContent = {
105
105
  text: 'Adli Toksikoloji ve Etanolün Farmakokinetiği',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "Gösterilen değer seçilen zamana ve girilen parametrelere bağlıdır. Kaynak verileri koruyun, tahmin edilen bilgileri belirtin ve saat kesin değilse birden fazla senaryoyu karşılaştırın. Böylece hata payı görünür kalır ve eğri tek başına kanıt gibi okunmaz." },
109
+ { type: 'paragraph', html: "Şeffaf bir tahmin, gözlenen verileri model varsayımlarından ayırır. Zaman çizelgesini, olası emilim aşamasını ve eliminasyon belirsizliğini kaydedin. Grafik senaryoları karşılaştırmak içindir; tek başına sorumluluk veya hukuki sonuç belirleyemez. Hesaplanan değerin yanında aralığı ve kullanılan tüm varsayımları gösterin." },
108
110
  {
109
111
  type: 'paragraph',
110
112
  html: 'Etanolün insan vücudundaki <strong>emilimi, dağılımı ve eliminasyonu</strong> adli tıp ve trafik kazası analizlerinin en temel konularından biridir. Tüketilen alkolün küçük bir kısmı mideden emilirken, büyük kısmı geniş yüzey alanı nedeniyle ince bağırsakta kana karışır. Mide boşalma hızı alkol emilimini sınırlayan en önemli faktördür; bu nedenle midede besin bulunması emilim hızını ve kandaki alkol konsantrasyonunun tepe noktasını önemli ölçüde düşürür.',
@@ -157,7 +159,8 @@ export const content: ToolLocaleContent = {
157
159
 
158
160
  { type: 'paragraph', html: "Sonucu planlama ve senaryo karşılaştırması için kullanın; resmî hesabın veya uzman görüşünün yerine geçmez." },
159
161
  { type: 'paragraph', html: "Kullanmadan önce sonucu hesaplayıcının gösterdiği varsayımlarla birlikte yorumlayın." },
160
- { type: 'paragraph', html: "Girdileri, birimleri, yuvarlamayı, tarihi ve yargı alanını kontrol edin; her biri tahmini değiştirebilir." },],
162
+ { type: 'paragraph', html: "Girdileri, birimleri, yuvarlamayı, tarihi ve yargı alanını kontrol edin; her biri tahmini değiştirebilir." },
163
+ { type: 'paragraph', html: "Geriye dönük hesaplamada son içkinin saatini, varsayılan emilim süresini, vücut ağırlığını, dağılım katsayısını ve eliminasyon hızını ayrı ayrı kaydedin. Emilim son içkiden sonra da sürebilir; yemek, hidrasyon ve kişisel farklılıklar eğriyi etkiler. Gösterilen değer senaryoları matematiksel olarak karşılaştırmak içindir; doğrudan ölçüm veya tek başına adli görüş değildir. Varsayımları, belirsizlik aralığını ve ölçüm bağlamını raporda açıkça belirtin." },],
161
164
  faq,
162
165
  bibliography,
163
166
  howTo,
@@ -105,6 +105,8 @@ export const content: ToolLocaleContent = {
105
105
  text: '法医毒物化学与乙醇体内动力学',
106
106
  level: 2,
107
107
  },
108
+ { type: 'paragraph', html: "显示值取决于所选时间和输入参数。时间不确定时请比较多个情景,并标明哪些信息是估计值。这样可以保留误差范围,避免把曲线当作单独证据。" },
109
+ { type: 'paragraph', html: "透明估算应区分观察数据和模型假设,并记录时间线、吸收阶段及消除速率的不确定性。图表用于比较情景,不能单独确定责任或法律结论。请同时展示结果范围和采用的假设。" },
108
110
  {
109
111
  type: 'paragraph',
110
112
  html: '理解乙醇在人体内的<strong>吸收、分布与代谢消除过程</strong>是法医学和交通事故分析的核心基础。当人饮酒时,酒精经食道进入胃部,只有极少部分直接在此处被血液吸收。由于小肠拥有极大的表面积,绝大多数的乙醇吸收发生于十二指肠和空肠。胃排空进入小肠的速度是酒精吸收的主要限速步骤,这解释了为什么胃部食物会对酒精吸收曲线起到明显的平缓与缓冲作用。',
@@ -157,7 +159,8 @@ export const content: ToolLocaleContent = {
157
159
 
158
160
  { type: 'paragraph', html: "结果可用于规划和比较方案,但不能替代官方计算或专业建议。" },
159
161
  { type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },
160
- { type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },],
162
+ { type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },
163
+ { type: 'paragraph', html: "回溯计算时请分别记录最后饮酒时间、吸收时间假设、体重、分布系数和消除速率。结果用于比较数学情景,不是直接测量,也不能替代正式法医意见。" },],
161
164
  faq,
162
165
  bibliography,
163
166
  howTo,
package/src/tools.ts CHANGED
@@ -1,39 +1,41 @@
1
- export { ALL_ENTRIES } from './entries';
2
- import type { ToolDefinition } from './types';
3
- import { FORENSIC_AGE_ESTIMATOR_TOOL } from './tool/forensic-age-estimator/index';
4
- import { WIDMARK_ALCOHOL_SIMULATOR_TOOL } from './tool/widmark-alcohol-simulator/index';
5
- import { FORENSIC_SEX_DETERMINATOR_TOOL } from './tool/forensic-sex-determinator/index';
6
- import { FORENSIC_STATURE_ESTIMATOR_TOOL } from './tool/forensic-stature-estimator/index';
7
- import { FORENSIC_BLOOD_TEST_SIMULATOR_TOOL } from './tool/forensic-blood-test-simulator/index';
8
- import { FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL } from './tool/forensic-image-authenticity-analyzer/index';
9
- import { GSR_DISPERSION_CALCULATOR_TOOL } from './tool/gsr-dispersion-calculator/index';
10
- import { FORENSIC_TLC_INK_SIMULATOR_TOOL } from './tool/forensic-tlc-ink-simulator/index';
11
- import { FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL } from './tool/forensic-microcrystal-drug-simulator/index';
12
- import { FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL } from './tool/forensic-glass-becke-line-simulator/index';
13
- import { FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL } from './tool/forensic-fiber-comparison-microscope/index';
14
- import { BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/bloodstain-pattern-origin-analyzer/index';
15
- import { FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL } from './tool/forensic-fingerprint-minutiae-identifier/index';
16
- import { FIRE_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/fire-pattern-origin-analyzer/index';
17
- import { FORENSIC_TOOLMARK_STRIATION_MATCHER_TOOL } from './tool/forensic-toolmark-striation-matcher/index';
1
+ export { ALL_ENTRIES } from './entries';
2
+ import type { ToolDefinition } from './types';
3
+ import { FORENSIC_AGE_ESTIMATOR_TOOL } from './tool/forensic-age-estimator/index';
4
+ import { WIDMARK_ALCOHOL_SIMULATOR_TOOL } from './tool/widmark-alcohol-simulator/index';
5
+ import { FORENSIC_SEX_DETERMINATOR_TOOL } from './tool/forensic-sex-determinator/index';
6
+ import { FORENSIC_STATURE_ESTIMATOR_TOOL } from './tool/forensic-stature-estimator/index';
7
+ import { FORENSIC_BLOOD_TEST_SIMULATOR_TOOL } from './tool/forensic-blood-test-simulator/index';
8
+ import { FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL } from './tool/forensic-image-authenticity-analyzer/index';
9
+ import { GSR_DISPERSION_CALCULATOR_TOOL } from './tool/gsr-dispersion-calculator/index';
10
+ import { FORENSIC_TLC_INK_SIMULATOR_TOOL } from './tool/forensic-tlc-ink-simulator/index';
11
+ import { FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL } from './tool/forensic-microcrystal-drug-simulator/index';
12
+ import { FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL } from './tool/forensic-glass-becke-line-simulator/index';
13
+ import { FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL } from './tool/forensic-fiber-comparison-microscope/index';
14
+ import { BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/bloodstain-pattern-origin-analyzer/index';
15
+ import { FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL } from './tool/forensic-fingerprint-minutiae-identifier/index';
16
+ import { FIRE_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/fire-pattern-origin-analyzer/index';
17
+ import { FORENSIC_TOOLMARK_STRIATION_MATCHER_TOOL } from './tool/forensic-toolmark-striation-matcher/index';
18
18
  import { TIME_OF_DEATH_ALGOR_MORTIS_CALCULATOR_TOOL } from './tool/time-of-death-algor-mortis-calculator/index';
19
19
  import { VOICE_SPECTROGRAM_ANALYZER_TOOL } from './tool/voice-spectrogram-analyzer/index';
20
-
21
- export const ALL_TOOLS: ToolDefinition[] = [
22
- FORENSIC_AGE_ESTIMATOR_TOOL,
23
- WIDMARK_ALCOHOL_SIMULATOR_TOOL,
24
- FORENSIC_SEX_DETERMINATOR_TOOL,
25
- FORENSIC_STATURE_ESTIMATOR_TOOL,
26
- FORENSIC_BLOOD_TEST_SIMULATOR_TOOL,
27
- FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL,
28
- GSR_DISPERSION_CALCULATOR_TOOL,
29
- FORENSIC_TLC_INK_SIMULATOR_TOOL,
30
- FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL,
31
- FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL,
32
- FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL,
33
- BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL,
34
- FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL,
35
- FIRE_PATTERN_ORIGIN_ANALYZER_TOOL,
36
- FORENSIC_TOOLMARK_STRIATION_MATCHER_TOOL,
20
+ import { DNA_PROFILE_MATCH_PROBABILITY_LAB_TOOL } from './tool/dna-profile-match-probability-lab/index';
21
+
22
+ export const ALL_TOOLS: ToolDefinition[] = [
23
+ FORENSIC_AGE_ESTIMATOR_TOOL,
24
+ WIDMARK_ALCOHOL_SIMULATOR_TOOL,
25
+ FORENSIC_SEX_DETERMINATOR_TOOL,
26
+ FORENSIC_STATURE_ESTIMATOR_TOOL,
27
+ FORENSIC_BLOOD_TEST_SIMULATOR_TOOL,
28
+ FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL,
29
+ GSR_DISPERSION_CALCULATOR_TOOL,
30
+ FORENSIC_TLC_INK_SIMULATOR_TOOL,
31
+ FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL,
32
+ FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL,
33
+ FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL,
34
+ BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL,
35
+ FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL,
36
+ FIRE_PATTERN_ORIGIN_ANALYZER_TOOL,
37
+ FORENSIC_TOOLMARK_STRIATION_MATCHER_TOOL,
37
38
  TIME_OF_DEATH_ALGOR_MORTIS_CALCULATOR_TOOL,
38
- VOICE_SPECTROGRAM_ANALYZER_TOOL
39
+ VOICE_SPECTROGRAM_ANALYZER_TOOL,
40
+ DNA_PROFILE_MATCH_PROBABILITY_LAB_TOOL
39
41
  ];
package/src/types.ts CHANGED
@@ -63,8 +63,8 @@ export interface ScienceCategoryEntry {
63
63
 
64
64
  export interface ToolDefinition {
65
65
  entry: ScienceToolEntry;
66
- Component: unknown;
67
- SEOComponent: unknown;
68
- BibliographyComponent: unknown;
66
+ Component: (_props: Record<string, unknown>) => unknown;
67
+ SEOComponent: (_props: Record<string, unknown>) => unknown;
68
+ BibliographyComponent: (_props: Record<string, unknown>) => unknown;
69
69
  }
70
-
70
+