"""登录密码(M1 账号功能) Revision ID: 0008 Revises: 0007 Create Date: 2026-10-31 M0 只有手机号 + 验证码登录。验证码登录在换手机、短信通道欠费、 或者只想快一点的时候都不够用,所以给账号加一条**可选**的密码登录路径。 两个取舍: 1. **密码可空**。老用户不去设置就一直走验证码,不会被强制改流程; 登录页两种方式并存,谁设过谁自己知道。 2. **只存 scrypt 串**(见 `app/security.py`),不存明文也不存 md5。 密码本身永远不回给客户端,接口只返回 `has_password` 这个布尔。 """ from __future__ import annotations from collections.abc import Sequence from alembic import op revision: str = "0008" down_revision: str = "0007" branch_labels: Sequence[str] | None = None depends_on: Sequence[str] | None = None def upgrade() -> None: op.execute( """ ALTER TABLE app_user ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255) """ ) def downgrade() -> None: op.execute("ALTER TABLE app_user DROP COLUMN IF EXISTS password_hash")