# Code structure

```bash
$ tree -I '*.pyc' -I '*.sqlite' -I '__pycache__' -I 'spider' -L 3 .
.
├── alembic
│   ├── env.py
│   ├── README
│   ├── script.py.mako
│   └── versions  # migration 版本文件
├── alembic.ini
├── app.py  # Flask APP 定义
├── check_pulumi.sh
├── config.py  # 全局配置文件
├── consts  # 存放常量定义
│   └── consts.py
├── deployments
│   └── pulumi  # pulumi 部署文件
├── Dockerfile
├── domain_info  # lengjing domain context(算法层)
│   ├── index.py
│   ├── __init__.py
│   └── lengjing.json
├── gunicorn_config.py  # Gunicorn 配置文件
├── handlers  # API 代码
│   ├── base.py
│   ├── context.py  # Context 相关API（已废弃）
│   ├── credential.py  # 数据库credential相关API（已废弃）
│   ├── edatask.py  # EDA API，使用中
│   ├── __init__.py
│   └── prompt.py  # Prompt 相关API（已废弃）
├── linter.sh
├── Makefile
├── spider  # spider 相关脚本
├── models  # DB模型层代码
│   ├── base.py
│   ├── context.py  # DataContext, Session Context model定义
│   ├── credential.py  # 数据库 credential 定义（已废弃）
│   ├── edatask.py  # 异步任务定义
│   ├── __init__.py
│   ├── prompt.py  # Prompt 定义（已废弃）
│   └── ratelimit.py
├── pickup_running_jobs.py
├── Procfile
├── README.md
├── renovate.json
├── requirements.txt
├── revision.sh
├── runapp.sh  # 启动api脚本
├── runtests.sh  # 执行测试脚本
├── runworker.sh  # 启动worker脚本
├── schema  # Schema 文件，用于API入参检查
│   ├── __init__.py
│   └── schema.py
├── scripts  # 临时脚本
│   ├── dump_data_context.py
│   └── init_prompts.py
├── structure.md
├── svc  # 封装的第三方服务
│   ├── context.py  # Context(Data Context, Session Context) 封装
│   ├── crossregion.py  # o11y 跨区调用函数封装
│   ├── dataapi.py  # DataAPI 执行SQL函数封装
│   ├── data_explore.py  # 算法层(owner: @jianwei)
│   ├── eda_task.py # 算法层(owner: @jianwei)
│   ├── executor.py  # 自包装 ThreadPoolExecutor
│   ├── __init__.py
│   └── measuring.py  # 计量相关代码封装
├── tasks  # 异步任务
│   ├── celery_app.py  # Celery 配置
│   ├── eda.py  # EDA 相关异步任务定义
│   ├── __init__.py
│   └── utils.py  # 异步任务工具函数
├── tests  # 测试代码
│   ├── test_chat2query_api.py
│   └── test_chat2query_tasks.py
└── utils  # 工具函数
│   ├── callback.py
│   ├── credential.py
│   ├── database.py
│   ├── __init__.py
│   ├── jsonpath.py
│   ├── local.py
│   ├── openai.py
│   ├── template.py
│   └── testcase.py
└── worker.py

16 directories, 94 files
```
