项目名称/
├── README.md # 项目说明文档
├── LICENSE # 开源协议
├── requirements.txt # 依赖管理(pip)
├── pyproject.toml # 现代Python项目配置(推荐)
├── setup.py # 包安装脚本(如果做成库)
├── .gitignore # Git忽略文件
├── .env # 环境变量(不提交到Git)
├── .env.example # 环境变量示例
├── CLAUDE.md # claude持久上下文
├── AGENTS.md # codex持久上下文
├── Sublime-Text.txt # 放需求和注意事项,给自己看的,和cli的会话恢复指令^_^
│
├── docs/ # 文档目录
│ ├── api.md # API文档
│ ├── development.md # 开发指南
│ └── architecture.md # 架构说明
│
├── scripts/ # 脚本工具
│ ├── deploy.sh # 部署脚本
│ ├── backup.sh # 备份脚本
│ └── init_db.sh # 数据库初始化
│
├── tests/ # 测试代码
│ ├── __init__.py
│ ├── conftest.py # pytest配置
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── test_config.py # 配置测试
│
├── src/ # 源代码(推荐方式)
│ ├── __init__.py
│ ├── main.py # 程序入口
│ ├── app.py # Flask/FastAPI应用
│ ├── config.py # 配置管理
│ │
│ ├── core/ # 核心业务逻辑
│ │ ├── __init__.py
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务服务
│ │ └── utils/ # 工具函数
│ │
│ ├── api/ # API接口层
│ │ ├── __init__.py
│ │ ├── v1/ # 版本1
│ │ └── dependencies.py
│ │
│ ├── data/ # 数据处理
│ │ ├── __init__.py
│ │ ├── repository/ # 数据访问层
│ │ └── migrations/ # 数据库迁移
│ │
│ └── external/ # 外部服务
│ ├── __init__.py
│ ├── clients/ # API客户端
│ └── integrations/ # 集成服务
│
├── logs/ # 日志目录(不提交到Git)
│ ├── app.log
│ └── error.log
│
└── data/ # 数据目录(不提交到Git)
├── raw/ # 原始数据
├── processed/ # 处理后的数据
└── cache/ # 缓存
使用场景:Flask/FastAPI Web应用、RESTful API服务、Web后端
项目名称/
├── README.md
├── LICENSE
├── requirements.txt
├── .gitignore
├── .env
├── .env.example
├── CLAUDE.md # claude持久上下文
├── AGENTS.md # codex持久上下文
├── Sublime-Text.txt # 放需求和注意事项,给自己看的,和cli的会话恢复指令^_^
│
├── docs/ # 文档目录
│ ├── notebooks/ # Jupyter文档
│ └── reports/ # 分析报告
│
├── notebooks/ # Jupyter Notebook
│ ├── 01_data_exploration.ipynb
│ ├── 02_feature_engineering.ipynb
│ └── 03_model_training.ipynb
│
├── scripts/ # 脚本工具
│ ├── train_model.py # 训练脚本
│ ├── backtest.py # 回测脚本
│ ├── collect_data.py # 数据采集
│ └── deploy_model.py # 模型部署
│
├── tests/ # 测试
│ ├── test_data/
│ └── test_models/
│
├── configs/ # 配置文件
│ ├── model.yaml
│ ├── database.yaml
│ └── trading.yaml
│
├── src/ # 源代码
│ ├── __init__.py
│ │
│ ├── data/ # 数据处理模块
│ │ ├── __init__.py
│ │ ├── collectors/ # 数据采集器
│ │ ├── processors/ # 数据清洗
│ │ ├── features/ # 特征工程
│ │ └── loaders.py # 数据加载
│ │
│ ├── models/ # 模型模块
│ │ ├── __init__.py
│ │ ├── strategies/ # 交易策略
│ │ ├── backtest/ # 回测引擎
│ │ └── risk/ # 风险管理
│ │
│ ├── utils/ # 工具模块
│ │ ├── __init__.py
│ │ ├── logging.py # 日志配置
│ │ ├── database.py # 数据库工具
│ │ └── api_client.py # API客户端
│ │
│ └── core/ # 核心模块
│ ├── __init__.py
│ ├── config.py # 配置管理
│ ├── signals.py # 信号生成
│ └── portfolio.py # 投资组合
│
├── data/ # 数据目录(Git忽略)
│ ├── raw/ # 原始数据
│ ├── processed/ # 处理后数据
│ ├── external/ # 外部数据
│ └── cache/ # 缓存
│
├── models/ # 模型文件(Git忽略)
│ ├── checkpoints/ # 检查点
│ └── exports/ # 导出模型
│
└── logs/ # 日志(Git忽略)
├── trading.log
└── errors.log
使用场景:量化交易、机器学习、数据分析、AI研究
项目名称-monorepo/
├── README.md
├── LICENSE
├── .gitignore
├── .gitmodules # Git子模块
├── docker-compose.yml # Docker编排
├── CLAUDE.md # claude持久上下文
├── AGENTS.md # codex持久上下文
├── Sublime-Text.txt # 这个是文件,放需求和注意事项,给自己看的,和cli的会话恢复指令^_^
│
├── docs/ # 全局文档
│ ├── architecture.md
│ └── deployment.md
│
├── scripts/ # 全局脚本
│ ├── build_all.sh
│ ├── test_all.sh
│ └── deploy.sh
│
├── backups/ # 放备份文件
│ ├── archive/ # 放旧的备份文件
│ └── gz/ # 放备份文件的gz
│
├── services/ # 微服务目录
│ │
│ ├── user-service/ # 用户服务
│ │ ├── Dockerfile
│ │ ├── requirements.txt
│ │ ├── src/
│ │ └── tests/
│ │
│ ├── trading-service/ # 交易服务
│ │ ├── Dockerfile
│ │ ├── requirements.txt
│ │ ├── src/
│ │ └── tests/
│ ...
│ └── data-service/ # 数据服务
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── src/
│ └── tests/
│
├── libs/ # 共享库
│ ├── common/ # 公共模块
│ │ ├── utils/
│ │ └── models/
│ ├── external/ # 第三方库(不可修改,只调用)
│ └── database/ # 数据库访问库
│
├── infrastructure/ # 基础设施
│ ├── terraform/ # 云资源定义
│ ├── kubernetes/ # K8s配置
│ └── nginx/ # 反向代理配置
│
└── monitoring/ # 监控系统
├── prometheus/ # 指标收集
├── grafana/ # 可视化
└── alertmanager/ # 告警
使用场景:微服务架构、大型项目、团队协作
项目名称/
├── README.md
├── LICENSE
├── .gitignore
├── docker-compose.yml # 前后端一起编排
├── CLAUDE.md # claude持久上下文
├── AGENTS.md # codex持久上下文
├── Sublime-Text.txt # 放需求和注意事项,给自己看的,和cli的会话恢复指令^_^
│
├── frontend/ # 前端目录
│ ├── public/ # 静态资源
│ ├── src/ # 源码
│ │ ├── components/ # React/Vue组件
│ │ ├── pages/ # 页面
│ │ ├── store/ # 状态管理
│ │ └── utils/ # 工具
│ ├── package.json # NPM依赖
│ └── vite.config.js # 构建配置
│
└── backend/ # 后端目录
├── requirements.txt
├── Dockerfile
├── src/
│ ├── api/ # API接口
│ ├── core/ # 业务逻辑
│ │ └── models/ # 数据模型
└── tests/
使用场景:全栈应用、SPA单页应用、前后端分离项目
API → 服务 → 数据访问 → 数据库
一目了然,层级清晰
每个模块可独立测试
依赖可mock
配置与代码分离
环境变量 > 配置文件 > 默认值
代码自解释
合理的文件命名
清晰的目录结构
data/、logs/、models/ 添加到 .gitignore
只提交源代码和配置示例
src/ 目录:把源代码放在专门的src目录,避免顶级目录混乱from src.module import thing 的导入方式# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
*.egg-info/
dist/
build/
# 环境
.env
.venv/
env/
venv/
ENV/
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# 数据
data/
*.csv
*.json
*.db
*.sqlite
*.duckdb
# 日志
logs/
*.log
# 模型
models/
*.h5
*.pkl
# 临时文件
tmp/
temp/
*.tmp
.DS_Store
| 场景 | 推荐技术栈 |
|---|---|
| Web API | FastAPI + Pydantic + SQLAlchemy |
| 数据处理 | Pandas + NumPy + Polars |
| 机器学习 | Scikit-learn + XGBoost + LightGBM |
| 深度学习 | PyTorch + TensorFlow |
| 数据库 | PostgreSQL + Redis |
| 消息队列 | RabbitMQ / Kafka |
| 任务队列 | Celery |
| 监控 | Prometheus + Grafana |
| 部署 | Docker + Docker Compose |
| CI/CD | GitHub Actions / GitLab CI |
# 核心依赖
fastapi==0.104.1
uvicorn[standard]==0.24.0
pydantic==2.5.0
# 数据库
sqlalchemy==2.0.23
alembic==1.12.1
psycopg2-binary==2.9.9
# 测试
pytest==7.4.3
pytest-cov==4.1.0
pytest-asyncio==0.21.1
# 工具
python-dotenv==1.0.0
loguru==0.7.2
# 开发(可选)
black==23.11.0
flake8==6.1.0
mypy==1.7.1
[project]
name = "项目名称"
version = "0.1.0"
description = "项目描述"
authors = [{name = "作者", email = "邮箱@example.com"}]
dependencies = [
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"sqlalchemy>=2.0.0",
]
[project.optional-dependencies]
dev = ["pytest", "black", "flake8", "mypy"]
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
启动新项目时,确保完成以下事项:
在编程 / 软件开发里,项目架构(Project Architecture / Software Architecture)指的是:
一个项目在“整体层面”是如何被拆分、组织、通信和演进的设计方案 ——它决定了代码怎么分层、模块怎么分工、数据怎么流动、系统如何扩展和维护。
项目架构 = 不写具体业务代码之前,就先决定“代码怎么放、模块怎么连、职责怎么分”。
项目架构不是“写代码的技巧”,而是解决这些更高层问题:
project/
├── src/
│ ├── main/
│ ├── services/
│ ├── models/
│ ├── utils/
│ └── config/
├── tests/
├── docs/
└── README.md
👉 决定 “不同类型代码放哪里”
最常见的是 分层架构(Layered Architecture):
表示层(UI / API)
↓
业务逻辑层(Service)
↓
数据访问层(DAO / Repository)
↓
数据库 / 外部系统
规则:
比如一个交易系统:
- market_data # 行情
- strategy # 策略
- risk # 风控
- order # 下单
- account # 账户
👉 每个模块:
例如:
WebSocket → 数据清洗 → 指标计算 → AI评分 → SQLite → API → 前端
一个项目,一个进程
适合:
优点:
缺点:
Controller → Service → Repository
适合:
core + plugins
适合:
👉 你做量化、AI分析,非常适合这个
每个服务一个独立进程 + API 通信
适合:
❌ 新手不建议一开始用
假设你做 币安永续 AI 分析系统:
backend/
├── data/
│ └── binance_ws.py # 行情订阅
├── indicators/
│ └── vpvr.py
├── strategy/
│ └── signal_score.py
├── storage/
│ └── sqlite_writer.py
├── api/
│ └── http_server.py
└── main.py
这就是项目架构设计:
❌ 一开始就搞微服务 ❌ 所有代码写在一个文件 ❌ 架构追求“高级感”,而不是“可维护” ❌ 没想清楚数据流就开始写
你现在学 CS,很推荐这个顺序:
学会:
再学:
版本: 1.0 更新日期: 2025-11-24 维护: CLAUDE,CODEX,KIMI