./docs/データモデル.md
# 時代考証アシストAIシステム - データモデル
## ER図
```mermaid
---
title: 時代考証システム - データフローER図
---
erDiagram
AnalyzeRequest ||--o{ Image : contains
AnalyzeRequest ||--|| InputText : contains
AnalyzeRequest {
string text
list images
int era_year
string input_mode
}
Image {
string base64_data
string format
}
InputText {
string content
}
HistoricalAccuracyState ||--o{ EnumeratedItem : has
HistoricalAccuracyState ||--o{ Observation : has
HistoricalAccuracyState ||--o{ VerificationResult : has
HistoricalAccuracyState {
string image_base64
string image_path
string input_text
int era_year
list enumerated_items
list observations
list verifications
bool list_all_done
bool list_up_done
}
EnumeratedItem {
string id
string category
string description
string region
}
Observation ||--o{ CheckItem : has
Observation {
string id
string category
string description
string region
list check_items
}
CheckItem {
string item
}
VerificationResult ||--o{ LlmVerificationResponse : has
VerificationResult ||--o{ ReferenceURL : has
VerificationResult ||--o{ ImageSearchResult : has
VerificationResult {
string observation_id
bool is_appropriate_for_era
string explanation
list reference_urls
list reference_urls_with_scores
list image_search_results
int ambiguity_score
bool search_performed
list search_queries
list inappropriate_models
}
LlmVerificationResponse {
string model
bool is_appropriate
string explanation
list reference_urls
string raw_content
}
ReferenceURL {
string url
int content_match_score
string evidence_excerpt
}
ImageSearchResult {
string title
string image_url
string source
string thumbnail
}
HistoricalAccuracyResult ||--o{ EnumeratedItem : contains
HistoricalAccuracyResult ||--o{ Observation : contains
HistoricalAccuracyResult ||--o{ VerificationResult : contains
HistoricalAccuracyResult {
string image_path
string input_text
int era_year
list enumerated_items
list observations
list verifications
string summary
}
```
## データモデル説明
### AnalyzeRequest
時代考証のリクエストデータ。
- `text`: ユーザー入力テキスト
- `images`: 画像のbase64データ配列
- `era_year`: 考証対象の年(例: 1927)
- `input_mode`: 入力モード(auto/image/text)
### HistoricalAccuracyState
LangGraphの内部状態。
- `image_base64`: 画像データ(base64)
- `image_path`: 画像パス
- `input_text`: 入力テキスト
- `era_year`: 考証対象年
- `enumerated_items`: 文字・物体列挙結果
- `observations`: 検証観点リスト
- `verifications`: 検証結果リスト
- `list_all_done`: 文字・物体列挙完了フラグ
- `list_up_done`: 検証観点リスト完了フラグ
### EnumeratedItem
画像内の文字・物体の列挙結果。
- `id`: 一意識別子(例: item_1)
- `category`: 種別(text / object / design)
- `description`: 内容の説明
- `region`: 画像内の位置
### Observation
時代考証の検証観点。
- `id`: 観点の一意識別子(例: obs_1)
- `category`: 種別(text / object / design / clothing / other)
- `description`: 観点の概要
- `region`: 画像内の位置
- `check_items`: 検証すべきチェック項目のリスト
### VerificationResult
観点ごとの時代考証結果。
- `observation_id`: 対応する観点のID
- `is_appropriate_for_era`: 時代に適切か(True=問題なし / False=時代錯誤の疑い)
- `explanation`: 判定理由・説明
- `reference_urls`: 参照した情報源のURL一覧
- `reference_urls_with_scores`: URL・内容マッチ度・根拠部分のリスト
- `image_search_results`: 画像検索結果のリスト
- `ambiguity_score`: LLMの曖昧さスコア(0-100)
- `search_performed`: 曖昧さが高く検索を実行したか
- `search_queries`: 実行した検索クエリ
- `inappropriate_models`: 不適切と判定したLLMモデル名の一覧
- `llm_responses`: 各LLMの応答(アンサンブル判定時)
### LlmVerificationResponse
アンサンブル判定における各LLMの応答。
- `model`: LLMモデル名
- `is_appropriate`: 適切と判定したか
- `explanation`: 判定理由
- `reference_urls`: 参照URL一覧
- `raw_content`: LLMの生の応答テキスト
### ReferenceURL
参照URLと内容マッチ度。
- `url`: 参照URL
- `content_match_score`: 内容マッチ度(0-100)
- `evidence_excerpt`: 根拠部分の抜粋
### ImageSearchResult
画像検索結果。
- `title`: タイトル
- `image_url`: 画像URL
- `source`: ソース
- `thumbnail`: サムネイルURL
### HistoricalAccuracyResult
時代考証の最終結果(JSON保存用)。
- `image_path`: 対象画像のパス
- `input_text`: 入力テキスト
- `era_year`: 考証対象の年
- `enumerated_items`: 文字・物体列挙結果
- `observations`: 検証観点リスト
- `verifications`: 各観点の検証結果
- `summary`: 考証の総括