truthound-dashboard 1.2.1__tar.gz → 1.3.1__tar.gz

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 (365) hide show
  1. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/.gitignore +3 -2
  2. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/PKG-INFO +50 -11
  3. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/README.md +49 -10
  4. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/api.md +279 -12
  5. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/features.md +152 -27
  6. truthound_dashboard-1.3.1/e2e/package-lock.json +78 -0
  7. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/e2e/playwright.config.ts +5 -3
  8. truthound_dashboard-1.3.1/e2e/tests/activity.spec.ts +638 -0
  9. truthound_dashboard-1.3.1/e2e/tests/drift.spec.ts +553 -0
  10. truthound_dashboard-1.3.1/e2e/tests/notifications.spec.ts +962 -0
  11. truthound_dashboard-1.3.1/e2e/tests/schedules.spec.ts +644 -0
  12. truthound_dashboard-1.3.1/frontend/.intlayer/config/configuration.json +121 -0
  13. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/catalog.json +155 -0
  14. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/collaboration.json +97 -0
  15. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/common.json +99 -0
  16. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/dashboard.json +65 -0
  17. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/drift.json +97 -0
  18. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/errors.json +29 -0
  19. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/glossary.json +133 -0
  20. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/nav.json +41 -0
  21. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/notifications.json +89 -0
  22. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/schedules.json +99 -0
  23. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/settings.json +31 -0
  24. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/sources.json +85 -0
  25. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/validation.json +65 -0
  26. truthound_dashboard-1.3.1/frontend/.intlayer/dictionary/validators.json +215 -0
  27. truthound_dashboard-1.3.1/frontend/.intlayer/main/dictionaries.cjs +35 -0
  28. truthound_dashboard-1.3.1/frontend/.intlayer/main/dictionaries.mjs +35 -0
  29. truthound_dashboard-1.3.1/frontend/.intlayer/main/dynamic_dictionaries.cjs +8 -0
  30. truthound_dashboard-1.3.1/frontend/.intlayer/main/dynamic_dictionaries.mjs +8 -0
  31. truthound_dashboard-1.3.1/frontend/.intlayer/main/fetch_dictionaries.cjs +8 -0
  32. truthound_dashboard-1.3.1/frontend/.intlayer/main/fetch_dictionaries.mjs +8 -0
  33. truthound_dashboard-1.3.1/frontend/.intlayer/main/remote_dictionaries.cjs +8 -0
  34. truthound_dashboard-1.3.1/frontend/.intlayer/main/remote_dictionaries.mjs +8 -0
  35. truthound_dashboard-1.3.1/frontend/.intlayer/main/unmerged_dictionaries.cjs +35 -0
  36. truthound_dashboard-1.3.1/frontend/.intlayer/main/unmerged_dictionaries.mjs +35 -0
  37. truthound_dashboard-1.3.1/frontend/.intlayer/types/catalog.ts +156 -0
  38. truthound_dashboard-1.3.1/frontend/.intlayer/types/collaboration.ts +98 -0
  39. truthound_dashboard-1.3.1/frontend/.intlayer/types/common.ts +100 -0
  40. truthound_dashboard-1.3.1/frontend/.intlayer/types/dashboard.ts +66 -0
  41. truthound_dashboard-1.3.1/frontend/.intlayer/types/drift.ts +98 -0
  42. truthound_dashboard-1.3.1/frontend/.intlayer/types/errors.ts +30 -0
  43. truthound_dashboard-1.3.1/frontend/.intlayer/types/glossary.ts +134 -0
  44. truthound_dashboard-1.3.1/frontend/.intlayer/types/intlayer.d.ts +46 -0
  45. truthound_dashboard-1.3.1/frontend/.intlayer/types/nav.ts +42 -0
  46. truthound_dashboard-1.3.1/frontend/.intlayer/types/notifications.ts +90 -0
  47. truthound_dashboard-1.3.1/frontend/.intlayer/types/schedules.ts +100 -0
  48. truthound_dashboard-1.3.1/frontend/.intlayer/types/settings.ts +32 -0
  49. truthound_dashboard-1.3.1/frontend/.intlayer/types/sources.ts +86 -0
  50. truthound_dashboard-1.3.1/frontend/.intlayer/types/validation.ts +66 -0
  51. truthound_dashboard-1.3.1/frontend/.intlayer/types/validators.ts +216 -0
  52. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/catalog.json +464 -0
  53. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/collaboration.json +261 -0
  54. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/common.json +304 -0
  55. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/dashboard.json +185 -0
  56. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/drift.json +285 -0
  57. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/errors.json +59 -0
  58. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/glossary.json +387 -0
  59. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/nav.json +101 -0
  60. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/notifications.json +245 -0
  61. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/schedules.json +292 -0
  62. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/settings.json +66 -0
  63. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/sources.json +243 -0
  64. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/validation.json +173 -0
  65. truthound_dashboard-1.3.1/frontend/.intlayer/unmerged_dictionary/validators.json +602 -0
  66. truthound_dashboard-1.3.1/frontend/intlayer.config.mjs +19 -0
  67. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/package-lock.json +2479 -11
  68. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/package.json +1 -3
  69. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/App.tsx +0 -2
  70. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/api/client.ts +464 -8
  71. truthound_dashboard-1.3.1/frontend/src/components/AnimatedNumber.test.tsx +144 -0
  72. truthound_dashboard-1.3.1/frontend/src/components/GlassCard.test.tsx +216 -0
  73. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/Layout.tsx +3 -6
  74. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/catalog/AssetFormDialog.tsx +2 -2
  75. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/glossary/TermFormDialog.tsx +2 -2
  76. truthound_dashboard-1.3.1/frontend/src/components/validators/ValidatorConfigCard.tsx +138 -0
  77. truthound_dashboard-1.3.1/frontend/src/components/validators/ValidatorParamInput.tsx +329 -0
  78. truthound_dashboard-1.3.1/frontend/src/components/validators/ValidatorSelector.tsx +427 -0
  79. truthound_dashboard-1.3.1/frontend/src/components/validators/index.ts +7 -0
  80. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/index.ts +0 -3
  81. truthound_dashboard-1.3.1/frontend/src/content/validators.content.ts +230 -0
  82. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/lib/intlayer-utils.ts +34 -3
  83. truthound_dashboard-1.3.1/frontend/src/mocks/__tests__/phase5-e2e.test.ts +1197 -0
  84. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/data/store.ts +24 -0
  85. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/drift.ts +61 -8
  86. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/index.ts +3 -0
  87. truthound_dashboard-1.3.1/frontend/src/mocks/factories/mask.ts +198 -0
  88. truthound_dashboard-1.3.1/frontend/src/mocks/factories/scan.ts +420 -0
  89. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/validations.ts +85 -14
  90. truthound_dashboard-1.3.1/frontend/src/mocks/factories/validators.ts +917 -0
  91. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/drift.ts +14 -1
  92. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/index.ts +8 -0
  93. truthound_dashboard-1.3.1/frontend/src/mocks/handlers/mask.ts +149 -0
  94. truthound_dashboard-1.3.1/frontend/src/mocks/handlers/profile.ts +60 -0
  95. truthound_dashboard-1.3.1/frontend/src/mocks/handlers/rules.ts +266 -0
  96. truthound_dashboard-1.3.1/frontend/src/mocks/handlers/scan.ts +140 -0
  97. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/schemas.ts +43 -1
  98. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/validations.ts +72 -2
  99. truthound_dashboard-1.3.1/frontend/src/mocks/handlers/validators.ts +2260 -0
  100. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Activity.tsx +2 -2
  101. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Catalog.tsx +4 -4
  102. truthound_dashboard-1.3.1/frontend/src/pages/Dashboard.test.tsx +570 -0
  103. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Glossary.tsx +4 -4
  104. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Schedules.tsx +184 -68
  105. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/SourceDetail.tsx +109 -3
  106. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Catalog.e2e.test.tsx +615 -0
  107. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/CatalogDetail.e2e.test.tsx +497 -0
  108. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Dashboard.e2e.test.tsx +266 -0
  109. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Glossary.e2e.test.tsx +948 -0
  110. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/GlossaryDetail.e2e.test.tsx +944 -0
  111. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/History.e2e.test.tsx +457 -0
  112. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Profile.e2e.test.tsx +475 -0
  113. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Rules.e2e.test.tsx +476 -0
  114. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/SourceDetail.e2e.test.tsx +465 -0
  115. truthound_dashboard-1.3.1/frontend/src/pages/__tests__/Sources.e2e.test.tsx +426 -0
  116. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/providers/intlayer/config.ts +1 -7
  117. truthound_dashboard-1.3.1/frontend/src/test/mocks/intlayer-config.ts +19 -0
  118. truthound_dashboard-1.3.1/frontend/src/test/mocks/intlayer.ts +31 -0
  119. truthound_dashboard-1.3.1/frontend/src/test/mocks/react-intlayer.ts +717 -0
  120. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/test/setup.ts +19 -1
  121. truthound_dashboard-1.3.1/frontend/src/test/test-utils.tsx +84 -0
  122. truthound_dashboard-1.3.1/frontend/src/types/validators.ts +521 -0
  123. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/vite.config.ts +4 -5
  124. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/vitest.config.ts +6 -0
  125. truthound_dashboard-1.3.1/package-lock.json +6 -0
  126. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/pyproject.toml +1 -1
  127. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/deps.py +28 -0
  128. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/drift.py +1 -0
  129. truthound_dashboard-1.3.1/src/truthound_dashboard/api/mask.py +164 -0
  130. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/profile.py +11 -3
  131. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/router.py +22 -0
  132. truthound_dashboard-1.3.1/src/truthound_dashboard/api/scan.py +168 -0
  133. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/schemas.py +13 -4
  134. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/validations.py +33 -1
  135. truthound_dashboard-1.3.1/src/truthound_dashboard/api/validators.py +85 -0
  136. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/__init__.py +8 -0
  137. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/phase5/activity.py +1 -1
  138. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/services.py +457 -7
  139. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/truthound_adapter.py +441 -26
  140. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/db/__init__.py +6 -0
  141. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/db/models.py +250 -1
  142. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/__init__.py +52 -1
  143. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/collaboration.py +1 -1
  144. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/drift.py +233 -0
  145. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/mask.py +209 -0
  146. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/profile.py +45 -2
  147. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/scan.py +312 -0
  148. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/schema.py +30 -2
  149. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/validation.py +60 -3
  150. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/__init__.py +59 -0
  151. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/aggregate_validators.py +238 -0
  152. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/anomaly_validators.py +723 -0
  153. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/base.py +263 -0
  154. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/completeness_validators.py +269 -0
  155. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/cross_table_validators.py +375 -0
  156. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/datetime_validators.py +253 -0
  157. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/distribution_validators.py +422 -0
  158. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/drift_validators.py +615 -0
  159. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/geospatial_validators.py +486 -0
  160. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/multi_column_validators.py +706 -0
  161. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/privacy_validators.py +531 -0
  162. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/query_validators.py +510 -0
  163. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/registry.py +318 -0
  164. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/schema_validators.py +408 -0
  165. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/string_validators.py +396 -0
  166. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/table_validators.py +412 -0
  167. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators/uniqueness_validators.py +355 -0
  168. truthound_dashboard-1.3.1/src/truthound_dashboard/schemas/validators.py +59 -0
  169. truthound_dashboard-1.3.1/src/truthound_dashboard/static/assets/index-BZG20KuF.js +586 -0
  170. truthound_dashboard-1.3.1/src/truthound_dashboard/static/assets/index-D_HyZ3pb.css +1 -0
  171. truthound_dashboard-1.3.1/src/truthound_dashboard/static/assets/unmerged_dictionaries-CtpqQBm0.js +1 -0
  172. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/static/index.html +2 -2
  173. truthound_dashboard-1.2.1/e2e/tests/notifications.spec.ts +0 -65
  174. truthound_dashboard-1.2.1/frontend/.env.demo +0 -3
  175. truthound_dashboard-1.2.1/frontend/intlayer.config.ts +0 -14
  176. truthound_dashboard-1.2.1/frontend/netlify.toml +0 -31
  177. truthound_dashboard-1.2.1/frontend/src/components/DemoBanner.tsx +0 -61
  178. truthound_dashboard-1.2.1/frontend/src/content/demo.content.ts +0 -22
  179. truthound_dashboard-1.2.1/frontend/src/mocks/handlers/profile.ts +0 -33
  180. truthound_dashboard-1.2.1/frontend/src/test/test-utils.tsx +0 -26
  181. truthound_dashboard-1.2.1/src/truthound_dashboard/schemas/drift.py +0 -118
  182. truthound_dashboard-1.2.1/src/truthound_dashboard/static/assets/index-BqXVFyqj.js +0 -574
  183. truthound_dashboard-1.2.1/src/truthound_dashboard/static/assets/index-o8qHVDte.css +0 -1
  184. truthound_dashboard-1.2.1/src/truthound_dashboard/static/assets/unmerged_dictionaries-n_T3wZTf.js +0 -1
  185. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/.github/workflows/release.yml +0 -0
  186. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/.github/workflows/trigger-docs.yml +0 -0
  187. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/LICENSE +0 -0
  188. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/configuration.md +0 -0
  189. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/getting-started.md +0 -0
  190. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/index.md +0 -0
  191. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/docs/internationalization.md +0 -0
  192. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/e2e/package.json +0 -0
  193. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/e2e/tests/dashboard.spec.ts +0 -0
  194. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/e2e/tests/language.spec.ts +0 -0
  195. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/e2e/tests/theme.spec.ts +0 -0
  196. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/.env.development +0 -0
  197. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/.env.mock +0 -0
  198. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/.env.pip +0 -0
  199. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/.eslintrc.cjs +0 -0
  200. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/index.html +0 -0
  201. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/postcss.config.js +0 -0
  202. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/public/favicon.ico +0 -0
  203. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/public/mockServiceWorker.js +0 -0
  204. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/public-pip/favicon.ico +0 -0
  205. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/assets/logo.png +0 -0
  206. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/AnimatedNumber.tsx +0 -0
  207. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ConfirmDialog.tsx +0 -0
  208. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/GlassCard.tsx +0 -0
  209. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/LoadingFallback.tsx +0 -0
  210. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ThemeToggle.tsx +0 -0
  211. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/catalog/ColumnMappingDialog.tsx +0 -0
  212. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/collaboration/ActivityFeed.tsx +0 -0
  213. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/collaboration/Comments.tsx +0 -0
  214. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/theme-provider.tsx +0 -0
  215. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/alert-dialog.tsx +0 -0
  216. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/badge.tsx +0 -0
  217. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/button.tsx +0 -0
  218. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/card.tsx +0 -0
  219. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/dialog.tsx +0 -0
  220. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
  221. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/input.tsx +0 -0
  222. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/label.tsx +0 -0
  223. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/select.tsx +0 -0
  224. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/switch.tsx +0 -0
  225. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/table.tsx +0 -0
  226. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/tabs.tsx +0 -0
  227. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/toast.tsx +0 -0
  228. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/components/ui/toaster.tsx +0 -0
  229. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/catalog.content.ts +0 -0
  230. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/collaboration.content.ts +0 -0
  231. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/common.content.ts +0 -0
  232. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/dashboard.content.ts +0 -0
  233. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/drift.content.ts +0 -0
  234. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/errors.content.ts +0 -0
  235. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/glossary.content.ts +0 -0
  236. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/nav.content.ts +0 -0
  237. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/notifications.content.ts +0 -0
  238. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/schedules.content.ts +0 -0
  239. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/settings.content.ts +0 -0
  240. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/sources.content.ts +0 -0
  241. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/content/validation.content.ts +0 -0
  242. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/hooks/use-api.ts +0 -0
  243. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/hooks/use-toast.ts +0 -0
  244. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/index.css +0 -0
  245. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/lib/utils.ts +0 -0
  246. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/main.tsx +0 -0
  247. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/browser.ts +0 -0
  248. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/base.ts +0 -0
  249. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/catalog.test.ts +0 -0
  250. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/catalog.ts +0 -0
  251. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/collaboration.test.ts +0 -0
  252. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/collaboration.ts +0 -0
  253. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/glossary.test.ts +0 -0
  254. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/glossary.ts +0 -0
  255. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/history.ts +0 -0
  256. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/notifications.ts +0 -0
  257. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/profile.ts +0 -0
  258. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/schedules.ts +0 -0
  259. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/schemas.ts +0 -0
  260. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/factories/sources.ts +0 -0
  261. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/catalog.ts +0 -0
  262. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/collaboration.ts +0 -0
  263. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/glossary.ts +0 -0
  264. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/health.ts +0 -0
  265. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/history.ts +0 -0
  266. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/notifications.ts +0 -0
  267. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/schedules.ts +0 -0
  268. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/handlers/sources.ts +0 -0
  269. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/mocks/index.ts +0 -0
  270. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/CatalogDetail.tsx +0 -0
  271. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Dashboard.tsx +0 -0
  272. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Drift.tsx +0 -0
  273. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/GlossaryDetail.tsx +0 -0
  274. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/History.tsx +0 -0
  275. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Notifications.tsx +0 -0
  276. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Profile.tsx +0 -0
  277. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Rules.tsx +0 -0
  278. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Sources.tsx +0 -0
  279. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/pages/Validations.tsx +0 -0
  280. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/providers/index.ts +0 -0
  281. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/providers/intlayer/IntlayerProvider.tsx +0 -0
  282. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/providers/intlayer/index.ts +0 -0
  283. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/stores/catalogStore.test.ts +0 -0
  284. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/stores/catalogStore.ts +0 -0
  285. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/stores/glossaryStore.test.ts +0 -0
  286. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/stores/glossaryStore.ts +0 -0
  287. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/stores/theme.ts +0 -0
  288. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/src/vite-env.d.ts +0 -0
  289. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/tailwind.config.js +0 -0
  290. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/tsconfig.json +0 -0
  291. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/frontend/tsconfig.node.json +0 -0
  292. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/scripts/load_test.py +0 -0
  293. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/__init__.py +0 -0
  294. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/__main__.py +0 -0
  295. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/__init__.py +0 -0
  296. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/catalog.py +0 -0
  297. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/collaboration.py +0 -0
  298. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/error_handlers.py +0 -0
  299. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/glossary.py +0 -0
  300. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/health.py +0 -0
  301. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/history.py +0 -0
  302. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/middleware.py +0 -0
  303. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/notifications.py +0 -0
  304. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/rules.py +0 -0
  305. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/schedules.py +0 -0
  306. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/api/sources.py +0 -0
  307. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/cli.py +0 -0
  308. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/config.py +0 -0
  309. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/base.py +0 -0
  310. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/cache.py +0 -0
  311. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/connections.py +0 -0
  312. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/encryption.py +0 -0
  313. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/exceptions.py +0 -0
  314. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/logging.py +0 -0
  315. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/maintenance.py +0 -0
  316. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/__init__.py +0 -0
  317. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/base.py +0 -0
  318. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/channels.py +0 -0
  319. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/dispatcher.py +0 -0
  320. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/events.py +0 -0
  321. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/notifications/service.py +0 -0
  322. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/phase5/__init__.py +0 -0
  323. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/phase5/catalog.py +0 -0
  324. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/phase5/collaboration.py +0 -0
  325. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/phase5/glossary.py +0 -0
  326. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/sampling.py +0 -0
  327. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/core/scheduler.py +0 -0
  328. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/db/base.py +0 -0
  329. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/db/database.py +0 -0
  330. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/db/repository.py +0 -0
  331. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/main.py +0 -0
  332. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/base.py +0 -0
  333. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/catalog.py +0 -0
  334. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/glossary.py +0 -0
  335. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/history.py +0 -0
  336. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/rule.py +0 -0
  337. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/schedule.py +0 -0
  338. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/schemas/source.py +0 -0
  339. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/static/assets/logo--IpBiMPK.png +0 -0
  340. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/static/favicon.ico +0 -0
  341. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/__init__.py +0 -0
  342. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/config_updater.py +0 -0
  343. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/exceptions.py +0 -0
  344. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/__init__.py +0 -0
  345. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/anthropic.py +0 -0
  346. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/base.py +0 -0
  347. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/mistral.py +0 -0
  348. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/ollama.py +0 -0
  349. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/openai.py +0 -0
  350. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/providers/registry.py +0 -0
  351. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/src/truthound_dashboard/translate/translator.py +0 -0
  352. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/__init__.py +0 -0
  353. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/conftest.py +0 -0
  354. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/__init__.py +0 -0
  355. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_catalog.py +0 -0
  356. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_collaboration.py +0 -0
  357. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_glossary.py +0 -0
  358. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_health.py +0 -0
  359. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_rules.py +0 -0
  360. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_api/test_sources.py +0 -0
  361. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_core/__init__.py +0 -0
  362. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_core/test_services.py +0 -0
  363. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_db/__init__.py +0 -0
  364. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_db/test_models.py +0 -0
  365. {truthound_dashboard-1.2.1 → truthound_dashboard-1.3.1}/tests/test_phase4.py +0 -0
