概要
Jinbaモジュールチェッカー V2は、JSON形式で定義されたカスタムルールに対してファイルやデータをチェックする高度な検証ツールです。このツールは、包括的なドキュメント検証、コンプライアンスチェック、および元のチェッカーよりも強化された機能によるデータ品質保証のために設計されています。主要機能
- ルールベース検証: JSON形式でカスタム検証ルールを定義
- マルチフォーマットサポート: PDF、テキスト、JSON、XML、CSV、DOCXファイルのチェック
- 参照統合: 会社規則、法的文書、その他の参照資料を含める
- 詳細結果: ステータス、範囲、詳細説明付きの構造化結果を取得
- カスタムデータスキーマ: 専門的な検証のための追加データスキーマを定義
設定
このツールは設定パラメータを必要としません。例:ドキュメントコンプライアンスチェック
Copy
- 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))
例:マルチドキュメント品質保証
Copy
- 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))
例:データ品質検証パイプライン
Copy
- 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))
ヒントとベストプラクティス
- ルール定義: 明確に定義された成功基準を持つ、明確で具体的なルールを作成
- 参照資料: 検証精度を向上させるために関連する参照文書を含める
- 構造化結果: 実用的なインサイトとレポートのために常に結果を処理
- 段階的検証: 基本ルールから始めて徐々に複雑さを追加
- カテゴリ編成: より良い結果分析のためにルールをカテゴリごとにグループ化
- カスタムスキーマ: 専門的な検証ニーズのために追加のデータスキーマを定義
- エラーハンドリング: 検証失敗とエッジケースの適切な処理を実装
- パフォーマンス最適化: 検証ワークフロー設定時にファイルサイズと複雑さを考慮
- ドキュメント化: 検証ルールとその目的の明確なドキュメント化を維持
- 継続的改善: 結果に基づいて検証ルールを定期的に確認・更新