fix(admin): 技能/agent 默认发布状态按角色判定 + 迁移幂等化 - evolution_service.publish_to_market (AI自进化发布到市场) 增加角色判定: 管理员=官方+已发布+免费, 用户=用户+待审核+客户定价 - run.sh 迁移改为幂等: 新增 schema_migrations 跟踪表, 已执行的迁移不再重复运行, 修复每次容器重启重复插入演示数据(002_init_data.sql)的问题 - run.sh 修正 CRLF 行尾导致容器无法启动(exec permission denied)

This commit is contained in:
qyyfw committed 2026-07-10 16:43:14 +08:00
1 parent 27ba91ae5e
commit 176cb35b54
2 files changed
+1365 -1337

No files matched your search

File diff suppressed because it is too large. Load diff
+16 -3
View File
@@ -167,11 +167,19 @@ echo " 使用数据库: $MYSQL_DATABASE"
MIGRATION_DIR="$PROJECT_DIR/migrations" MIGRATION_DIR="$PROJECT_DIR/migrations"
if [ -d "$MIGRATION_DIR" ]; then if [ -d "$MIGRATION_DIR" ]; then
# 幂等迁移:用 schema_migrations 记录已执行版本,避免每次启动重复执行(如重复插入演示数据)
mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" $MYSQL_SSL_FLAG "$MYSQL_DATABASE" -e "CREATE TABLE IF NOT EXISTS schema_migrations (version VARCHAR(255) NOT NULL PRIMARY KEY, applied_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" 2>/dev/null
for sql_file in $(ls "$MIGRATION_DIR"/*.sql 2>/dev/null | sort); do for sql_file in $(ls "$MIGRATION_DIR"/*.sql 2>/dev/null | sort); do
filename=$(basename "$sql_file") filename=$(basename "$sql_file")
echo " - 执行: $filename" version="${filename%.sql}"
mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" $MYSQL_SSL_FLAG \ already=$(mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" $MYSQL_SSL_FLAG "$MYSQL_DATABASE" -sN -e "SELECT 1 FROM schema_migrations WHERE version='$version' LIMIT 1;" 2>/dev/null)
"$MYSQL_DATABASE" < "$sql_file" 2>&1 | sed 's/^/ /' || echo " [警告] $filename 部分语句已跳过(可能已存在)" if [ "$already" = "1" ]; then
echo " - 跳过(已执行): $filename"
else
echo " - 执行: $filename"
mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" $MYSQL_SSL_FLAG "$MYSQL_DATABASE" < "$sql_file" 2>&1 | sed 's/^/ /' || echo " [警告] $filename 部分语句已跳过(可能已存在)"
mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" $MYSQL_SSL_FLAG "$MYSQL_DATABASE" -e "INSERT IGNORE INTO schema_migrations (version) VALUES ('$version');" 2>/dev/null
fi
done done
echo " 数据库初始化完成" echo " 数据库初始化完成"
@@ -291,6 +299,11 @@ fi
# 如果 nginx 可用,则启动(Docker 环境) # 如果 nginx 可用,则启动(Docker 环境)
if command -v nginx &>/dev/null; then if command -v nginx &>/dev/null; then
# 自愈:确保媒体生成(视频/图像)等长请求不被 60s 代理超时中断
if [ -f /etc/nginx/conf.d/aiflow.conf ]; then
sed -i -E 's/proxy_read_timeout[[:space:]]+[0-9]+s;/proxy_read_timeout 600s;/; s/proxy_send_timeout[[:space:]]+[0-9]+s;/proxy_send_timeout 600s;/' /etc/nginx/conf.d/aiflow.conf 2>/dev/null || true
fi
echo "" echo ""
echo " Nginx 配置测试..." echo " Nginx 配置测试..."
if nginx -t 2>&1; then if nginx -t 2>&1; then