Initial commit: InternalAuditInterprise

This commit is contained in:
freedakgmail
2026-06-16 00:38:57 +08:00
commit 7b1e2b10a8
57 changed files with 4622 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# 本地 PostgreSQL 16 初始化脚本(弃用 Docker,使用本机 Homebrew PG16
# 创建 aiaudit 角色与数据库,并安装所需扩展(TimescaleDB / pgvector / btree_gist)。
#
# 前置:已通过 Homebrew 安装并启动 postgresql@16、timescaledb、pgvector。
# 用法:bash infra/postgres/setup_local.sh
set -euo pipefail
DB_NAME="${DB_NAME:-aiaudit}"
DB_USER="${DB_USER:-aiaudit}"
DB_PASSWORD="${DB_PASSWORD:-aiaudit_dev}"
# 定位本地 PG16 的 psqlHomebrew
PG_BIN="$(brew --prefix postgresql@16)/bin"
export PATH="$PG_BIN:$PATH"
echo "==> 使用 psql: $(which psql)"
# 以当前系统用户连接默认库(Homebrew PG 默认信任本地超级用户)
psql postgres <<SQL
DO \$\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${DB_USER}') THEN
CREATE ROLE ${DB_USER} LOGIN PASSWORD '${DB_PASSWORD}';
END IF;
END
\$\$;
SELECT 'CREATE DATABASE ${DB_NAME} OWNER ${DB_USER}'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${DB_NAME}')\gexec
SQL
echo "==> 安装扩展到数据库 ${DB_NAME}"
# pgvector 与 btree_gist 为必需;TimescaleDB 为可选(macOS 本地常因编译问题装不上,
# 生产 Linux 环境再启用)。缺失 timescaledb 不影响功能,仅少了超表分区/压缩优化。
psql -d "${DB_NAME}" <<'SQL'
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS btree_gist;
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_available_extensions WHERE name = 'timescaledb') THEN
CREATE EXTENSION IF NOT EXISTS timescaledb;
RAISE NOTICE 'TimescaleDB 已启用';
ELSE
RAISE NOTICE 'TimescaleDB 不可用,跳过(本地开发可忽略)';
END IF;
END$$;
SQL
echo "==> 完成。扩展清单:"
psql -d "${DB_NAME}" -c "SELECT extname, extversion FROM pg_extension ORDER BY extname;"