Files
wecom_it_smart_desk/backend/alembic/versions/022_qrcode_login.py
T

51 lines
1.7 KiB
Python
Raw Normal View History

"""qrcode login (Phase 1.1)
Revision ID: 022_qrcode_login
Revises: 021_rbac
Create Date: 2026-06-21
Phase 1.1 扫码登录后端接口(task #14)。
设计说明:
扫码登录的所有状态都存在 Redis(无需新增数据库表):
- qrcode:ticket:{ticket}{created_at, expires_at}, TTL 120s
- qrcode:scan:{ticket}{employee_id, name, scanned_at}, TTL 120s
- qrcode:confirm:{ticket}{token, confirmed_at, roles}, TTL 60s
不动 User / Agent 模型(MFA 字段留给 Phase 2.1)。
不动 auth2fa.py(SMS 备用通道保留)。
为什么仍然生成这个 migration 文件:
1. alembic 版本链不能断,021 → 022 必须存在(后续 023+ 需要接续)
2. 标记 Phase 1.1 上线,方便运维追溯和回滚标记
3. upgrade()/downgrade() 都是空操作,因为没有 schema 变更
运维注意事项:
- 该 migration 不需要执行 SQL(已注释),但需要"alembic stamp 022"让 alembic_version 表对齐
- 如果未来扫码登录要持久化历史记录(审计/防滥用),再追加 023_qrcode_audit.py 加 qrcode_login_logs 表
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "022_qrcode_login"
down_revision = "021_rbac"
branch_labels = None
depends_on = None
def upgrade() -> None:
"""Phase 1.1 扫码登录无 schema 变更,upgrade 留空。
预留说明: 如果部署时 alembic stamp 未执行,导致 backend 启动报
"alembic_version" mismatch,只需 `alembic stamp 022` 即可对齐。
"""
# 故意 pass:扫码登录的所有数据存 Redis,无 DB schema 变更
pass
def downgrade() -> None:
"""Phase 1.1 扫码登录无 schema 变更,downgrade 留空。"""
# 故意 pass
pass