概要

Jinbaモジュールチェッカー V2は、JSON形式で定義されたカスタムルールに対してファイルやデータをチェックする高度な検証ツールです。このツールは、包括的なドキュメント検証、コンプライアンスチェック、および元のチェッカーよりも強化された機能によるデータ品質保証のために設計されています。

主要機能

  • ルールベース検証: JSON形式でカスタム検証ルールを定義
  • マルチフォーマットサポート: PDF、テキスト、JSON、XML、CSV、DOCXファイルのチェック
  • 参照統合: 会社規則、法的文書、その他の参照資料を含める
  • 詳細結果: ステータス、範囲、詳細説明付きの構造化結果を取得
  • カスタムデータスキーマ: 専門的な検証のための追加データスキーマを定義

設定

このツールは設定パラメータを必要としません。

例:ドキュメントコンプライアンスチェック

- id: prepare_compliance_rules
  name: prepare_compliance_rules
  tool: INPUT_JSON
  input:
    - name: value
      value: [
        {
          "id": "financial_disclosure_001",
          "rule": "すべての金額は通貨単位で明確にラベル付けされている必要があります",
          "category": "financial_reporting",
          "severity": "high",
          "description": "金額値に適切な通貨記号または略語が含まれていることを確認"
        },
        {
          "id": "date_format_002", 
          "rule": "すべての日付はISO 8601形式(YYYY-MM-DD)または明確に記載された形式に従う必要があります",
          "category": "data_formatting",
          "severity": "medium",
          "description": "ドキュメント全体で一貫した日付フォーマットを保証"
        },
        {
          "id": "signature_requirement_003",
          "rule": "ドキュメントには承認署名またはデジタル署名検証が含まれている必要があります",
          "category": "authorization",
          "severity": "high",
          "description": "適切な承認署名が存在することを確認"
        },
        {
          "id": "contact_information_004",
          "rule": "連絡先情報には有効なメール形式と電話番号形式が含まれている必要があります",
          "category": "contact_validation",
          "severity": "medium", 
          "description": "連絡先詳細の適切なフォーマットを検証"
        }
      ]

- id: check_financial_report
  name: check_financial_report
  tool: JINBA_MODULES_CHECKER_V2
  input:
    - name: target_file
      value: "path/to/financial_report.pdf"
    - name: task
      value: "財務報告書コンプライアンスレビュー"
    - name: description
      value: "規制要件、データフォーマット標準、承認要件を含む四半期財務報告書の包括的コンプライアンスチェック。"
    - name: rules
      value: "{{steps.prepare_compliance_rules.result}}"
    - name: references
      value: [
        "path/to/company_financial_policies.pdf",
        "path/to/regulatory_guidelines.pdf",
        "path/to/previous_approved_reports.pdf"
      ]
    - name: additional_data_schema
      value: {
        "financial_metrics": {
          "revenue": "number",
          "expenses": "number",
          "net_income": "number",
          "currency": "string"
        },
        "reporting_period": {
          "start_date": "date",
          "end_date": "date",
          "quarter": "string",
          "fiscal_year": "number"
        }
      }

- id: process_check_results
  name: process_check_results
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: script
      value: |
        import json
        from collections import defaultdict
        
        # チェック結果を取得
        check_results = {{steps.check_financial_report.result}}
        
        # ステータスとカテゴリ別に結果を分析
        status_summary = defaultdict(int)
        category_summary = defaultdict(list)
        critical_issues = []
        
        for result in check_results:
            status = result.get("status", "unknown")
            status_summary[status] += 1
            
            # 可能であればルールからカテゴリを抽出
            rule_text = result.get("rule", "")
            category = "general"
            if "financial" in rule_text.lower():
                category = "financial"
            elif "date" in rule_text.lower():
                category = "formatting"
            elif "signature" in rule_text.lower():
                category = "authorization"
            elif "contact" in rule_text.lower():
                category = "contact"
                
            category_summary[category].append({
                "rule_id": result.get("uniqueId"),
                "status": status,
                "reason": result.get("reason"),
                "range": result.get("range", [])
            })
            
            # 重要な問題を追跡(却下された項目)
            if status == "rejected":
                critical_issues.append({
                    "rule_id": result.get("uniqueId"),
                    "rule": result.get("rule"),
                    "reason": result.get("reason"),
                    "location": result.get("range", []),
                    "additional_data": result.get("additionalData", {})
                })
        
        # 包括的レポートの生成
        report = {
            "validation_summary": {
                "total_rules_checked": len(check_results),
                "accepted": status_summary.get("accepted", 0),
                "rejected": status_summary.get("rejected", 0),
                "pending": status_summary.get("pending", 0),
                "compliance_score": round((status_summary.get("accepted", 0) / len(check_results)) * 100, 2) if check_results else 0
            },
            "category_breakdown": dict(category_summary),
            "critical_issues": critical_issues,
            "recommendations": [],
            "detailed_results": check_results
        }
        
        # 重要な問題に基づく推奨事項の生成
        if critical_issues:
            report["recommendations"].extend([
                "却下されたすべての検証ルールを確認し対処する",
                "重要なコンプライアンス項目のドキュメントレビュープロセスを実装する",
                "繰り返し発生する問題を防ぐためのテンプレート更新を検討する"
            ])
        else:
            report["recommendations"].append("ドキュメントはすべての検証チェックに合格しました")
        
        print(json.dumps(report, indent=2, ensure_ascii=False))

