119 lines
2.9 KiB
Bash
Executable File
119 lines
2.9 KiB
Bash
Executable File
#!/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 文档治理检查通过"
|