feat: 全屏个股详情预览 + Tailwind 改版 + 账号鉴权
This commit is contained in:
38
README.md
38
README.md
@@ -131,11 +131,15 @@ pnpm dev # http://localhost:5173
|
||||
后端配置通过 `backend/.env`(复制 `.env.example`)或环境变量:
|
||||
|
||||
```bash
|
||||
# 数据库(MVP 默认 SQLite,零配置)
|
||||
DATABASE_URL=sqlite+aiosqlite:///./stock.db
|
||||
# 数据库(开发、测试、生产统一使用 PostgreSQL)
|
||||
DATABASE_URL=postgresql+asyncpg://user:password@host:5432/stock
|
||||
|
||||
# 切到你自己的 PostgreSQL / TimescaleDB
|
||||
# DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/stock
|
||||
# 鉴权:本地 HTTP 为 false;线上 HTTPS 必须为 true
|
||||
AUTH_COOKIE_SECURE=false
|
||||
AUTH_SESSION_HOURS=12
|
||||
CORS_ORIGINS=http://localhost:5173
|
||||
# 生产建议关闭接口文档
|
||||
EXPOSE_API_DOCS=true
|
||||
|
||||
# 真实数据源(Tushare Pro;免费版即可。留空则仅 DEMO 合成数据可用)
|
||||
TUSHARE_TOKEN=你的token
|
||||
@@ -149,6 +153,31 @@ DATA_DEFAULT_START=20200101
|
||||
# COMMISSION_MIN=5.0 # 最低 5 元
|
||||
```
|
||||
|
||||
### 初始化登录系统
|
||||
|
||||
数据库结构由 Alembic 管理。首次部署或更新代码后执行:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
uv run alembic upgrade head
|
||||
```
|
||||
|
||||
系统不提供注册接口。使用服务器交互式命令创建唯一用户;再次执行会重置密码并吊销该用户的所有旧会话:
|
||||
|
||||
```bash
|
||||
uv run python -m app.cli.create_user --username admin
|
||||
```
|
||||
|
||||
密码使用 Argon2id 保存。浏览器只接收 `HttpOnly` 会话 Cookie,数据库只保存随机会话 Token 的 SHA-256 摘要。默认会话有效期 12 小时,连续 5 次登录失败后锁定 15 分钟。
|
||||
|
||||
生产环境必须启用 HTTPS,并设置:
|
||||
|
||||
```bash
|
||||
AUTH_COOKIE_SECURE=true
|
||||
CORS_ORIGINS=https://你的域名
|
||||
EXPOSE_API_DOCS=false
|
||||
```
|
||||
|
||||
### 切到 PostgreSQL + TimescaleDB
|
||||
|
||||
1. 目标库执行 `CREATE EXTENSION IF NOT EXISTS timescaledb;`
|
||||
@@ -202,6 +231,7 @@ pnpm preview # 本地预览构建产物
|
||||
### 后端生产运行
|
||||
```bash
|
||||
cd backend
|
||||
uv run alembic upgrade head
|
||||
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4
|
||||
# 或 gunicorn(Linux):uv run gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user