#!/usr/bin/env bash set -euo pipefail required_readmes=( "docs/design/00_Management/README.md" "docs/design/01_Overview/README.md" "docs/design/02_Detailed_Design/README.md" "docs/design/03_Technical_Design/README.md" "docs/design/04_Appendix/README.md" "docs/README.md" "scripts/README.md" ) required_main_docs=( "docs/design/01_Overview/03_Summary_Design.md" "docs/design/02_Detailed_Design/01_Detailed_Design.md" "docs/design/03_Technical_Design/01_Database_Design.md" "docs/design/03_Technical_Design/03_Interface_Design.md" "docs/design/03_Technical_Design/04_Security_Design.md" "docs/design/03_Technical_Design/05_Deployment_Design.md" ) required_frontmatter_fields=( "doc_id" "doc_role" "authority" "scope" "source_of_truth" "last_reviewed" "retrieval_priority" ) required_ai_assets=( "docs/design/00_Management/10_AI_Retrieval_Whitelist.md" "docs/design/00_Management/11_Main_Doc_Chapter_Index.md" "docs/design/00_Management/12_AI_Weekly_Audit_Template.md" "docs/design/00_Management/14_AI_Audit_Diff_Latest.md" "docs/design/04_Appendix/Archive/00_Archive_Tag_Index.md" ) required_ai_scripts=( "scripts/check-ai-doc-governance.sh" "scripts/generate-archive-tag-index.sh" "scripts/ai-weekly-audit-diff.sh" ) failure_count=0 echo "开始 AI 文档治理检查..." echo "检查一级目录 README..." for file in "${required_readmes[@]}"; do if [[ -f "$file" ]]; then echo "✅ $file" else echo "❌ 缺少: $file" failure_count=$((failure_count + 1)) fi done echo "检查 AI 治理资产..." for file in "${required_ai_assets[@]}"; do if [[ -f "$file" ]]; then echo "✅ $file" else echo "❌ 缺少: $file" failure_count=$((failure_count + 1)) fi done echo "检查 AI 治理脚本..." for file in "${required_ai_scripts[@]}"; do if [[ -f "$file" ]]; then echo "✅ $file" else echo "❌ 缺少: $file" failure_count=$((failure_count + 1)) fi done echo "检查主文档 Front Matter..." for file in "${required_main_docs[@]}"; do if [[ ! -f "$file" ]]; then echo "❌ 缺少主文档: $file" failure_count=$((failure_count + 1)) continue fi if [[ "$(sed -n '1p' "$file")" != "---" ]]; then echo "❌ $file 缺少 Front Matter 起始分隔符" failure_count=$((failure_count + 1)) continue fi header_block="$(sed -n '1,40p' "$file")" file_failed=0 for field in "${required_frontmatter_fields[@]}"; do if ! grep -q "^${field}:" <<<"$header_block"; then if [[ "$file_failed" -eq 0 ]]; then echo "❌ $file Front Matter 字段不完整" fi echo " - 缺失字段: ${field}" file_failed=1 failure_count=$((failure_count + 1)) fi done if [[ "$file_failed" -eq 0 ]]; then echo "✅ $file" fi done if [[ "$failure_count" -gt 0 ]]; then echo "AI 文档治理检查未通过,问题数: $failure_count" exit 1 fi echo "AI 文档治理检查通过"