diff --git a/README.ja.md b/README.ja.md index de215593..db4e81a0 100644 --- a/README.ja.md +++ b/README.ja.md @@ -293,8 +293,8 @@ nano config.json # または任意のエディタを使用 ```bash # オプション1:便利スクリプトを使用(推奨) -chmod +x start.sh -./start.sh start --build +chmod +x scripts/start.sh +./scripts/start.sh start --build > #### Docker Composeバージョンに関する注意 > @@ -315,10 +315,10 @@ docker compose up -d --build #### システム管理 ```bash -./start.sh logs # ログを表示 -./start.sh status # ステータスを確認 -./start.sh stop # サービスを停止 -./start.sh restart # サービスを再起動 +./scripts/start.sh logs # ログを表示 +./scripts/start.sh status # ステータスを確認 +./scripts/start.sh stop # サービスを停止 +./scripts/start.sh restart # サービスを再起動 ``` **📖 詳細なDockerデプロイガイド、トラブルシューティング、高度な設定について:** diff --git a/README.md b/README.md index 4a82bfed..e694e81f 100644 --- a/README.md +++ b/README.md @@ -292,8 +292,8 @@ nano config.json # or use any editor #### Step 2: One-Click Start ```bash # Option 1: Use convenience script (Recommended) -chmod +x start.sh -./start.sh start --build +chmod +x scripts/start.sh +./scripts/start.sh start --build > #### Docker Compose Version Notes > @@ -318,10 +318,10 @@ Open your browser and visit: **http://localhost:3000** #### Manage Your System ```bash -./start.sh logs # View logs -./start.sh status # Check status -./start.sh stop # Stop services -./start.sh restart # Restart services +./scripts/start.sh logs # View logs +./scripts/start.sh status # Check status +./scripts/start.sh stop # Stop services +./scripts/start.sh restart # Restart services ``` **📖 For detailed Docker deployment guide, troubleshooting, and advanced configuration:** diff --git a/docs/i18n/ru/README.md b/docs/i18n/ru/README.md index 816e0823..04d3279e 100644 --- a/docs/i18n/ru/README.md +++ b/docs/i18n/ru/README.md @@ -294,8 +294,8 @@ nano config.json # или используйте любой редактор #### Шаг 2: Запуск в один клик ```bash # Вариант 1: Используйте удобный скрипт (Рекомендуется) -chmod +x start.sh -./start.sh start --build +chmod +x scripts/start.sh +./scripts/start.sh start --build # Вариант 2: Используйте docker compose напрямую # Этот проект использует синтаксис Docker Compose V2 (с пробелами) @@ -310,10 +310,10 @@ docker compose up -d --build #### Управление вашей системой ```bash -./start.sh logs # Просмотреть логи -./start.sh status # Проверить статус -./start.sh stop # Остановить сервисы -./start.sh restart # Перезапустить сервисы +./scripts/start.sh logs # Просмотреть логи +./scripts/start.sh status # Проверить статус +./scripts/start.sh stop # Остановить сервисы +./scripts/start.sh restart # Перезапустить сервисы ``` **📖 Подробное руководство по развертыванию Docker, устранению неполадок и расширенной конфигурации:** diff --git a/docs/i18n/uk/README.md b/docs/i18n/uk/README.md index 300ca470..28181b57 100644 --- a/docs/i18n/uk/README.md +++ b/docs/i18n/uk/README.md @@ -297,8 +297,8 @@ nano config.json # або використайте будь-який редак #### Крок 2: Запуск в один клік ```bash # Варіант 1: Використайте зручний скрипт (Рекомендується) -chmod +x start.sh -./start.sh start --build +chmod +x scripts/start.sh +./scripts/start.sh start --build # Варіант 2: Використайте docker compose безпосередньо # Цей проект використовує синтаксис Docker Compose V2 (з пробілами) @@ -313,10 +313,10 @@ docker compose up -d --build #### Керування вашою системою ```bash -./start.sh logs # Переглянути логи -./start.sh status # Перевірити статус -./start.sh stop # Зупинити сервіси -./start.sh restart # Перезапустити сервіси +./scripts/start.sh logs # Переглянути логи +./scripts/start.sh status # Перевірити статус +./scripts/start.sh stop # Зупинити сервіси +./scripts/start.sh restart # Перезапустити сервіси ``` **📖 Детальний посібник з розгортання Docker, усунення несправностей та розширеної конфігурації:** diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index d61236fe..74c7e87d 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -294,8 +294,8 @@ nano config.json # 或使用其他编辑器 #### 步骤2:一键启动 ```bash # 方式1:使用便捷脚本(推荐) -chmod +x start.sh -./start.sh start --build +chmod +x scripts/start.sh +./scripts/start.sh start --build # 方式2:直接使用docker compose @@ -310,10 +310,10 @@ docker compose up -d --build #### 管理你的系统 ```bash -./start.sh logs # 查看日志 -./start.sh status # 检查状态 -./start.sh stop # 停止服务 -./start.sh restart # 重启服务 +./scripts/start.sh logs # 查看日志 +./scripts/start.sh status # 检查状态 +./scripts/start.sh stop # 停止服务 +./scripts/start.sh restart # 重启服务 ``` **📖 详细的Docker部署教程、故障排查和高级配置:** diff --git a/generate_beta_code.sh b/scripts/generate_beta_code.sh similarity index 96% rename from generate_beta_code.sh rename to scripts/generate_beta_code.sh index cee2ca3a..228d256f 100755 --- a/generate_beta_code.sh +++ b/scripts/generate_beta_code.sh @@ -1,5 +1,12 @@ #!/bin/bash +# Fail fast and normalize working directory +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$ROOT_DIR" + # 内测码生成脚本 # 生成6位不重复的内测码并写入 beta_codes.txt @@ -218,4 +225,4 @@ if [ ! -s "$BETA_CODES_FILE" ] || [ $(wc -l < "$BETA_CODES_FILE") -eq ${#new_cod echo "- 长度: $CODE_LENGTH 位" echo "- 字符集: 数字 2-9, 小写字母 a-z (排除 0,1,i,l,o 避免混淆)" echo "- 每个内测码唯一且不重复" -fi \ No newline at end of file +fi diff --git a/import_beta_codes.sh b/scripts/import_beta_codes.sh similarity index 89% rename from import_beta_codes.sh rename to scripts/import_beta_codes.sh index 32cb6492..67826f9c 100755 --- a/import_beta_codes.sh +++ b/scripts/import_beta_codes.sh @@ -1,5 +1,11 @@ #!/bin/bash +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$ROOT_DIR" + # 将beta_codes.txt刷到PostgreSQL数据库 echo "🎟️ 导入beta_codes.txt到数据库" diff --git a/start.sh b/scripts/start.sh similarity index 89% rename from start.sh rename to scripts/start.sh index 3c571067..3bd82dfc 100755 --- a/start.sh +++ b/scripts/start.sh @@ -2,11 +2,16 @@ # ═══════════════════════════════════════════════════════════════ # NOFX AI Trading System - Docker Quick Start Script -# Usage: ./start.sh [command] +# Usage: ./scripts/start.sh [command] # ═══════════════════════════════════════════════════════════════ set -e +# Ensure we operate from repo root regardless of invocation location +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$ROOT_DIR" + # ------------------------------------------------------------------------ # Color Definitions # ------------------------------------------------------------------------ @@ -84,7 +89,7 @@ check_config() { print_warning "config.json 不存在,从模板复制..." cp config.json.example config.json print_info "✓ 已使用默认配置创建 config.json" - print_info "💡 如需修改基础设置(杠杆大小、开仓币种、管理员模式、JWT密钥等),可编辑 config.json" + print_info "💡 如需修改基础设置(杠杆大小、开仓币种、JWT密钥等),可编辑 config.json" print_info "💡 模型/交易所/交易员配置请使用Web界面" fi print_success "配置文件存在" @@ -113,20 +118,6 @@ read_env_vars() { fi } -# ------------------------------------------------------------------------ -# Validation: Database File (config.db) -# ------------------------------------------------------------------------ -check_database() { - if [ ! -f "config.db" ]; then - print_warning "数据库文件不存在,创建空数据库文件..." - # 创建空文件以避免Docker创建目录 - touch config.db - print_info "✓ 已创建空数据库文件,系统将在启动时初始化" - else - print_success "数据库文件存在" - fi -} - # ------------------------------------------------------------------------ # Build: Frontend (Node.js Based) # ------------------------------------------------------------------------ @@ -165,11 +156,7 @@ start() { # 读取环境变量 read_env_vars - # 确保必要的文件和目录存在(修复 Docker volume 挂载问题) - if [ ! -f "config.db" ]; then - print_info "创建数据库文件..." - touch config.db - fi + # 确保必要的目录存在 if [ ! -d "decision_logs" ]; then print_info "创建日志目录..." mkdir -p decision_logs @@ -193,8 +180,8 @@ start() { print_info "Web 界面: http://localhost:${NOFX_FRONTEND_PORT}" print_info "API 端点: http://localhost:${NOFX_BACKEND_PORT}" print_info "" - print_info "查看日志: ./start.sh logs" - print_info "停止服务: ./start.sh stop" + print_info "查看日志: ./scripts/start.sh logs" + print_info "停止服务: ./scripts/start.sh stop" } # ------------------------------------------------------------------------ @@ -271,7 +258,7 @@ update() { show_help() { echo "NOFX AI Trading System - Docker 管理脚本" echo "" - echo "用法: ./start.sh [command] [options]" + echo "用法: ./scripts/start.sh [command] [options]" echo "" echo "命令:" echo " start [--build] 启动服务(可选:重新构建)" @@ -284,9 +271,9 @@ show_help() { echo " help 显示此帮助信息" echo "" echo "示例:" - echo " ./start.sh start --build # 构建并启动" - echo " ./start.sh logs backend # 查看后端日志" - echo " ./start.sh status # 查看状态" + echo " ./scripts/start.sh start --build # 构建并启动" + echo " ./scripts/start.sh logs backend # 查看后端日志" + echo " ./scripts/start.sh status # 查看状态" } # ------------------------------------------------------------------------ @@ -299,7 +286,6 @@ main() { start) check_env check_config - check_database start "$2" ;; stop) @@ -332,4 +318,4 @@ main() { } # Execute Main -main "$@" \ No newline at end of file +main "$@" diff --git a/view_pg_data.sh b/scripts/view_pg_data.sh similarity index 89% rename from view_pg_data.sh rename to scripts/view_pg_data.sh index 59a7aef5..feeee402 100755 --- a/view_pg_data.sh +++ b/scripts/view_pg_data.sh @@ -1,5 +1,12 @@ #!/bin/bash +set -e + +# 保证从仓库根目录运行 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$ROOT_DIR" + # PostgreSQL数据查看工具 echo "🔍 PostgreSQL 数据查看工具" echo "==========================" @@ -45,7 +52,7 @@ SELECT key, ELSE value END as value FROM system_config -WHERE key IN ('admin_mode', 'beta_mode', 'api_server_port', 'default_coins', 'jwt_secret') +WHERE key IN ('beta_mode', 'api_server_port', 'default_coins', 'jwt_secret') ORDER BY key; " @@ -62,4 +69,4 @@ ORDER BY used; echo -e "\n👥 用户信息:" $DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c " SELECT id, email, otp_verified, created_at FROM users ORDER BY created_at; -" \ No newline at end of file +"