./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`: 考証の総括