#!/bin/bash
# 检查 Service 层是否使用 fmt.Errorf 对外返回

echo "🔍 检查 Service 层错误处理规范..."

FILES=$(find internal/service -name "*.go" -type f 2>/dev/null)
if [ -z "$FILES" ]; then
    echo "⚠️  未找到 Service 层文件"
    exit 0
fi

VIOLATIONS=$(grep -n "fmt\.Errorf" $FILES | grep -v "// whitelist:")

if [ -n "$VIOLATIONS" ]; then
    echo ""
    echo "❌ 发现 Service 层使用 fmt.Errorf："
    echo "$VIOLATIONS"
    echo ""
    echo "请使用以下方式替代："
    echo "  - 业务错误：errors.New(code, msg)"
    echo "  - 系统错误：errors.Wrap(code, err, msg)"
    echo ""
    echo "如果某处确实需要使用 fmt.Errorf（如内部调试），请添加注释：// whitelist:"
    exit 1
fi

echo "✅ Service 层错误处理检查通过"
