@jjlmoya/utils-forensic-science 1.1.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 (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,245 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'dental-skeletal-third-molar-age-estimator';
5
+ const title = '歯科・骨格・第三大臼歯による年齢推定ツール';
6
+ const description = '歯の発生、骨格の成熟度、第三大臼歯の指標から法医学的年齢区間を推定し、スクリーニングとケースのトリアージを支援します。';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '証拠の重点を選択する',
11
+ text: 'バランスの取れたトリアージには「混合証拠」、歯科所見の信頼性が高い場合は「歯科優先」、X線による骨格指標が主な情報源の場合は「骨格優先」を選択してください。',
12
+ },
13
+ {
14
+ name: '各成熟度指標を評価する',
15
+ text: '各ステージを0から8の段階で評価します。低いステージは初期の発達、中間ステージは青年期の成熟、高いステージは成熟またはほぼ成熟した所見を表します。',
16
+ },
17
+ {
18
+ name: '単一の年齢ではなく、推定区間として解釈する',
19
+ text: '最小値、推定値、最大値を合わせて確認してください。生物学的発達には個人差があるため、法医学的な年齢評価は必ず区間として表現する必要があります。',
20
+ },
21
+ {
22
+ name: '指標間の不一致を確認する',
23
+ text: '歯科、骨格、第三大臼歯のステージ間に乖離がある場合、結果を探索的なものとして扱い、結論を下す前にさらに確実な証拠を収集してください。',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'このツールで法的な成人年齢を決定できますか?',
30
+ answer: 'いいえ。本ツールは教育およびトリアージ用途のスクリーニング用計算機です。法的な年齢決定には、検証された地域のプロトコル、資格のある専門家による鑑定、正式な身元確認書類、および管轄区域固有の基準が必須です。',
31
+ },
32
+ {
33
+ question: 'なぜ結果が年齢区間で表示されるのですか?',
34
+ answer: '歯の萌出、骨格癒合、第三大臼歯の発達は、祖先、栄養状態、健康状態、性別、参照集団、および画像診断法によって大きく異なります。単一の正確な年齢を提示するよりも、区間で示す方が科学的に適切です。',
35
+ },
36
+ {
37
+ question: '「混合証拠」とはどういう意味ですか?',
38
+ answer: '「混合証拠」は、歯の発生、骨格の成熟度、および第三大臼歯のステージを総合的に加味します。特定の指標が他の指標よりも明らかに信頼性が高いとは言えない場合に使用します。',
39
+ },
40
+ {
41
+ question: '第三大臼歯はすべてのケースで信頼できますか?',
42
+ answer: '第三大臼歯は青年期後期から若年成人期の評価に有用ですが、個人差が大きいため注意が必要です。欠如、病変、集団間の違い、X線画像の鮮明度により、その価値が制限される場合があります。',
43
+ },
44
+ {
45
+ question: '実際の法医学的鑑定で使用すべきですか?',
46
+ answer: 'あくまで予備的な補助ツールとして使用してください。実際の鑑定では、検証された学術的方法、調整された参照データ、専門家による独立したレビュー、および不確実性と限界の透明な報告が求められます。',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ caseBoard: '法医学ケースボード',
56
+ controls: '法医学的年齢コントロール',
57
+ results: '法医学的年齢結果',
58
+ maturityProfile: '動的成熟度プロファイル',
59
+ screeningOnly: 'スクリーニング推定',
60
+ evidenceType: '証拠の重点',
61
+ mixedEvidence: '混合証拠',
62
+ dentalPriority: '歯科優先',
63
+ skeletalPriority: '骨格優先',
64
+ dentalStage: '歯の発生ステージ',
65
+ epiphysealStage: '骨端線癒合ステージ',
66
+ thirdMolarStage: '第三大臼歯ステージ',
67
+ minimumAge: '最小',
68
+ likelyAge: '推定',
69
+ maximumAge: '最大',
70
+ maturityScore: '成熟度スコア',
71
+ stageLabel: 'ステージ',
72
+ ageUnit: '歳',
73
+ dentalShort: '歯科',
74
+ boneShort: '骨格',
75
+ molarShort: '臼歯',
76
+ dentalStageHelp: '歯冠、歯根、歯根尖の形成状態。',
77
+ epiphysealStageHelp: '成長板の閉鎖と骨格癒合の程度。',
78
+ molarStageHelp: '第三大臼歯の石灰化と歯根尖閉鎖の程度。',
79
+ dentalStage0: 'なし',
80
+ dentalStage1: '咬頭',
81
+ dentalStage2: '歯冠',
82
+ dentalStage3: '歯根開始',
83
+ dentalStage4: '歯根半分',
84
+ dentalStage5: '歯根完成',
85
+ dentalStage6: '歯根尖狭小',
86
+ dentalStage7: '歯根尖閉鎖中',
87
+ dentalStage8: '完了',
88
+ epiphysealStage0: '開放',
89
+ epiphysealStage1: '縁',
90
+ epiphysealStage2: '狭小化',
91
+ epiphysealStage3: '架橋',
92
+ epiphysealStage4: '半分癒合',
93
+ epiphysealStage5: 'ほぼ癒合',
94
+ epiphysealStage6: '線のみ',
95
+ epiphysealStage7: 'ほぼ閉鎖',
96
+ epiphysealStage8: '閉鎖',
97
+ molarStage0: 'なし',
98
+ molarStage1: '咬頭',
99
+ molarStage2: '歯冠開始',
100
+ molarStage3: '歯冠完成',
101
+ molarStage4: '歯根開始',
102
+ molarStage5: '歯根半分',
103
+ molarStage6: '歯根完成',
104
+ molarStage7: '歯根尖閉鎖中',
105
+ molarStage8: '完了',
106
+ confidenceexploratory: '探索的',
107
+ confidencemoderate: '中等度',
108
+ confidencestrong: '強い',
109
+ noteTriage: '法的な年齢決定ではなく、トリアージのための推定値として扱ってください。',
110
+ noteFinalAssessment: '最終的な法医学的年齢評価には、放射線診断、歯科検査、臨床履歴、および管轄区域固有の基準を統合する必要があります。',
111
+ noteWideInterval: '各指標間に4年以上の乖離があるため、推定区間が拡大されています。',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: '法医学的年齢推定ツール:歯科・骨格・第三大臼歯スクリーニング計算機',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'この法医学的年齢推定ツールは、正式な鑑定の前に生物学的成熟度の証拠を整理するための迅速かつ透明性の高い方法を提供します。歯の発生、骨端線癒合、第三大臼歯のステージを組み合わせて年齢区間を算出します。<strong>法医学的年齢推定計算機</strong>、<strong>歯科年齢評価</strong>、<strong>骨格成熟度推定</strong>、<strong>第三大臼歯年齢推定</strong>といったニーズに対し、指標の解釈、組み合わせ方、および不確実性の考慮事項を明確に示します。',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '結果は<strong>最小年齢、推定年齢、最大年齢</strong>として表示されます。生物学的発達の個人差を考慮し、単一の正確な年齢を提示することは避けています。栄養状態、健康状態、祖先、性別、参照集団、画像品質、歯科疾患、観察者間変動などが解釈に影響を与える可能性があるため、法的な結論ではなく、あくまで構造化された補助ツールとして活用してください。',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: '3つの成熟度指標の解説',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'スライダーの0〜8ステージは、発達段階を抽象化したものです。ステージ0は成熟徴候の欠如、ステージ8は完全な成熟を示します。これらは特定の臨床メソッドそのものではなく、歯科・骨格・第三大臼歯の証拠を比較し、区間推定に反映させるための実用的な指標です。',
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['指標', '定義', '検索の目的', '主な注意点'],
139
+ rows: [
140
+ ['歯の発生', '第三大臼歯以外の歯の形成・萌出・成熟。', '小児・青年の歯科年齢評価。', '歯科疾患や欠損歯、集団特性によるバイアスに注意。'],
141
+ ['骨端線癒合', '成長板の進行性閉鎖。', '青年期・若年成人の骨格成熟度評価。', '観察部位、性別、内分泌状態、画像法に依存する。'],
142
+ ['第三大臼歯', '親知らずの形成・成熟度。', '他の歯が成熟した後の青年期後期の評価。', '欠如、抜歯、埋伏、画像精度が大きく影響する。'],
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: '年齢区間の解釈',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: '3つの値を総合的に読み解きます。<strong>推定年齢</strong>は、選択された証拠の重点に基づく加重中央値です。<strong>最小値</strong>と<strong>最大値</strong>は実用的な不確実性の範囲を示します。指標が一致すれば範囲は狭まり、不一致が大きければ範囲は広がり、信頼度ラベルが低下します。',
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['結果パターン', '示唆内容', '推奨される次のステップ'],
157
+ rows: [
158
+ ['強い信頼度・狭い区間', '指標が一致し、一貫した発達段階にある。', 'ソース指標を記録し、法的な検証が必要か検討する。'],
159
+ ['中等度の区間', '不一致があるか、重点設定の影響がある。', '画質やステージ割り当て、優先指標を再評価する。'],
160
+ ['広い探索的区間', '指標の矛盾や発達期間の不一致がある。', '単独の判断を避け、追加記録や専門家のレビューを求める。'],
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: '証拠モードの選択(歯科・骨格・混合)',
166
+ level: 3,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '<strong>混合証拠</strong>は全ての指標をバランスさせるため、一般的なスクリーニングに適しています。歯科的所見が詳細で信頼性が高い場合は<strong>歯科優先</strong>を、骨格指標が最も強力なデータである場合は<strong>骨格優先</strong>を選択します。この選択は証拠の質そのものを高めるものではなく、数学的な重み付けを調整するものです。',
171
+ },
172
+ {
173
+ type: 'list',
174
+ items: [
175
+ '<strong>歯科優先:</strong>歯の発生が明確で、第三大臼歯データが利用可能な場合に適しています。',
176
+ '<strong>骨格優先:</strong>骨端線癒合が最も詳細に文書化されている場合に適しています。',
177
+ '<strong>混合証拠:</strong>バランスの取れた最初のレビューに最適です。',
178
+ '<strong>信頼度ラベル:</strong>過度な解釈を避けるための指標として活用してください。',
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: '法医学的年齢推定と身元確認',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'paragraph',
188
+ html: '年齢推定はケースをサポートするものであり、身元を確定したり、書類調査を代替するものではありません。移民、児童保護、刑事責任、災害犠牲者識別などの場面では、多角的な鑑定が必要です。責任ある鑑定報告書には、使用された方法、参照集団、画像ソース、鑑定者の資格、信頼度の言語的表現、および制限事項を明記してください。',
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: '本ツールは<strong>教育、トリアージ、プロトコル計画、透明性のあるコミュニケーション</strong>を目的としています。年齢結論には慎重さが求められ、18歳などの法的に重要な閾値を、計算機の結果のみで決定すべきではないことを常に認識してください。',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'レポート作成前のチェックリスト',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'list',
201
+ items: [
202
+ '<strong>証拠ソースの確認:</strong>歯科検査、パノラマX線、手根骨画像、鎖骨画像など、何に基づくステージ判定かを明記する。',
203
+ '<strong>欠落・不確実データの記録:</strong>第三大臼歯の欠如、画質不良、発達異常はレポートに明示する。',
204
+ '<strong>検証済み方法の使用:</strong>法的判断には、その地域で認められた歯科的・骨格的鑑定手法を選択する。',
205
+ '<strong>不確実性の明示:</strong>「正確な暦年齢」を示唆する言葉を避け、推定区間として報告する。',
206
+ '<strong>専門家によるレビュー:</strong>リスクの高いケースは、法歯科学者、放射線科医、人類学者による再鑑定を行う。',
207
+ ],
208
+ },
209
+ ],
210
+ faq,
211
+ bibliography,
212
+ howTo,
213
+ schemas: [
214
+ {
215
+ '@context': 'https://schema.org',
216
+ '@type': 'SoftwareApplication',
217
+ name: title,
218
+ description,
219
+ applicationCategory: 'ForensicApplication',
220
+ operatingSystem: 'Any',
221
+ },
222
+ {
223
+ '@context': 'https://schema.org',
224
+ '@type': 'FAQPage',
225
+ mainEntity: faq.map((item) => ({
226
+ '@type': 'Question',
227
+ name: item.question,
228
+ acceptedAnswer: {
229
+ '@type': 'Answer',
230
+ text: item.answer,
231
+ },
232
+ })),
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'HowTo',
237
+ name: title,
238
+ step: howTo.map((step) => ({
239
+ '@type': 'HowToStep',
240
+ name: step.name,
241
+ text: step.text,
242
+ })),
243
+ },
244
+ ],
245
+ };
@@ -0,0 +1,245 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'dental-skeletal-third-molar-age-estimator';
5
+ const title = '치아, 골격 및 제3대구치 기반 연령 추정기';
6
+ const description = '치아 발달, 골격 성숙도 및 제3대구치 지표를 바탕으로 법의학적 연령 구간을 추정하여 사례 선별 및 분류를 지원합니다.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '증거 강조 유형 선택',
11
+ text: '균형 잡힌 분류를 위해 "혼합 증거"를, 치과적 소견이 더 명확할 때 "치아 우선"을, 방사선학적 골격 지표가 주요 정보원일 때 "골격 우선"을 선택하세요.',
12
+ },
13
+ {
14
+ name: '각 성숙도 지표 평가',
15
+ text: '각 지표를 0단계에서 8단계로 평가합니다. 낮은 단계는 초기 발달, 중간 단계는 청소년기 성숙, 높은 단계는 성숙 또는 성숙에 근접한 상태를 나타냅니다.',
16
+ },
17
+ {
18
+ name: '단일 연령이 아닌 추정 구간으로 해석',
19
+ text: '최소, 추정, 최대 연령 값을 함께 확인하세요. 생물학적 발달은 개인차가 크므로 법의학적 연령 평가는 반드시 구간으로 표현해야 합니다.',
20
+ },
21
+ {
22
+ name: '지표 간 불일치 확인',
23
+ text: '치아, 골격 및 제3대구치 단계가 서로 다른 연령 범위를 가리킬 경우, 결과를 탐색적 자료로 간주하고 추가 증거를 확보한 뒤 최종 판단을 내리십시오.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: '이 추정기가 법적 성인 여부를 판정할 수 있나요?',
30
+ answer: '아니요. 본 도구는 교육 및 분류 목적의 선별 계산기입니다. 법적 연령 판정은 검증된 공식 프로토콜, 전문가의 감정, 공식 신분 확인 절차 및 관할권별 법적 기준을 따라야 합니다.',
31
+ },
32
+ {
33
+ question: '결과가 연령 구간으로 표시되는 이유는 무엇인가요?',
34
+ answer: '치아 맹출, 골격 유합 및 제3대구치 발달은 조상, 영양 상태, 건강, 성별, 참조 집단 및 영상 촬영 방식에 따라 크게 다릅니다. 단일 연령보다 구간으로 표시하는 것이 과학적으로 더 정확하고 정직합니다.',
35
+ },
36
+ {
37
+ question: '혼합 증거란 무엇인가요?',
38
+ answer: '혼합 증거는 치아 발달, 골격 성숙도 및 제3대구치 지표를 종합적으로 고려합니다. 특정 지표가 다른 지표보다 확실히 더 신뢰하기 어려운 상황에서 유용합니다.',
39
+ },
40
+ {
41
+ question: '제3대구치는 모든 사례에서 신뢰할 수 있나요?',
42
+ answer: '제3대구치는 후기 청소년기 및 초기 성인기 연령 평가에 유용하지만 변이가 매우 큽니다. 치아 결손, 병리, 집단 간 차이, 그리고 방사선 사진의 품질에 따라 그 가치가 제한될 수 있습니다.',
43
+ },
44
+ {
45
+ question: '실제 법의학적 감정에 사용할 수 있나요?',
46
+ answer: '예비적 보조 도구로만 활용해야 합니다. 실제 법의학적 감정에는 검증된 학술적 방법론, 보정된 참조 데이터, 전문가의 독립적 검토, 그리고 불확실성과 한계에 대한 투명한 기술이 반드시 수반되어야 합니다.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ caseBoard: '법의학 사례 보드',
56
+ controls: '법의학 연령 컨트롤',
57
+ results: '법의학 연령 결과',
58
+ maturityProfile: '동적 성숙도 프로필',
59
+ screeningOnly: '선별 추정치',
60
+ evidenceType: '증거 강조 유형',
61
+ mixedEvidence: '혼합 증거',
62
+ dentalPriority: '치아 우선',
63
+ skeletalPriority: '골격 우선',
64
+ dentalStage: '치아 발달 단계',
65
+ epiphysealStage: '골단판 유합 단계',
66
+ thirdMolarStage: '제3대구치 단계',
67
+ minimumAge: '최소',
68
+ likelyAge: '추정',
69
+ maximumAge: '최대',
70
+ maturityScore: '성숙도 점수',
71
+ stageLabel: '단계',
72
+ ageUnit: '세',
73
+ dentalShort: '치아',
74
+ boneShort: '골격',
75
+ molarShort: '대구치',
76
+ dentalStageHelp: '치관, 치근 및 치근단 형성 상태.',
77
+ epiphysealStageHelp: '성장판 폐쇄 및 골격 유합 정도.',
78
+ molarStageHelp: '제3대구치 석회화 및 치근단 폐쇄 정도.',
79
+ dentalStage0: '없음',
80
+ dentalStage1: '교두',
81
+ dentalStage2: '치관',
82
+ dentalStage3: '치근 시작',
83
+ dentalStage4: '치근 절반',
84
+ dentalStage5: '치근 완성',
85
+ dentalStage6: '치근단 좁음',
86
+ dentalStage7: '치근단 폐쇄 중',
87
+ dentalStage8: '완료',
88
+ epiphysealStage0: '열림',
89
+ epiphysealStage1: '가장자리',
90
+ epiphysealStage2: '좁아짐',
91
+ epiphysealStage3: '다리',
92
+ epiphysealStage4: '절반 유합',
93
+ epiphysealStage5: '거의 유합',
94
+ epiphysealStage6: '선만 존재',
95
+ epiphysealStage7: '거의 닫힘',
96
+ epiphysealStage8: '닫힘',
97
+ molarStage0: '없음',
98
+ molarStage1: '교두',
99
+ molarStage2: '치관 시작',
100
+ molarStage3: '치관 완성',
101
+ molarStage4: '치근 시작',
102
+ molarStage5: '치근 절반',
103
+ molarStage6: '치근 완성',
104
+ molarStage7: '치근단 폐쇄 중',
105
+ molarStage8: '완료',
106
+ confidenceexploratory: '탐색적',
107
+ confidencemoderate: '중등도',
108
+ confidencestrong: '강함',
109
+ noteTriage: '법적 연령 결정이 아닌 분류용 추정치로만 사용하십시오.',
110
+ noteFinalAssessment: '최종 법의학적 연령 평가는 방사선 검사, 치과 검사, 임상 병력 및 관할권별 기준을 통합해야 합니다.',
111
+ noteWideInterval: '지표 간 4년 이상의 차이가 발생하여 추정 구간이 확장되었습니다.',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: '법의학 연령 추정기: 치아, 골격 및 제3대구치 선별 계산기',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '본 법의학 연령 추정기는 공식 감정 전 생물학적 성숙도 증거를 신속하고 투명하게 정리할 수 있도록 돕습니다. 치아 발달, 골단판 유합, 제3대구치 단계를 통합하여 연령 구간을 산출합니다. <strong>법의학 연령 추정</strong>, <strong>치아 연령 평가</strong>, <strong>골격 성숙도 연령 추정</strong> 등 관련 연구를 위해 설계되었으며, 사용자가 지표의 의미와 결합 방식, 그리고 결과에 포함된 불확실성을 이해할 수 있도록 지원합니다.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '결과는 <strong>최소, 추정, 최대 연령</strong>으로 표시됩니다. 생물학적 발달은 개인차가 크므로 단일 연령 표기는 오해를 살 수 있습니다. 영양 상태, 조상, 성별, 집단 특성, 영상 품질, 치과적 변수 등 다양한 요인이 결과에 영향을 미치므로, 이 도구는 공식적인 법적 결론이 아닌 구조화된 선별 보조 도구로 활용하시기 바랍니다.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: '성숙도 지표의 이해',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: '0~8단계의 지표는 생물학적 발달을 추상화하여 시스템 간의 비교를 용이하게 합니다. 단계 0은 발달 초기 혹은 부재를, 단계 8은 성숙 완료를 의미합니다. 이는 특정 임상 방법을 대체하는 것이 아니라, 여러 생물학적 증거를 교차 검증하기 위한 체계적인 접근법을 제공합니다.',
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['지표', '설명', '검색 의도', '주의사항'],
139
+ rows: [
140
+ ['치아 발달', '제3대구치를 제외한 치아의 형성 및 맹출 상태.', '소아·청소년의 치아 성숙도 평가.', '치과 질환, 발치 여부, 참조 집단과의 불일치로 인한 오차 가능성.'],
141
+ ['골단판 유합', '골격 구조 내 성장판의 진행성 폐쇄.', '청소년 및 초기 성인기 성숙도 평가.', '관찰 부위, 성별, 내분비 상태, 영상 촬영 방식에 의존적.'],
142
+ ['제3대구치 단계', '사랑니의 형성 및 성숙도.', '다른 치아가 성숙한 후기 청소년기 평가.', '변이가 큼; 무형성(agenesis) 및 매복 여부 확인 필수.'],
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: '연령 구간의 해석',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: '세 연령 값을 종합적으로 해석해야 합니다. <strong>추정 연령</strong>은 증거 강조 유형에 따라 계산된 가중 중앙값입니다. <strong>최소</strong> 및 <strong>최대</strong> 값은 실용적인 불확실성 범위를 정의합니다. 지표들이 일치할수록 범위는 좁아지며, 지표들이 상충할 경우 범위는 확장되고 신뢰도 라벨은 낮아집니다.',
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['결과 패턴', '해석', '권장 조치'],
157
+ rows: [
158
+ ['강한 신뢰도의 좁은 구간', '지표들이 상호 일치함.', '증거 자료를 문서화하고 법적 유효성 검토 여부 확인.'],
159
+ ['중등도 구간', '일부 불일치 발생 또는 가중치 영향.', '영상 품질 및 단계 할당 재검토.'],
160
+ ['넓은 탐색적 구간', '지표들이 상충함.', '단독 판단 지양, 추가 증거 확보 및 전문가 협의.'],
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: '증거 모드 선택 (치아·골격·혼합)',
166
+ level: 3,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '<strong>혼합 증거</strong>는 모든 지표를 종합하므로 일반적인 선별에 권장됩니다. 치과 데이터가 매우 상세할 때는 <strong>치아 우선</strong>을, 방사선학적 골격 데이터가 가장 강력한 근거라면 <strong>골격 우선</strong>을 선택하세요. 모드 선택은 데이터의 품질 자체를 높이는 것이 아니라, 통계적인 가중치를 조정하는 역할을 합니다.',
171
+ },
172
+ {
173
+ type: 'list',
174
+ items: [
175
+ '<strong>치아 우선:</strong> 발달 상태가 명확하고 제3대구치 자료가 확보된 경우.',
176
+ '<strong>골격 우선:</strong> 골단판 유합 정보가 가장 잘 정리된 경우.',
177
+ '<strong>혼합 증거:</strong> 균형 잡힌 초기 스크리닝이 필요한 경우.',
178
+ '<strong>신뢰도 라벨:</strong> 과도한 해석을 방지하기 위한 지표로 활용.',
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: '법의학적 추정치와 신원 증명',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'paragraph',
188
+ html: '연령 추정은 감정을 뒷받침하는 근거일 뿐, 신원을 완벽히 증명하거나 문서 검증을 대체할 수 없습니다. 이민 심사, 보호 조치, 형사 책임, 희생자 식별 등의 상황에서는 반드시 다학제적 접근이 필요합니다. 보고서에는 사용된 방법론, 참조 집단, 관찰자의 전문성, 신뢰도 및 연구의 한계가 명확히 명시되어야 합니다.',
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: '본 도구는 <strong>교육, 분류, 프로토콜 기획 및 커뮤니케이션</strong> 목적으로 설계되었습니다. 연령 관련 결론 도출에는 항상 주의가 필요하며, 18세와 같은 법적 기준점을 단일 계산기 도구만으로 결정해서는 안 됩니다.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: '보고서 작성 전 체크리스트',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'list',
201
+ items: [
202
+ '<strong>증거 출처 확인:</strong> 치과 검사, 파노라마 방사선, 수근골 또는 쇄골 영상 등 사용된 데이터원을 명시하세요.',
203
+ '<strong>불완전 데이터 명시:</strong> 제3대구치 결손, 저화질 이미지, 발달 변이 등을 보고서에 기록하세요.',
204
+ '<strong>방법론의 유효성 검증:</strong> 관할권에서 통용되는 전문적인 치과/골격 방법론을 선택하세요.',
205
+ '<strong>불확실성 기술:</strong> 범위를 제시하고, 정확한 역연령을 암시하는 단정적 표현을 피하세요.',
206
+ '<strong>전문가 리뷰:</strong> 중요도가 높은 사례는 반드시 법치의학자, 방사선과 의사, 인류학자의 재검토를 거치세요.',
207
+ ],
208
+ },
209
+ ],
210
+ faq,
211
+ bibliography,
212
+ howTo,
213
+ schemas: [
214
+ {
215
+ '@context': 'https://schema.org',
216
+ '@type': 'SoftwareApplication',
217
+ name: title,
218
+ description,
219
+ applicationCategory: 'ForensicApplication',
220
+ operatingSystem: 'Any',
221
+ },
222
+ {
223
+ '@context': 'https://schema.org',
224
+ '@type': 'FAQPage',
225
+ mainEntity: faq.map((item) => ({
226
+ '@type': 'Question',
227
+ name: item.question,
228
+ acceptedAnswer: {
229
+ '@type': 'Answer',
230
+ text: item.answer,
231
+ },
232
+ })),
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'HowTo',
237
+ name: title,
238
+ step: howTo.map((step) => ({
239
+ '@type': 'HowToStep',
240
+ name: step.name,
241
+ text: step.text,
242
+ })),
243
+ },
244
+ ],
245
+ };