@@ -142,8 +142,8 @@ npm-debug.log*
142
142
  yarn-debug.log*
143
143
  yarn-error.log*
144
144
 
145
- # Intlayer (auto-generated)
146
- .intlayer/
145
+ # Intlayer cache only (dictionary must be committed for CI builds)
146
+ frontend/.intlayer/cache/
147
147
 
148
148
  # Frontend build output (handled by build process)
149
149
  # src/truthound_dashboard/static/
@@ -163,3 +163,4 @@ htmlcov/
163
163
  # Claude
164
164
  .claude/
165
165
  CLAUDE.md
166
+ .truthound_docs/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truthound-dashboard
3
- Version: 1.2.1
3
+ Version: 1.3.1
4
4
  Summary: Open-source data quality dashboard - GX Cloud alternative
5
5
  Author-email: Truthound Team <team@truthound.dev>
6
6
  License-Expression: Apache-2.0
@@ -43,10 +43,15 @@ Requires-Dist: ruff>=0.1.0; extra == 'dev'
43
43
  Provides-Extra: translate
44
44
  Description-Content-Type: text/markdown
45
45
 
46
- <img width="300" height="300" alt="Truthound_icon" src="https://github.com/user-attachments/assets/90d9e806-8895-45ec-97dc-f8300da4d997" />
46
+
47
+ <img width="2551" height="911" alt="스크린샷 2026-01-08 오전 11 54 18" src="https://github.com/user-attachments/assets/5e6b6d39-ee69-48f3-b0df-577f73bcb03d" />
47
48
 
