# astock-lab **Repository Path**: oldtan/astock-lab ## Basic Information - **Project Name**: astock-lab - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-05 - **Last Updated**: 2026-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AStock Lab 基于 vue-fastapi-admin 二次开发,整合 A股/ETF 数据同步与数据字典管理。 ## 技术栈 ### 后端 | 组件 | 版本/选型 | |------|----------| | Python | 3.13 | | 框架 | FastAPI | | ORM | Tortoise ORM + Aerich 迁移 | | 数据库 | PostgreSQL(schema: `stock`) | | 缓存 | Redis(同步冷却锁) | | 数据源 | akshare(新浪底层,A股 + 场内 ETF) | | 包管理 | uv(阿里云镜像) | ### 前端 (`web/`) | 组件 | 版本/选型 | |------|----------| | 框架 | Vue 3 | | UI 库 | Naive UI | | 构建 | Vite 4 | | 状态 | Pinia | | 样式 | UnoCSS | | 包管理 | pnpm | ## 功能模块 ### RBAC 权限体系(vue-fastapi-admin 原有) - 用户管理 / 角色管理 / 菜单管理 / API 管理 / 部门管理 / 审计日志 - JWT 鉴权 + 动态路由 + 按钮级权限控制 ### 股票管理(新增) - 股票/ETF 基本信息 CRUD - 多条件筛选(关键词 / 市场 / 板块) - **一键同步**:akshare 抓取沪深京 A股(~5500) + 场内 ETF(~1500),upsert 入库 - Redis 60s 冷却锁防重复触发 ### 数据字典(新增) - 两级结构:`dict_type`(字典类型) + `dict_item`(字典值) - 分组 / 编码唯一校验 / FK 级联删除 ## 快速开始 ### 环境要求 - Python >= 3.11 - PostgreSQL - Redis(可选,不可用时不阻塞启动) - Node >= 18(前端) ### 1. 克隆 + 安装依赖 ```bash git clone cd stock # 后端 uv venv source .venv/bin/activate # Windows: .\.venv\Scripts\activate uv sync # 前端 cd web pnpm install ``` ### 2. 配置 复制 `.env` 并填入实际连接参数: ```env # PostgreSQL POSTGRES_HOST=your_host POSTGRES_PORT=5432 POSTGRES_USER=postgres POSTGRES_PASSWORD=your_password POSTGRES_DB=your_db POSTGRES_SCHEMA=stock # Redis(可选) REDIS_HOST=your_host REDIS_PORT=6379 REDIS_PASSWORD= REDIS_DB=0 ``` ### 3. 启动 ```bash # 后端 :9999 python run.py # 前端 :3100(自动 proxy /api/v1 → 后端) cd web && pnpm dev ``` ### 4. 登录 `http://localhost:3100` — 默认账号 `admin` / `123456` 首次启动自动初始化:建表 → 管理员 → 菜单 → API 权限 → 默认角色。 ## API 概览 | 模块 | 前缀 | 说明 | |------|------|------| | 基础 | `/api/v1/base` | 登录 / 用户信息 / 菜单 / API | | 用户 | `/api/v1/user` | 用户 CRUD | | 角色 | `/api/v1/role` | 角色 CRUD + 权限分配 | | 菜单 | `/api/v1/menu` | 菜单(树形)CRUD | | API | `/api/v1/api` | API 管理 + 自动刷新 | | 部门 | `/api/v1/dept` | 部门(树形)CRUD | | 审计 | `/api/v1/auditlog` | 审计日志查询 | | **股票** | `/api/v1/stock` | 股票 CRUD + 同步 | | **字典** | `/api/v1/dict` | 字典类型/字典值 CRUD | ## 目录结构 ``` stock/ ├── app/ # 后端 │ ├── api/v1/ # API 路由 │ │ ├── base/ # 登录 / 用户信息 │ │ ├── users/ # 用户 │ │ ├── roles/ # 角色 │ │ ├── menus/ # 菜单 │ │ ├── apis/ # API 管理 │ │ ├── depts/ # 部门 │ │ ├── auditlog/ # 审计日志 │ │ ├── stocks/ # ★ 股票 │ │ └── dicts/ # ★ 字典(类型+值) │ ├── controllers/ # 业务逻辑(CRUDBase 子类) │ │ ├── stock.py # 股票 + sync 编排 │ │ └── dict.py # 字典类型 + 字典值 │ ├── models/ │ │ └── admin.py # 全部 ORM 模型 │ ├── schemas/ # Pydantic 请求/响应 │ ├── core/ # CRUD 基类 / 鉴权 / 中间件 / 启动初始化 │ ├── settings/config.py # 配置(PG / Redis / JWT) │ └── utils/ │ ├── redis_utils.py # Redis 连接(降级兼容) │ └── stock_sources/ # akshare 数据源(A股 + ETF) ├── web/ # 前端 │ └── src/ │ ├── api/index.js # API 方法 │ ├── views/ │ │ ├── stock/list/ # 股票列表 │ │ ├── dict/type/ # 字典类型 │ │ └── dict/item/ # 字典值 │ └── ... ├── .env # 环境变量 ├── pyproject.toml └── run.py ``` ## 基于 - [vue-fastapi-admin](https://github.com/mizhexiaoxiao/vue-fastapi-admin) — FastAPI + Vue3 + Naive UI 后台管理脚手架 - [akshare](https://github.com/akfamily/akshare) — Python 财经数据接口库