例:マルチドキュメント品質保証

- id: setup_qa_workflow
  name: setup_qa_workflow
  tool: INPUT_JSON_WITH_VALIDATION
  input:
    - name: value
      value: {
        "documents": [
          {
            "file": "path/to/contract_draft.docx",
            "type": "legal_contract",
            "priority": "high"
          },
          {
            "file": "path/to/technical_spec.pdf", 
            "type": "technical_documentation",
            "priority": "medium"
          },
          {
            "file": "path/to/user_manual.pdf",
            "type": "user_documentation", 
            "priority": "low"
          }
        ],
        "universal_rules": [
          {
            "id": "spelling_grammar_001",
            "rule": "ドキュメントにスペルミスや文法エラーがないこと",
            "category": "quality_assurance",
            "severity": "medium"
          },
          {
            "id": "formatting_consistency_002",
            "rule": "ヘッダー、フォント、フォーマットが全体で一貫していること",
            "category": "formatting",
            "severity": "low"
          }
        ],
        "legal_specific_rules": [
          {
            "id": "legal_terminology_001", 
            "rule": "法的用語は正確で適切に定義されていること",
            "category": "legal_compliance",
            "severity": "high"
          },
          {
            "id": "clause_numbering_002",
            "rule": "契約条項が適切に番号付けされ参照されていること",
            "category": "legal_structure",
            "severity": "high"
          }
        ]
      }

- id: generate_qa_dashboard
  name: generate_qa_dashboard  
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: script
      value: |
        import json
        from datetime import datetime
        
        def analyze_document_results(results, doc_type, priority):
            total_checks = len(results)
            passed = len([r for r in results if r.get("status") == "accepted"])
            failed = len([r for r in results if r.get("status") == "rejected"]) 
            pending = len([r for r in results if r.get("status") == "pending"])
            
            return {
                "document_type": doc_type,
                "priority": priority,
                "total_checks": total_checks,
                "passed": passed,
                "failed": failed,
                "pending": pending,
                "success_rate": round((passed / total_checks * 100), 2) if total_checks > 0 else 0,
                "critical_issues": [r for r in results if r.get("status") == "rejected"]
            }
        
        # QAダッシュボードの作成
        dashboard = {
            "qa_report_generated": datetime.now().isoformat(),
            "overall_summary": {
                "documents_reviewed": 2,
                "quality_recommendations": [
                    "高優先度ドキュメント問題の解決を優先する",
                    "一般的なフォーマット問題の自動事前チェックを実装する",
                    "特定されたベストプラクティスを組み込んだドキュメントテンプレートを作成する",
                    "重要なドキュメントの定期的QAレビューをスケジュールする"
                ]
            }
        }
        
        print(json.dumps(dashboard, indent=2, ensure_ascii=False))

例:データ品質検証パイプライン

- id: prepare_data_validation_rules
  name: prepare_data_validation_rules
  tool: INPUT_JSON
  input:
    - name: value
      value: [
        {
          "id": "data_completeness_001",
          "rule": "すべての必須フィールドには空でない値が含まれている必要があります",
          "category": "completeness",
          "severity": "high",
          "description": "欠落または空の必須データフィールドをチェック"
        },
        {
          "id": "data_format_002",
          "rule": "メールアドレスは有効なメールフォーマットパターンに従う必要があります",
          "category": "format_validation",
          "severity": "high", 
          "description": "標準的なメール正規表現パターンを使用してメール形式を検証"
        },
        {
          "id": "date_range_003",
          "rule": "日付は合理的な範囲内である必要があります(不適切な場合は未来日付ではない)",
          "category": "logical_validation",
          "severity": "medium",
          "description": "論理的一貫性と適切な範囲について日付フィールドをチェック"
        }
      ]

- id: generate_data_quality_report
  name: generate_data_quality_report
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: script
      value: |
        import json
        from collections import Counter, defaultdict
        
        # 包括的データ品質レポートの生成
        report = {
            "data_quality_summary": {
                "overall_quality_score": 85.5,
                "quality_grade": "B",
                "data_readiness": "READY"
            },
            "recommendations": [
                "データ品質スコア:85.5% - 良好",
                "重要なデータ品質問題に対処してから進める",
                "将来の品質問題を防ぐためにソースでのデータ検証を実装する",
                "一般的なフォーマット問題の自動データクリーニングを検討する"
            ]
        }
        
        print(json.dumps(report, indent=2, ensure_ascii=False))

ヒントとベストプラクティス

  • ルール定義: 明確に定義された成功基準を持つ、明確で具体的なルールを作成
  • 参照資料: 検証精度を向上させるために関連する参照文書を含める
  • 構造化結果: 実用的なインサイトとレポートのために常に結果を処理
  • 段階的検証: 基本ルールから始めて徐々に複雑さを追加
  • カテゴリ編成: より良い結果分析のためにルールをカテゴリごとにグループ化
  • カスタムスキーマ: 専門的な検証ニーズのために追加のデータスキーマを定義
  • エラーハンドリング: 検証失敗とエッジケースの適切な処理を実装
  • パフォーマンス最適化: 検証ワークフロー設定時にファイルサイズと複雑さを考慮
  • ドキュメント化: 検証ルールとその目的の明確なドキュメント化を維持
  • 継続的改善: 結果に基づいて検証ルールを定期的に確認・更新