Files
ai_trading_api/create/README.md
2025-12-26 17:31:32 +08:00

258 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
这是最新的文件夹结构:
``` tree
.
├── LICENSE
├── README.md
├── create
│ ├── README.md
│ ├── create.sh
│ ├── create_src.py
│ ├── create_src_dockerfile.py
│ ├── create_src_mod.py
│ └── create_table.py
├── docker-compose.yaml
├── infra
│ └── postgres
│ ├── scripts
│ │ └── db-lanuch-entrypoint.sh
│ └── sql
│ ├── 01_uuid_v7_setup.sql
│ ├── 02_create_function.sql
│ └── 03_create_table.sql
└── services
```
以下是当前 shell 脚本内容。
``` shell
#!/bin/bash
# create.sh - 启动Python容器执行create_table.py、create_src.py和create_src_dockerfile.py脚本
set -e # 遇到错误立即退出
# 定义表名变量,可以根据需要修改
TABLE_NAME="cn_pmi_records"
echo "🚀 开始创建流程,表名: ${TABLE_NAME}"
echo "=========================================="
# ========== 第一部分:创建数据库表 ==========
echo "📋 第一步:创建数据库表结构..."
echo "🚀 启动Python容器执行create_table.py..."
# 获取脚本所在目录的绝对路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# 容器名称
CONTAINER_NAME="python-create-runner"
# 检查是否已存在同名容器,如果存在则删除
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "🧹 清理已存在的容器 ${CONTAINER_NAME}..."
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1
fi
# 运行Python容器执行create_table.py
echo "📦 启动Python容器执行create_table.py..."
docker run --rm \
--name "${CONTAINER_NAME}" \
-v "${SCRIPT_DIR}:/app/create" \
-v "${PROJECT_ROOT}/infra/postgres/sql:/app/infra/postgres/sql" \
-e TABLE_NAME="${TABLE_NAME}" \
-w /app \
python:3.13.7-alpine3.22 \
sh -c "
echo '📋 容器内环境信息:'
python --version
echo ''
echo '🔧 安装依赖(如果需要)...'
pip install --quiet --no-cache-dir psycopg2-binary >/dev/null 2>&1 || true
echo '⚙️ 执行 create_table.py...'
python create/create_table.py
echo ''
echo '✅ create_table.py 执行完成!'
"
# ========== 第二部分:创建服务结构 ==========
echo ""
echo "📋 第二步:创建服务文件夹结构..."
echo "🚀 执行create_src.py..."
# 运行Python容器执行create_src.py
docker run --rm \
--name "${CONTAINER_NAME}-src" \
-v "${SCRIPT_DIR}:/app/create" \
-v "${PROJECT_ROOT}/services:/app/services" \
-e TABLE_NAME="${TABLE_NAME}" \
-w /app \
python:3.13.7-alpine3.22 \
sh -c "
echo '📋 容器内环境信息:'
python --version
echo ''
echo '⚙️ 执行 create_src.py...'
python create/create_src.py
echo ''
echo '✅ create_src.py 执行完成!'
"
# ========== 第三部分更新Dockerfile ==========
echo ""
echo "📋 第三步更新Dockerfile内容..."
echo "🚀 执行create_src_dockerfile.py..."
# 运行Python容器执行create_src_dockerfile.py
docker run --rm \
--name "${CONTAINER_NAME}-dockerfile" \
-v "${SCRIPT_DIR}:/app/create" \
-v "${PROJECT_ROOT}/services:/app/services" \
-e TABLE_NAME="${TABLE_NAME}" \
-w /app \
python:3.13.7-alpine3.22 \
sh -c "
echo '📋 容器内环境信息:'
python --version
echo ''
echo '⚙️ 执行 create_src_dockerfile.py...'
python create/create_src_dockerfile.py
echo ''
echo '✅ create_src_dockerfile.py 执行完成!'
"
echo ""
echo "=========================================="
echo "🎉 所有任务执行完成!"
echo "📋 表名: ${TABLE_NAME}"
echo "📁 服务目录: ${PROJECT_ROOT}/services/${TABLE_NAME}"
echo "🐳 Dockerfile: ${PROJECT_ROOT}/services/${TABLE_NAME}/src/Dockerfile"
```
以下是当前 create_src.py 内容:
```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
create_src.py - 在services目录下创建服务文件夹和文件结构
"""
import os
import sys
def create_service_structure(table_name):
"""创建服务文件夹结构"""
# 获取项目根目录
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
services_dir = os.path.join(project_root, 'services')
# 创建服务目录
service_dir = os.path.join(services_dir, table_name)
print(f"🚀 开始创建服务结构: {table_name}")
print(f"📁 目标目录: {service_dir}")
try:
# 创建主目录
os.makedirs(service_dir, exist_ok=True)
print(f"✅ 创建主目录: {service_dir}")
# 创建子目录
subdirs = ['src', 'src/crud', 'src/infra', 'src/model']
for subdir in subdirs:
dir_path = os.path.join(service_dir, subdir)
os.makedirs(dir_path, exist_ok=True)
print(f"✅ 创建子目录: {dir_path}")
# 定义要创建的文件列表
files_to_create = [
'dev.sh',
'README.md',
'src/Dockerfile',
'src/go.mod',
'src/go.sum',
'src/main.go',
'src/crud/create.go',
'src/crud/read.go',
'src/crud/update.go',
'src/crud/delete.go',
'src/infra/launch.go',
'src/infra/logger.go',
'src/infra/postgres.go',
'src/model/payload.go'
]
# 创建所有文件
for file_path in files_to_create:
full_path = os.path.join(service_dir, file_path)
os.makedirs(os.path.dirname(full_path), exist_ok=True) # 确保目录存在
# 创建空文件
with open(full_path, 'w', encoding='utf-8') as f:
f.write('') # 创建空文件
print(f"✅ 创建文件: {full_path}")
print(f"🎉 服务结构创建完成: {table_name}")
return True
except Exception as e:
print(f"❌ 创建服务结构时出错: {e}")
return False
if __name__ == "__main__":
# 从环境变量获取表名
table_name = os.environ.get('TABLE_NAME')
if not table_name:
print("❌ 错误: 未设置 TABLE_NAME 环境变量")
sys.exit(1)
print(f"📋 接收到的表名: {table_name}")
success = create_service_structure(table_name)
if success:
sys.exit(0)
else:
sys.exit(1)
```
你的任务是完成 create_src_mod.py 编写,需求如下:
1、读取 create_src.py 中创建的 go.mod 文件。
2、清空文件内容后把以下 xxxxx 替换为 shell 中 TABLE_NAME 变量后写入 go.mod 中。
```go
module xxxxx
go 1.25.0
require (
)
require (
)
```
5、最后调整以下 shell 脚本逻辑,执行 create_src_dockerfile.py 成功后,立马执行 create_src_mod.py 文件。