Changes for page Data Model (From Specification Chat)
Last modified by Robert Schaub on 2025/12/24 20:35
From version 1.2
edited by Robert Schaub
on 2025/11/27 12:03
on 2025/11/27 12:03
Change comment:
Update document after refactoring.
To version 2.2
edited by Robert Schaub
on 2025/11/27 12:08
on 2025/11/27 12:08
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -41,10 +41,10 @@ 41 41 (scenarios live at the *claim* level, not per individual phrasing). 42 42 * Verdicts and Scenario–Evidence links are always attached to **versions**: 43 43 * {{code}}SCENARIO_VERSION{{/code}} + 44 - {{code}}EVIDENCE_VERSION{{/code}} →45 - {{code}}SCENARIO_EVIDENCE_LINK_VERSION{{/code}}44 + {{code}}EVIDENCE_VERSION{{/code}} → 45 + {{code}}SCENARIO_EVIDENCE_LINK_VERSION{{/code}} 46 46 * {{code}}SCENARIO_VERSION{{/code}} → 47 - {{code}}VERDICT_VERSION{{/code}}47 + {{code}}VERDICT_VERSION{{/code}} 48 48 49 49 This ensures that when a Scenario or Evidence changes, old verdicts and links 50 50 remain intact as historical records and can be revisited. ... ... @@ -59,124 +59,95 @@ 59 59 60 60 {{mermaid}} 61 61 erDiagram 62 - 63 63 CLAIM_CLUSTER { 64 - string claimClusterId 65 - string theme 66 - string embeddingVectorRef 67 - string language 68 - datetime createdAt 63 + string ClusterID PK 64 + string EmbeddingVectorRef 65 + string Theme 69 69 } 70 70 71 71 CLAIM { 72 - string claimId73 - string claimClusterIdFk74 - string status75 - datetime createdAt69 + string ClaimID PK 70 + string ClusterID FK 71 + string Status 72 + datetime CreatedAt 76 76 } 77 77 78 78 CLAIM_VERSION { 79 - string claimVersionId 80 - string claimIdFk 81 - string text 82 - string language 83 - string claimType 84 - string domain 85 - string authorType 86 - datetime createdAt 76 + string ClaimVersionID PK 77 + string ClaimID FK 78 + string Text 79 + string ClaimType 80 + string Domain 81 + datetime CreatedAt 87 87 } 88 88 89 89 SCENARIO { 90 - string scenarioId 91 - string claimIdFk 92 - string key 93 - string title 94 - boolean isDeprecated 85 + string ScenarioID PK 86 + string ClaimID FK 87 + string Name 88 + datetime CreatedAt 95 95 } 96 96 97 97 SCENARIO_VERSION { 98 - string scenarioVersionId 99 - string scenarioIdFk 100 - string versionTag 101 - string definitionsJson 102 - string assumptionsJson 103 - string boundariesJson 104 - string notes 105 - datetime createdAt 92 + string ScenarioVersionID PK 93 + string ScenarioID FK 94 + string Definitions 95 + string Assumptions 96 + string Boundaries 97 + datetime CreatedAt 106 106 } 107 107 108 108 EVIDENCE { 109 - string evidenceId 110 - string canonicalSourceId 111 - string mainUrl 112 - string evidenceType 113 - string language 101 + string EvidenceID PK 102 + string SourceType 103 + string URL 104 + float ReliabilityScore 114 114 } 115 115 116 116 EVIDENCE_VERSION { 117 - string evidenceVersionId 118 - string evidenceIdFk 119 - string snapshotLocation 120 - string extractionSummary 121 - string reliabilityModel 122 - datetime collectedAt 123 - datetime createdAt 108 + string EvidenceVersionID PK 109 + string EvidenceID FK 110 + string Summary 111 + float ReliabilityScore 112 + datetime CreatedAt 124 124 } 125 125 126 126 SCENARIO_EVIDENCE_LINK { 127 - string scenarioEvidenceLinkId 128 - string scenarioIdFk 129 - string evidenceIdFk 116 + string LinkID PK 117 + string ScenarioVersionID FK 118 + string EvidenceVersionID FK 119 + float Relevance 120 + string Direction 130 130 } 131 131 132 - SCENARIO_EVIDENCE_LINK_VERSION { 133 - string scenarioEvidenceLinkVersionId 134 - string scenarioEvidenceLinkIdFk 135 - string scenarioVersionIdFk 136 - string evidenceVersionIdFk 137 - float relevance 138 - string direction %% SUPPORTS / CONTRADICTS / MIXED / CONTEXT 139 - string rationale 140 - datetime createdAt 141 - } 142 - 143 143 VERDICT { 144 - string verdictId 145 - string scenarioIdFk 146 - string verdictType %% e.g. likelihood, classification 124 + string VerdictID PK 125 + string ScenarioID FK 147 147 } 148 148 149 149 VERDICT_VERSION { 150 - string verdictVersionId 151 - string verdictIdFk 152 - string scenarioVersionIdFk 153 - float probability 154 - float confidence 155 - string reasoningSummary 156 - string uncertaintyFactorsJson 157 - datetime createdAt 129 + string VerdictVersionID PK 130 + string VerdictID FK 131 + float Verdict 132 + float Confidence 133 + string Reasoning 134 + datetime CreatedAt 158 158 } 159 159 160 - %% Relationships 161 - 162 162 CLAIM_CLUSTER ||--o{ CLAIM : contains 163 - CLAIM ||--o{ CLAIM_VERSION : has_versions 164 - CLAIM ||--o{ SCENARIO : has_scenarios 165 - SCENARIO ||--o{ SCENARIO_VERSION : has_versions 138 + CLAIM ||--o{ CLAIM_VERSION : versions 166 166 167 - EVIDENCE ||--o{ EVIDENCE_VERSION : has_versions 140 + CLAIM ||--o{ SCENARIO : has 141 + SCENARIO ||--o{ SCENARIO_VERSION : versions 168 168 169 - SCENARIO ||--o{ SCENARIO_EVIDENCE_LINK : may_link 170 - EVIDENCE ||--o{ SCENARIO_EVIDENCE_LINK : may_link 143 + EVIDENCE ||--o{ EVIDENCE_VERSION : versions 171 171 172 - SCENARIO_EVIDENCE_LINK ||--o{ SCENARIO_EVIDENCE_LINK_VERSION : has_versions 145 + SCENARIO_VERSION ||--o{ SCENARIO_EVIDENCE_LINK : links 146 + EVIDENCE_VERSION ||--o{ SCENARIO_EVIDENCE_LINK : linked 173 173 174 - SCENARIO _VERSION||--o{SCENARIO_EVIDENCE_LINK_VERSION:uses_evidence175 - EVIDENCE_VERSION||--o{SCENARIO_EVIDENCE_LINK_VERSION :is_used_in148 + SCENARIO ||--o{ VERDICT : assessed 149 + VERDICT ||--o{ VERDICT_VERSION : versions 176 176 177 - SCENARIO ||--o{ VERDICT : has_verdicts 178 - VERDICT ||--o{ VERDICT_VERSION : has_versions 179 - SCENARIO_VERSION ||--o{ VERDICT_VERSION : assessed_in 180 180 {{/mermaid}} 181 181 182 182 **Important points:** ... ... @@ -201,83 +201,145 @@ 201 201 202 202 {{mermaid}} 203 203 erDiagram 175 + %% Core clusters shown for context 176 + CLAIM_CLUSTER { 177 + string ClusterID PK 178 + string EmbeddingVectorRef 179 + string Theme 180 + } 204 204 205 - USER { 206 - string userId 207 - string displayName 208 - string email 209 - string userType %% "human" or "technical" 210 - datetime createdAt 182 + CLAIM { 183 + string ClaimID PK 184 + string ClusterID FK 185 + string Status 186 + datetime CreatedAt 211 211 } 212 212 213 - TECHNICAL_USER { 214 - string technicalUserId 215 - string userIdFk 216 - string description 217 - string systemIdentifier 189 + CLAIM_VERSION { 190 + string ClaimVersionID PK 191 + string ClaimID FK 192 + string Text 193 + string ClaimType 194 + string Domain 195 + datetime CreatedAt 218 218 } 219 219 220 - RO LE{221 - string ro leId222 - string code %% e.g. READER,CONTRIBUTOR, REVIEWER, TRUSTED_CONTRIBUTOR,MODERATOR, SYSTEM_ADMIN,FEDERATION_OPERATOR, FEDERATION_ADMIN223 - string description224 - booleanisFederationRole198 + SCENARIO { 199 + string ScenarioID PK 200 + string ClaimID FK 201 + string Name 202 + datetime CreatedAt 225 225 } 226 226 227 - USER_ROLE_MEMBERSHIP { 228 - string membershipId 229 - string userIdFk 230 - string roleIdFk 231 - datetime grantedAt 232 - string grantedByUserIdFk 205 + SCENARIO_VERSION { 206 + string ScenarioVersionID PK 207 + string ScenarioID FK 208 + string Definitions 209 + string Assumptions 210 + string Boundaries 211 + datetime CreatedAt 233 233 } 234 234 235 - REVIEW_ACTION { 236 - string reviewActionId 237 - string subjectType %% e.g. CLAIM_VERSION, SCENARIO_VERSION... 238 - string subjectVersionId 239 - string actionType %% APPROVE, REJECT, FLAG, COMMENT, REQUEST_CHANGES... 240 - string outcome %% ACCEPTED, REJECTED, ESCALATED... 241 - string comment 242 - string createdByUserIdFk 243 - datetime createdAt 214 + EVIDENCE { 215 + string EvidenceID PK 216 + string SourceType 217 + string URL 218 + float ReliabilityScore 244 244 } 245 245 246 - %% Versioned data entities (references from the core model) 221 + EVIDENCE_VERSION { 222 + string EvidenceVersionID PK 223 + string EvidenceID FK 224 + string Summary 225 + float ReliabilityScore 226 + datetime CreatedAt 227 + } 247 247 248 - CLAIM_VERSION { 249 - string claimVersionId 229 + VERDICT { 230 + string VerdictID PK 231 + string ScenarioID FK 250 250 } 251 251 252 - SCENARIO_VERSION { 253 - string scenarioVersionId 234 + VERDICT_VERSION { 235 + string VerdictVersionID PK 236 + string VerdictID FK 237 + float Verdict 238 + float Confidence 239 + string Reasoning 240 + datetime CreatedAt 254 254 } 255 255 256 - EVIDENCE_VERSION { 257 - string evidenceVersionId 243 + %% Users and roles 244 + USER { 245 + string UserID PK 246 + string Handle 247 + string Email 258 258 } 259 259 260 - SCENARIO_EVIDENCE_LINK_VERSION { 261 - string scenarioEvidenceLinkVersionId 250 + TECHNICAL_USER { 251 + string UserID PK 252 + string SystemName 262 262 } 263 263 264 - VERDICT_VERSION { 265 - string verdictVersionId 255 + CONTRIBUTING_USER { 256 + string UserID PK 257 + string DisplayName 266 266 } 267 267 268 - %% Relationships 260 + TRUSTED_CONTRIBUTOR { 261 + string UserID PK 262 + string TrustLevel 263 + } 269 269 270 - USER ||--o{ TECHNICAL_USER : may_be 271 - USER ||--o{ USER_ROLE_MEMBERSHIP : has_role 272 - ROLE ||--o{ USER_ROLE_MEMBERSHIP : assigned_to 265 + REVIEWER { 266 + string UserID PK 267 + string Domain 268 + } 273 273 270 + EXPERT { 271 + string UserID PK 272 + string ExpertiseArea 273 + } 274 + 275 + FEDERATION_NODE { 276 + string NodeID PK 277 + string Region 278 + } 279 + 280 + FEDERATION_ADMIN { 281 + string UserID PK 282 + string Permissions 283 + } 284 + 285 + REVIEW_ACTION { 286 + string ReviewActionID PK 287 + string UserID FK 288 + string TargetEntityType 289 + string TargetEntityVersionID 290 + string ActionType 291 + string Comment 292 + datetime Timestamp 293 + } 294 + 295 + %% Inheritance / specialization (modelled as relationships) 296 + USER ||--o{ TECHNICAL_USER : "is a" 297 + USER ||--o{ CONTRIBUTING_USER : "is a" 298 + 299 + CONTRIBUTING_USER ||--o{ TRUSTED_CONTRIBUTOR : "subset" 300 + CONTRIBUTING_USER ||--o{ REVIEWER : "subset" 301 + CONTRIBUTING_USER ||--o{ EXPERT : "subset" 302 + 303 + TECHNICAL_USER ||--o{ FEDERATION_NODE : "operates" 304 + TECHNICAL_USER ||--o{ FEDERATION_ADMIN : "administers" 305 + 306 + %% Review actions on versioned entities 274 274 USER ||--o{ REVIEW_ACTION : performs 275 275 276 - CLAIM_VERSION||--o{REVIEW_ACTION :is_reviewed_in277 - SCENARIO_VERSION ||--o{ REVIEW_ACTION:is_reviewed_in278 - EVI DENCE_VERSION||--o{REVIEW_ACTION :is_reviewed_in279 - SCENARIO_EVIDENCE_LINK_VERSION||--o{REVIEW_ACTION :is_reviewed_in280 - VERDICT_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in309 + REVIEW_ACTION }o--|| CLAIM_VERSION : reviews 310 + REVIEW_ACTION }o--|| SCENARIO_VERSION : reviews 311 + REVIEW_ACTION }o--|| EVIDENCE_VERSION : reviews 312 + REVIEW_ACTION }o--|| VERDICT_VERSION : reviews 313 + 281 281 {{/mermaid}} 282 282 283 283 Notes: ... ... @@ -309,7 +309,7 @@ 309 309 * It may inherit some links from earlier scenarios, or start empty depending 310 310 on the change classification (cosmetic vs. conceptual). 311 311 * All verdicts for that scenario are recalculated and stored as new 312 - {{code}}VERDICT_VERSION{{/code}} entries.345 + {{code}}VERDICT_VERSION{{/code}} entries. 313 313 314 314 * REVIEW_ACTIONs are always attached to the **exact version** that was seen by 315 315 the reviewer. This preserves a faithful audit trail if data later changes.