You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
6.9 KiB

<EFBFBD><EFBFBD># AmazingData penc g<>Rs^<5E>S
<00>W<EFBFBD>N AmazingData SDK <00>vON<>~penc g<>Rs^<5E>S <0C><>c<EFBFBD>O<EFBFBD><4F>hy0g'<27> K <00>~penc<6E><63><EFBFBD>S<EFBFBD>T<EFBFBD>[<5B>e<EFBFBD><65><05> g<>R0
## <00>R<EFBFBD><52>yr'`
### 1. US<55>S<EFBFBD>T<EFBFBD>y<EFBFBD>g<EFBFBD><67>
- <00><>eQ<1A><>T<EFBFBD>y<EFBFBD>Nx<08><><EFBFBD>hy/g'<27> <09>0<>Nf<>e0hTg0<>OX[_
- <00><><EFBFBD>Q<1A>JSON <h_penc<EFBFBD>OX[0Rc<EFBFBD>[<EFBFBD>vU_
### 2. ybϑ<62><CF91>hy<68><79><EFBFBD>S
- <00><>eQ<1A><><EFBFBD>hy<68>NxRh<52>0<>Nf<>eRh<52>0<>OX[_
- <00><><EFBFBD>Q<1A><>N<EFBFBD>k*N<>Nf<>e:N<>e<EFBFBD>N T<>v JSON penc
### 3. ybϑg'<27><><EFBFBD><EFBFBD>S
- <00><>eQ<1A>g'<27><>T<EFBFBD>y<EFBFBD>Nx0<>Nf<>eRh<52>0<>OX[_
- <00><><EFBFBD>Q<1A><>N<EFBFBD>k*N<>Nf<>e:N<>e<EFBFBD>N T<>v JSON penc
### 4. <00>[<5B>e<EFBFBD><65><05><08><><EFBFBD>hy <09>
- <00><>eQ<1A><><EFBFBD>hy<68>Nx0<><30><05>hTg0<>OX[_
- <00><><EFBFBD>Q<1A> c<>e<EFBFBD><65>}T T<>v<EFBFBD>[<5B>epenc<6E>e<EFBFBD>N
### 5. <00>[<5B>e<EFBFBD><65><05><08>g'<27> <09>
- <00><>eQ<1A>g'<27><>Nx0<><30><05>hTg0<>OX[_
- <00><><EFBFBD>Q<1A> c<>e<EFBFBD><65>}T T<>v<EFBFBD>[<5B>epenc<6E>e<EFBFBD>N
### 6. ybϑ<62>T<EFBFBD>y<EFBFBD><79><05>
- /ec T<>e<EFBFBD><65><05>Y*N<>T<EFBFBD>y
- /ecYhTg<><67><05>
## <00>b/gh
- **T<>z**: FastAPI + SQLAlchemy + MySQL
- **MR<4D>z**: Vue 3 + Vite + Element Plus
- **penc<6E>n**: AmazingData SDK
- **<00><>r**: Docker + Docker Compose
## <00>_<1F>_<>Y
### <00>s<EFBFBD>X<EFBFBD><58>Bl
- Python 3.11+
- Node.js 18+
- MySQL 8.0+
- AmazingData SDK
### ,g0W_<>S
#### 1. T<>z
\\\ash
cd amazingdata_platform
# R<>^Z<><5A>b<EFBFBD>s<EFBFBD>X
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# <00><>OV<4F>
pip install -r backend/requirements.txt
# M<>n<6E>s<EFBFBD>X<EFBFBD>
cp .env.example .env
# <><7F> .env <00>e<EFBFBD>N
# /T<>R g<>R
uvicorn backend.main:app --reload --port 8000
\\\
#### 2. MR<4D>z
\\\ash
cd frontend
# <00><>OV<4F>
npm install
# /T<>R_<>S g<>RhV
npm run dev
\\\
### Docker <00><>r
\\\ash
# <00>g<EFBFBD>^v^/T<>R
docker-compose up -d
# <00>g w<>e<EFBFBD>_
docker-compose logs -f
# \Pbk
docker-compose down
\\\
## y<><79>v<EFBFBD>~<7E>g
\\\
amazingdata_platform/
%%% backend/ # T<>z g<>R
% %%% api/ # API <00><>1u
% % %%% auth.py # <00><><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>S
% % %%% historical.py # <00>S<EFBFBD>Spenc<6E>c<EFBFBD>S
% % %%% realtime.py # <00>[<5B>e<EFBFBD><65><05><>c<EFBFBD>S
% % %%% batch.py # ybϑ<62>d\O<>c<EFBFBD>S
% % %%% cache.py # X[<5B>{t<>c<EFBFBD>S
% % %%% settings.py # <00>|<7C>~M<>n<6E>c<EFBFBD>S
% %%% auth/ # <00><><EFBFBD><EFBFBD>!jWW
% %%% models/ # penc!j<>W
% %%% services/ # N<>R;<3B><><EFBFBD>
% %%% config.py # M<>n
% %%% main.py # ;N<>^(u
%%% frontend/ # MR<4D>z<EFBFBD>^(u
% %%% src/
% % %%% api/ # API <00><>Bl
% % %%% router/ # <00><>1u
% % %%% stores/ # <00>r`<60>{t
% % %%% views/ # u<>b<EFBFBD><62>~<7E>N
% %%% package.json
%%% database/ # penc<6E>^
% %%% init.sql # R<>YS<1A>,g
%%% docker-compose.yml # Docker M<>n
%%% Dockerfile.backend # T<>z Dockerfile
%%% Dockerfile.frontend # MR<4D>z Dockerfile
%%% nginx.conf # Nginx M<>n
\\\
## API <00>ech
/T<>R g<>RT<><54><EFBFBD><EFBFBD> \http://localhost:8000/docs\ <00>g w Swagger API <00>ech0
### ;N<><4E><EFBFBD>c<EFBFBD>S
| <00>c<EFBFBD>S | <00>e<EFBFBD>l | <00>c<EFBFBD><63> |
|------|------|------|
| \/api/v1/auth/login\ | POST | (u7b{vU_ |
| \/api/v1/historical/single\ | POST | <00><><EFBFBD>SUS<55>S<EFBFBD>T<EFBFBD>ypenc |
| \/api/v1/historical/batch-stocks\ | POST | ybϑ<62><CF91><EFBFBD>S<EFBFBD><53>hypenc |
| \/api/v1/historical/batch-futures\ | POST | ybϑ<62><CF91><EFBFBD>Sg'<27>penc |
| \/api/v1/realtime/subscribe\ | POST | R<>^<5E>[<5B>e<EFBFBD><65><05> |
| \/api/v1/realtime/tasks\ | GET | <00><><EFBFBD>S<EFBFBD><53><05><>N<EFBFBD>RRh<52> |
| \/api/v1/realtime/stop/{id}\ | POST | \Pbk<62><6B><05><>N<EFBFBD>R |
| \/api/v1/batch/execute\ | POST | gbL<62>ybϑ<62>N<EFBFBD>R |
| \/api/v1/batch/tasks\ | GET | <00><><EFBFBD>Sybϑ<62>N<EFBFBD>RRh<52> |
| \/api/v1/cache/list\ | GET | <00><><EFBFBD>SX[<5B>e<EFBFBD>NRh<52> |
| \/api/v1/cache/stats\ | GET | <00><><EFBFBD>SX[<5B>~<7E><> |
| \/api/v1/settings/amazing-data/config\ | GET | <00><><EFBFBD>S AmazingData M<>n |
| \/api/v1/settings/test-connection\ | POST | KmՋޏ<D58B>c |
## O(u:y<>O
### <00><><EFBFBD>SUS<55>S<EFBFBD><53>hypenc
\\\ash
curl -X POST http://localhost:8000/api/v1/historical/single \
-H \
Content-Type:
application/json\ \
-d '{
\code\: \000001.SZ\,
\trading_day\: \20260407\,
\period\: \day\,
\save_path\: \./data/single\
}'
\\\
### R<>^<5E>[<5B>e<EFBFBD><65><05>
\\\ash
curl -X POST http://localhost:8000/api/v1/realtime/subscribe \
-H \Content-Type:
application/json\ \
-d '{
\codes\: [\ag2605.SHF\],
\periods\: [\min1\, \min5\],
\save_path\: \./data/realtime\,
\duration\: 3600
}'
\\\
## ؞<><D89E>&<EFBFBD><EFBFBD>S
- <00>{tXT: admin / admin123
- nf<1A>(u7b: user / user123
## <00><><EFBFBD>S<EFBFBD><53>
MIT License