48
49
  # truthound-dashboard
49
50
 
51
+ > **⚠️ Under Active Development**
52
+ >
53
+ > The [truthound](https://github.com/seadonggyun4/truthound) core library has recently undergone significant API improvements and feature enhancements. This dashboard project is currently being updated to fully support these changes. Some features may not yet reflect the latest truthound capabilities. We appreciate your patience as we work to bring full compatibility.
54
+
50
55
  [![PyPI version](https://img.shields.io/pypi/v/truthound-dashboard.svg)](https://pypi.org/project/truthound-dashboard/)
51
56
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
52
57
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](https://opensource.org/licenses/Apache-2.0)
@@ -55,9 +60,10 @@ Description-Content-Type: text/markdown
55
60
 
56
61
  A web-based data quality monitoring dashboard for [truthound](https://github.com/seadonggyun4/truthound).
57
62
 
58
- [Documentation](https://truthound.netlify.app) | [Live Demo](https://truthound-dashboard.netlify.app) | [PyPI](https://pypi.org/project/truthound-dashboard/)
63
+ [Documentation](https://truthound.netlify.app) | [PyPI](https://pypi.org/project/truthound-dashboard/)
59
64
 
60
65
  ## Overview
66
+ <img width="300" height="300" alt="Truthound_icon" src="https://github.com/user-attachments/assets/90d9e806-8895-45ec-97dc-f8300da4d997" />
61
67
 
62
68
  truthound-dashboard provides a graphical interface for managing data sources, executing validations, tracking historical results, scheduling automated checks, and configuring notifications. It serves as an alternative to commercial data quality platforms.
63
69
 
@@ -68,13 +74,16 @@ truthound-dashboard provides a graphical interface for managing data sources, ex
68
74
  | Data Source Management | Available | Available |
69
75
  | Schema Learning | Available | Available |
70
76
  | Validation Execution | Available | Available |
77
+ | Validator Registry | Available | Available (150+ validators) |
71
78
  | Validation History | Available | Available |
72
79
  | Scheduled Validations | Available | Available |
73
80
  | Slack Notifications | Available | Available |
74
81
  | Email Notifications | Available | Available |
75
82
  | Webhook Notifications | Available | Available |
76
- | Drift Detection | Available | Available |
83
+ | Drift Detection | Available | Available (8 methods) |
77
84
  | Data Profiling | Available | Available |
85
+ | PII Scan | Available | Available (GDPR/CCPA/LGPD) |
86
+ | Data Masking | Available | Available (redact/hash/fake) |
78
87
  | Business Glossary | Available | Available |
79
88
  | Data Catalog | Available | Available |
80
89
  | Dark Mode | Available | Available |
@@ -125,8 +134,11 @@ The dashboard interface is accessible at `http://localhost:8765`.
125
134
 
126
135
  ### Validation
127
136
  - On-demand validation execution using `th.check`
137
+ - 150+ validators across 15 categories (schema, completeness, uniqueness, distribution, string, datetime, aggregate, cross-table, multi-column, query, table, geospatial, drift, anomaly, privacy)
138
+ - Per-validator parameter configuration with UI
128
139
  - Persistent storage of validation results
129
140
  - Issue classification by severity (Critical, High, Medium, Low)
141
+ - Advanced options: column filtering, min_severity, parallel execution, SQL pushdown
130
142
 
131
143
  ### Validation History
132
144
  - Historical record of validation results
@@ -143,11 +155,26 @@ The dashboard interface is accessible at `http://localhost:8765`.
143
155
 
144
156
  ### Drift Detection
145
157
  - Dataset comparison using `th.compare`
146
- - Column-level drift analysis
158
+ - 8 detection methods: auto, ks, psi, chi2, js, kl, wasserstein, cvm, anderson
159
+ - Multiple testing correction: bonferroni, holm, bh
160
+ - Column-level drift analysis with statistical metrics
147
161
 
148
162
  ### Data Profiling
149
163
  - Statistical profiling using `th.profile`
150
164
  - Column-level statistics
165
+ - Sample size configuration for large datasets
166
+
167
+ ### PII Scan
168
+ - Personal data detection using `th.scan`
169
+ - Supported PII types: email, phone, SSN, credit card, IP address, and more
170
+ - Regulation compliance: GDPR, CCPA, LGPD
171
+ - Configurable confidence threshold
172
+
173
+ ### Data Masking
174
+ - Sensitive data protection using `th.mask`
175
+ - Three masking strategies: redact (asterisks), hash (SHA256), fake (realistic data)
176
+ - Auto-detection of PII columns
177
+ - Multiple output formats: CSV, Parquet, JSON
151
178
 
152
179
  ### Business Glossary
153
180
  - Business term definitions with categories
@@ -309,6 +336,24 @@ npm run dev
309
336
  npm run dev:mock
310
337
  ```
311
338
 
339
+ ## Preview with Mock Data
340
+
341
+ To explore the dashboard interface without configuring a backend or data sources, the repository includes a mock mode that simulates API responses using [Mock Service Worker (MSW)](https://mswjs.io/).
342
+
343
+ ```bash
344
+ # Clone the repository
345
+ git clone https://github.com/seadonggyun4/truthound-dashboard
346
+ cd truthound-dashboard/frontend
347
+
348
+ # Install dependencies
349
+ npm install
350
+
351
+ # Start the development server with mock data
352
+ npm run dev:mock
353
+ ```
354
+
355
+ The mock server provides realistic sample data for all dashboard features, enabling evaluation of the user interface and workflow without external dependencies.
356
+
312
357
  ## Testing
313
358
 
314
359
  ```bash
@@ -319,12 +364,6 @@ pytest
319
364
  pytest --cov=truthound_dashboard
320
365
  ```
321
366
 
322
- ## Live Demo
323
-
324
- A live demonstration is available at [https://truthound-dashboard.netlify.app](https://truthound-dashboard.netlify.app).
325
-
326
- The demo instance operates using Mock Service Worker (MSW) with simulated data and does not require a backend connection.
327
-
328
367
  ## Documentation
329
368
 
330
369
  Full documentation is available at [https://truthound.netlify.app](https://truthound.netlify.app).
@@ -1,7 +1,12 @@
1
- <img width="300" height="300" alt="Truthound_icon" src="https://github.com/user-attachments/assets/90d9e806-8895-45ec-97dc-f8300da4d997" />
1
+
2
+ <img width="2551" height="911" alt="스크린샷 2026-01-08 오전 11 54 18" src="https://github.com/user-attachments/assets/5e6b6d39-ee69-48f3-b0df-577f73bcb03d" />
2
3
 
3
4
  # truthound-dashboard
4
5
 
6
+ > **⚠️ Under Active Development**
7
+ >
8
+ > The [truthound](https://github.com/seadonggyun4/truthound) core library has recently undergone significant API improvements and feature enhancements. This dashboard project is currently being updated to fully support these changes. Some features may not yet reflect the latest truthound capabilities. We appreciate your patience as we work to bring full compatibility.
9
+
5
10
  [![PyPI version](https://img.shields.io/pypi/v/truthound-dashboard.svg)](https://pypi.org/project/truthound-dashboard/)
6
11
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
7
12
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](https://opensource.org/licenses/Apache-2.0)
@@ -10,9 +15,10 @@
10
15
 
11
16
  A web-based data quality monitoring dashboard for [truthound](https://github.com/seadonggyun4/truthound).
12
17
 
13
- [Documentation](https://truthound.netlify.app) | [Live Demo](https://truthound-dashboard.netlify.app) | [PyPI](https://pypi.org/project/truthound-dashboard/)
18
+ [Documentation](https://truthound.netlify.app) | [PyPI](https://pypi.org/project/truthound-dashboard/)
14
19
 
15
20
  ## Overview
21
+ <img width="300" height="300" alt="Truthound_icon" src="https://github.com/user-attachments/assets/90d9e806-8895-45ec-97dc-f8300da4d997" />
16
22
 
17
23
  truthound-dashboard provides a graphical interface for managing data sources, executing validations, tracking historical results, scheduling automated checks, and configuring notifications. It serves as an alternative to commercial data quality platforms.
18
24
 
@@ -23,13 +29,16 @@ truthound-dashboard provides a graphical interface for managing data sources, ex
23
29
  | Data Source Management | Available | Available |
24
30
  | Schema Learning | Available | Available |
25
31
  | Validation Execution | Available | Available |
32
+ | Validator Registry | Available | Available (150+ validators) |
26
33
  | Validation History | Available | Available |
27
34
  | Scheduled Validations | Available | Available |
28
35
  | Slack Notifications | Available | Available |
29
36
  | Email Notifications | Available | Available |
30
37
  | Webhook Notifications | Available | Available |
31
- | Drift Detection | Available | Available |
38
+ | Drift Detection | Available | Available (8 methods) |
32
39
  | Data Profiling | Available | Available |
40
+ | PII Scan | Available | Available (GDPR/CCPA/LGPD) |
41
+ | Data Masking | Available | Available (redact/hash/fake) |
33
42
  | Business Glossary | Available | Available |
34
43
  | Data Catalog | Available | Available |
35
44
  | Dark Mode | Available | Available |
@@ -80,8 +89,11 @@ The dashboard interface is accessible at `http://localhost:8765`.
80
89
 
81
90
  ### Validation
82
91
  - On-demand validation execution using `th.check`
92
+ - 150+ validators across 15 categories (schema, completeness, uniqueness, distribution, string, datetime, aggregate, cross-table, multi-column, query, table, geospatial, drift, anomaly, privacy)
93
+ - Per-validator parameter configuration with UI
83
94
  - Persistent storage of validation results
84
95
  - Issue classification by severity (Critical, High, Medium, Low)
96
+ - Advanced options: column filtering, min_severity, parallel execution, SQL pushdown
85
97
 
86
98
  ### Validation History
87
99
  - Historical record of validation results
@@ -98,11 +110,26 @@ The dashboard interface is accessible at `http://localhost:8765`.
98
110
 
99
111
  ### Drift Detection
100
112
  - Dataset comparison using `th.compare`
101
- - Column-level drift analysis
113
+ - 8 detection methods: auto, ks, psi, chi2, js, kl, wasserstein, cvm, anderson
114
+ - Multiple testing correction: bonferroni, holm, bh
115
+ - Column-level drift analysis with statistical metrics
102
116
 
103
117
  ### Data Profiling
104
118
  - Statistical profiling using `th.profile`
105
119
  - Column-level statistics
120
+ - Sample size configuration for large datasets
121
+
122
+ ### PII Scan
123
+ - Personal data detection using `th.scan`
124
+ - Supported PII types: email, phone, SSN, credit card, IP address, and more
125
+ - Regulation compliance: GDPR, CCPA, LGPD
126
+ - Configurable confidence threshold
127
+
128
+ ### Data Masking
129
+ - Sensitive data protection using `th.mask`
130
+ - Three masking strategies: redact (asterisks), hash (SHA256), fake (realistic data)
131
+ - Auto-detection of PII columns
132
+ - Multiple output formats: CSV, Parquet, JSON
106
133
 
107
134
  ### Business Glossary
108
135
  - Business term definitions with categories
@@ -264,6 +291,24 @@ npm run dev
264
291
  npm run dev:mock
265
292
  ```
266
293
 
294
+ ## Preview with Mock Data
295
+
296
+ To explore the dashboard interface without configuring a backend or data sources, the repository includes a mock mode that simulates API responses using [Mock Service Worker (MSW)](https://mswjs.io/).
297
+
298
+ ```bash
299
+ # Clone the repository
300
+ git clone https://github.com/seadonggyun4/truthound-dashboard
301
+ cd truthound-dashboard/frontend
302
+
303
+ # Install dependencies
304
+ npm install
305
+
306
+ # Start the development server with mock data
307
+ npm run dev:mock
308
+ ```
309
+
310
+ The mock server provides realistic sample data for all dashboard features, enabling evaluation of the user interface and workflow without external dependencies.
311
+
267
312
  ## Testing
268
313
 
269
314
  ```bash
@@ -274,12 +319,6 @@ pytest
274
319
  pytest --cov=truthound_dashboard
275
320
  ```
276
321
 
277
- ## Live Demo
278
-
279
- A live demonstration is available at [https://truthound-dashboard.netlify.app](https://truthound-dashboard.netlify.app).
280
-
281
- The demo instance operates using Mock Service Worker (MSW) with simulated data and does not require a backend connection.
282
-
283
322
  ## Documentation
284
323
 
285
324
  Full documentation is available at [https://truthound.netlify.app](https://truthound.netlify.app).
@@ -288,19 +288,56 @@ Analyzes data to automatically generate a schema.
288
288
 
289
289
  Run validation (th.check).
290
290
 
291
- **Request:**
291
+ **Request (Simple Mode):**
292
292
  ```json
293
293
  {
294
- "validators": ["not_null", "unique", "dtype"],
294
+ "validators": ["Null", "Unique", "ColumnExists"],
295
295
  "schema_path": "/path/to/schema.yaml",
296
296
  "auto_schema": false
297
297
  }
298
298
  ```
299
299
 
300
+ **Request (Advanced Mode with validator_configs):**
301
+ ```json
302
+ {
303
+ "validator_configs": [
304
+ {
305
+ "name": "Between",
306
+ "enabled": true,
307
+ "params": {
308
+ "column": "price",
309
+ "min_value": 0,
310
+ "max_value": 10000
311
+ },
312
+ "severity_override": "high"
313
+ },
314
+ {
315
+ "name": "Regex",
316
+ "enabled": true,
317
+ "params": {
318
+ "column": "email",
319
+ "pattern": "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$"
320
+ }
321
+ }
322
+ ],
323
+ "columns": ["price", "email", "status"],
324
+ "min_severity": "medium",
325
+ "parallel": true,
326
+ "max_workers": 4
327
+ }
328
+ ```
329
+
300
330
  **Parameters:**
301
- - `validators` (optional): List of validators to run
331
+ - `validators` (optional): List of validator names to run (simple mode)
332
+ - `validator_configs` (optional): Per-validator configuration with params (advanced mode, takes precedence)
302
333
  - `schema_path` (optional): Path to schema file
303
334
  - `auto_schema` (optional): If true, auto-generate schema before validation
335
+ - `columns` (optional): Specific columns to validate
336
+ - `min_severity` (optional): Minimum severity to report (low, medium, high, critical)
337
+ - `strict` (optional): Raise exception on failures
338
+ - `parallel` (optional): Enable parallel execution
339
+ - `max_workers` (optional): Max threads for parallel (1-32)
340
+ - `pushdown` (optional): Enable SQL query pushdown
304
341
 
305
342
  **Response:**
306
343
  ```json
@@ -378,6 +415,16 @@ Retrieve validation history for a source.
378
415
 
379
416
  Run data profiling (th.profile).
380
417
 
418
+ **Request:**
419
+ ```json
420
+ {
421
+ "sample_size": 10000
422
+ }
423
+ ```
424
+
425
+ **Parameters:**
426
+ - `sample_size` (optional): Maximum rows to sample for profiling
427
+
381
428
  **Response:**
382
429
  ```json
383
430
  {
@@ -433,18 +480,37 @@ Compare two datasets (th.compare).
433
480
  **Request:**
434
481
  ```json
435
482
  {
436
- "source_id": "abc123",
437
- "target_id": "def456"
483
+ "baseline_source_id": "abc123",
484
+ "current_source_id": "def456",
485
+ "columns": ["price", "quantity"],
486
+ "method": "psi",
487
+ "threshold": 0.1,
488
+ "correction": "bh",
489
+ "sample_size": 10000
438
490
  }
439
491
  ```
440
492
 
441
- Or:
442
- ```json
443
- {
444
- "source_path": "/data/v1.csv",
445
- "target_path": "/data/v2.csv"
446
- }
447
- ```
493
+ **Parameters:**
494
+ - `baseline_source_id` (required): Baseline source ID
495
+ - `current_source_id` (required): Current source ID to compare
496
+ - `columns` (optional): Columns to compare (null = all columns)
497
+ - `method` (optional): Detection method - auto, ks, psi, chi2, js, kl, wasserstein, cvm, anderson (default: auto)
498
+ - `threshold` (optional): Custom threshold (default varies by method)
499
+ - `correction` (optional): Multiple testing correction - none, bonferroni, holm, bh (default: bh for multiple columns)
500
+ - `sample_size` (optional): Sample size for large datasets
501
+
502
+ **Detection Methods:**
503
+ | Method | Use Case | Default Threshold |
504
+ |--------|----------|-------------------|
505
+ | auto | Smart selection based on data type | 0.05 |
506
+ | ks | Continuous distributions | 0.05 |
507
+ | psi | Industry standard, any distribution | 0.1 |
508
+ | chi2 | Categorical data | 0.05 |
509
+ | js | Symmetric, bounded (0-1) | 0.1 |
510
+ | kl | Information loss measure | 0.1 |
511
+ | wasserstein | Earth Mover's Distance | 0.1 |
512
+ | cvm | Sensitive to tail differences | 0.05 |
513
+ | anderson | Weighted for tail sensitivity | 0.05 |
448
514
 
449
515
  **Response:**
450
516
  ```json
@@ -479,6 +545,207 @@ Or:
479
545
 
480
546
  Retrieve drift comparison result.
481
547
 
548
+ ### GET /drift/comparisons
549
+
550
+ List drift comparisons with optional filters.
551
+
552
+ **Query Parameters:**
553
+ - `baseline_source_id` (optional): Filter by baseline source
554
+ - `current_source_id` (optional): Filter by current source
555
+ - `limit` (default: 20): Maximum results (1-100)
556
+
557
+ ---
558
+
559
+ ## Validators
560
+
561
+ ### GET /validators
562
+
563
+ List all available validators with their parameter definitions.
564
+
565
+ **Query Parameters:**
566
+ - `category` (optional): Filter by category (schema, completeness, uniqueness, etc.)
567
+ - `search` (optional): Search by name, description, or tags
568
+
569
+ **Response:**
570
+ ```json
571
+ [
572
+ {
573
+ "name": "Between",
574
+ "display_name": "Value Between",
575
+ "category": "distribution",
576
+ "description": "Validates that values fall within a specified range",
577
+ "parameters": [
578
+ {
579
+ "name": "column",
580
+ "label": "Column",
581
+ "type": "column",
582
+ "required": true
583
+ },
584
+ {
585
+ "name": "min_value",
586
+ "label": "Minimum Value",
587
+ "type": "float",
588
+ "required": true
589
+ },
590
+ {
591
+ "name": "max_value",
592
+ "label": "Maximum Value",
593
+ "type": "float",
594
+ "required": true
595
+ }
596
+ ],
597
+ "tags": ["distribution", "range", "bounds"],
598
+ "severity_default": "medium"
599
+ }
600
+ ]
601
+ ```
602
+
603
+ ### GET /validators/categories
604
+
605
+ List all validator categories with metadata.
606
+
607
+ **Response:**
608
+ ```json
609
+ [
610
+ {
611
+ "value": "schema",
612
+ "label": "Schema",
613
+ "description": "Validate structure, columns, and data types",
614
+ "icon": "layout",
615
+ "color": "#3b82f6",
616
+ "validator_count": 14
617
+ }
618
+ ]
619
+ ```
620
+
621
+ ### GET /validators/{name}
622
+
623
+ Get a specific validator definition by name.
624
+
625
+ ---
626
+
627
+ ## PII Scan
628
+
629
+ ### POST /scans/sources/{id}/scan
630
+
631
+ Run PII scan on a data source (th.scan).
632
+
633
+ **Request:**
634
+ ```json
635
+ {
636
+ "columns": ["email", "phone", "ssn"],
637
+ "regulations": ["gdpr", "ccpa"],
638
+ "min_confidence": 0.8
639
+ }
640
+ ```
641
+
642
+ **Parameters:**
643
+ - `columns` (optional): Columns to scan (null = all columns)
644
+ - `regulations` (optional): Privacy regulations to check - gdpr, ccpa, lgpd
645
+ - `min_confidence` (optional): Confidence threshold (0.0-1.0, default: 0.8)
646
+
647
+ **Response:**
648
+ ```json
649
+ {
650
+ "id": "scan123",
651
+ "source_id": "abc123",
652
+ "status": "success",
653
+ "total_columns_scanned": 15,
654
+ "columns_with_pii": 3,
655
+ "total_findings": 5,
656
+ "has_violations": true,
657
+ "total_violations": 2,
658
+ "findings": [
659
+ {
660
+ "column": "email",
661
+ "pii_type": "email",
662
+ "confidence": 0.95,
663
+ "sample_count": 1000
664
+ }
665
+ ],
666
+ "violations": [
667
+ {
668
+ "regulation": "gdpr",
669
+ "column": "ssn",
670
+ "pii_type": "ssn",
671
+ "message": "SSN data requires explicit consent under GDPR",
672
+ "severity": "high"
673
+ }
674
+ ],
675
+ "created_at": "2024-01-15T10:30:00Z"
676
+ }
677
+ ```
678
+
679
+ ### GET /scans/{id}
680
+
681
+ Get PII scan result by ID.
682
+
683
+ ### GET /scans/sources/{id}/scans
684
+
685
+ List PII scan history for a source.
686
+
687
+ ### GET /scans/sources/{id}/scans/latest
688
+
689
+ Get the most recent PII scan for a source.
690
+
691
+ ---
692
+
693
+ ## Data Masking
694
+
695
+ ### POST /masks/sources/{id}/mask
696
+
697
+ Run data masking on a source (th.mask).
698
+
699
+ **Request:**
700
+ ```json
701
+ {
702
+ "columns": ["email", "ssn", "phone"],
703
+ "strategy": "hash",
704
+ "output_format": "csv"
705
+ }
706
+ ```
707
+
708
+ **Parameters:**
709
+ - `columns` (optional): Columns to mask (null = auto-detect PII columns)
710
+ - `strategy` (optional): Masking strategy - redact, hash, fake (default: redact)
711
+ - `output_format` (optional): Output format - csv, parquet, json (default: csv)
712
+
713
+ **Masking Strategies:**
714
+ | Strategy | Description |
715
+ |----------|-------------|
716
+ | redact | Replace values with asterisks (e.g., "john@example.com" → "****") |
717
+ | hash | Replace with SHA256 hash (deterministic, can be used for joins) |
718
+ | fake | Replace with realistic fake data (e.g., "john@example.com" → "alice@test.org") |
719
+
720
+ **Response:**
721
+ ```json
722
+ {
723
+ "id": "mask123",
724
+ "source_id": "abc123",
725
+ "status": "success",
726
+ "strategy": "hash",
727
+ "output_path": "/tmp/masked_data.csv",
728
+ "columns_masked": ["email", "ssn", "phone"],
729
+ "auto_detected": false,
730
+ "row_count": 10000,
731
+ "column_count": 15,
732
+ "duration_ms": 1500,
733
+ "created_at": "2024-01-15T10:30:00Z"
734
+ }
735
+ ```
736
+
737
+ ### GET /masks/{id}
738
+
739
+ Get mask operation by ID.
740
+
741
+ ### GET /masks/sources/{id}/masks
742
+
743
+ List mask operations for a source.
744
+
745
+ ### GET /masks/sources/{id}/masks/latest
746
+
747
+ Get the most recent mask operation for a source.
748
+
482
749
  ---
483
750
 
484
751
  ## Schedules