e44802ae40
web form 提交时 expire_at 字段是 HTML datetime-local 字符串 (如 '2027-12-31T23:59'), SQLAlchemy 直接写入 datetime 列会抛 TypeError. 同样, API 路径里如果传 ISO 字符串而不带 tzinfo, 写入后再读出是 naive datetime, is_active() 比较时 会抛 'can't compare offset-naive and offset-aware datetimes'. 修复: - services/user_service.py: 增加 _parse_expire_at() helper, 统一转成 UTC-aware datetime, 支持 datetime-local 'T'/' ' 多种分隔符 + ISO 格式 - services/user_service.py: create_user/update_user 调用 helper - models.py: User.is_active() 兼容 naive datetime (SQLite 不存 tzinfo)