小鱼开发
|
1f7201f593
|
fix(schema): 移除 PolishRequest 中错误的字段
PolishRequest 中误入了 message 和 result 字段(应为响应模型字段),
导致后端验证要求请求体必须包含 message,润色接口调用失败。
|
2026-05-16 15:14:18 +08:00 |
|
小鱼开发
|
d3069d423b
|
perf(material): batch_match 批量查询优化,减少 DB 往返
- CRUD 新增 get_by_names_and_level() 批量查分类
- CRUD 新增 get_active_by_categories() 批量查素材
- CRUD 新增 increment_usage_count_batch() 批量更新 usage_count
- 重写 batch_match:从 N 次 DB 往返降到 3 次(查分类 + 查素材 + UPDATE)
- Redis 改用 pipeline 批量 sadd + expire
- 解决并发/连接池不足导致的间歇性 500 错误
|
2026-05-16 14:48:28 +08:00 |
|
小鱼开发
|
83b10945c8
|
feat(points): 新增今日消耗接口 + 个人中心字体调整
后端:
- CRUD 新增 sum_consumed_today() 方法,统计用户今日消费积分总和
- API 新增 GET /points/today-consumed 路由
前端:
- 个人中心积分数字从 40px 改为 32px
- 今日消耗从本地计算改为调用后端接口
|
2026-05-16 09:46:41 +08:00 |
|
小鱼开发
|
f8fd241d58
|
chore(prompts): 移除水电材料(sc)分类
|
2026-05-16 09:22:12 +08:00 |
|
小鱼开发
|
cbd4068776
|
fix(db): unify table name prefix to mjk_ for update tables
- Rename app_releases → mjk_app_releases
- Rename release_packages → mjk_release_packages
- Update ForeignKey reference and migration file
- Add pre-commit hook: check_table_prefix.py to prevent future violations
|
2026-05-15 18:28:07 +08:00 |
|
小鱼开发
|
60b4178cff
|
fix(material): _normalize_scene 去除所有 Unicode 空白字符
之前只处理了半角空格和全角空格,换行、tab 等字符会导致
scene 与三级分类 name 匹配失败。改用 re.sub(r'\s+', '', scene)
统一清理所有 Unicode 空白字符。
|
2026-05-15 17:40:41 +08:00 |
|
小鱼开发
|
ffcbb5105d
|
fix(api): 恢复 /health 根路径健康检查端点
Docker/Nginx 健康检查请求 /health 返回 404,
在 main.py 中重新添加轻量级 /health 端点供负载均衡使用。
|
2026-05-15 17:08:34 +08:00 |
|
小鱼开发
|
95fa5b6fab
|
fix: 将 /health 路由从根路径移到 /api/v1/system/health
- 原 /health 注册在 FastAPI 根应用上,Nginx 代理 /api/v1/ 前缀无法访问
- 移到 system router 下,外部通过 /api/v1/system/health 访问
- 同步更新 docker-compose.test.yml 和 docker-compose.prod.yml 的 healthcheck 路径
|
2026-05-15 16:56:28 +08:00 |
|
小鱼开发
|
cb56698836
|
feat: 应用自动更新系统 + 草稿箱删除 + 分类缓存优化
- 新增 Tauri 自动更新(updater 插件)
- Rust: 集成 tauri-plugin-updater + tauri-plugin-process
- 后端: app_releases / release_packages 表 + /update/check API
- 前端: UpdateDialog 组件 + useUpdater hook + SystemUpdate 手动检查
- 发版脚本: scripts/publish_release.py(扫描 .sig → 上传七牛云 → 写入数据库)
- 配置 test 环境域名 dev.tapi.meijiaka.cn
- 草稿箱删除功能
- DraftListItem 添加删除按钮
- MyWorks 添加删除确认弹窗 + localProjectApi.deleteProject 调用
- 创作主题分类本地缓存
- scriptApi.getCategoriesCached() 先读 localStorage 再静默刷新
- TermsModal tab 居中
- 更新应用图标(Big Sur 风格圆角矩形)
- 清理: 删除未使用文件 create_user.py / video-replace-mvp.py / DEPS_*.md
|
2026-05-15 16:41:57 +08:00 |
|
小鱼开发
|
ada29a48a8
|
feat: 空镜素材分类&数据入库
- 素材表统一为 mjk_broll_ 前缀(mjk_broll_categories/materials/tags)
- 新增 218 条分类 seed + 2495 条素材 seed(含 ffprobe 时长)
- 新增 Alembic 迁移: rename mjk_* to mjk_broll_*
|
2026-05-15 15:49:29 +08:00 |
|
小鱼开发
|
17455b405c
|
Revert "feat: 空镜素材分类&数据入库"
This reverts commit 91e5cdefbb.
|
2026-05-15 15:45:55 +08:00 |
|
小鱼开发
|
91e5cdefbb
|
feat: 空镜素材分类&数据入库
- 重命名素材表 mjk_* -> broll_*,与模型命名保持一致
- 新增 182 个三级场景分类 seed 数据
- 新增 2495 条素材 INSERT SQL(含 ffprobe 时长探测)
- 新增 Alembic 迁移: rename mjk_categories/materials/tags to broll_*
|
2026-05-15 15:41:23 +08:00 |
|
小鱼开发
|
f20de12fa2
|
feat: macOS Big Sur 风格图标 + Docker 日志轮转 + 后台运维 SQL
图标:
- 添加白色圆角矩形底板,占画布 80%(四周留透明呼吸边距)
- M 内容占底板 65%,裁剪透明边距后居中
- 底板微妙渐变(#FAFAFA → #F0F0F0)
- 清理原始图标幽灵半透明像素
- 全平台图标重新生成(PNG / ICNS / ICO / Android / iOS)
运维:
- docker-compose.prod.yml & test.yml 添加 json-file 日志轮转
max-size: 100m, max-file: 5
- scripts/admin-ops.sql: 新增用户、积分赠送、积分补偿、批量补偿
- scripts/generate-rounded-icon.py: 可复用的图标生成脚本
其他:
- prompts 文件重命名为语义化文件名
- .gitignore 移除 binaries/ 忽略(FFmpeg sidecar 需提交)
|
2026-05-15 11:33:51 +08:00 |
|
小鱼开发
|
de7a6b734f
|
chore(release): bump to v1.5.15
- 统一版本号管理(VERSION + scripts/bump-version.py)
- 添加 GitLab CI/CD 前端多平台构建配置
- 替换应用图标为品牌 logo
- 清理无效文件(tauri.svg, vite.svg, bg-config.json, audio/presets, .DS_Store)
- 修复 ESLint 错误和全部 warnings
- 清理 console.warn,保留 console.error
- 更新 Cargo.toml 元数据(description + authors)
- 更新 .gitignore(dist/, src-tauri/target/, binaries/)
- authStore appVersion 改为动态获取(getVersion)
- 修复 login 错误处理
- 将 FFmpeg sidecar 二进制移出 Git 跟踪(CI 构建时准备)
|
2026-05-14 23:32:45 +08:00 |
|
小鱼开发
|
8f99d0166b
|
chore: 清理后端未使用文件(307 行)
- 删除 core/health_checker.py(完全未使用)
- 删除 crud/point_batch.py(CRUD 封装未被引用,service 直接用 SQLAlchemy)
- 删除 crud/user_point.py(同上)
- 顺手修复 point_service.py 缺失 logger 定义(ruff F821)
|
2026-05-14 23:10:46 +08:00 |
|
小鱼开发
|
7330fdd401
|
fix: 生产安全检查 — 鉴权 + 资金安全 + Slot TTL
1. upload.py: /video /audio 端点添加 get_current_user 鉴权
2. caption.py: /ata/align 端点添加 get_current_user 鉴权
3. points.py: allow_negative 硬编码 False,禁止客户端控制欠费
4. slot_manager.py: TTL 1800s → 1200s,减少异常崩溃后的槽位泄漏时间
5. points.py: 顺手修复 ruff UP017(timezone.utc → UTC)
|
2026-05-14 23:02:40 +08:00 |
|
小鱼开发
|
d4a13ece17
|
chore: 清理后端未使用 import(9 处)
ruff --select F401 --fix 自动修复:
- deps.py: user_crud
- caption.py: ApiResponse, VolcengineCaptionService
- points.py: UTC
- tasks.py: json
- voice.py: asyncio
- main.py: init_db
- broll_category.py: Text, ARRAY
|
2026-05-14 22:40:01 +08:00 |
|
小鱼开发
|
689aef0946
|
refactor: 统一 sourceId 格式规范
规范: <source_type>_<user_id>_<timestamp_ms>
前端 4 处(projectId → userId):
- VideoGeneration: video_${userId}_${Date.now()}
- SubtitleBurning: subtitle_burn_${userId}_${Date.now()}
- VideoCompose: compose_${userId}_${Date.now()}
- CoverDesign: cover_design_${userId}_${Date.now()}
后端 4 处(浮点秒 → 毫秒整数):
- script.py polish: polish_${userId}_${int(time.time()*1000)}
- script.py title: title_${userId}_${int(time.time()*1000)}
- voice.py TTS: tts_${userId}_${int(time.time()*1000)}
- voice.py voice_clone: voice_clone_${userId}_${ts}_${voice_id}
(原裸传第三方 voice_id,现包装为规范格式)
Refs: P2-1
|
2026-05-14 21:18:59 +08:00 |
|
小鱼开发
|
28d75c84e1
|
chore: 删除死代码 caption.ts
该文件无任何外部引用,autoAlignCaption 未被使用。
实际字幕打轴业务走 Async Engine(VoiceSynthesis.tsx 内自行定义类型)。
Refs: P2-3
|
2026-05-14 20:46:47 +08:00 |
|
小鱼开发
|
7550559aa0
|
refactor: 清理未使用IPC命令、修正point_service注释与扣费逻辑、修复camelToSnake正则、优化vidu import
- 删除8个未使用IPC命令,保留validate_media_path
- file.rs返回类型优化为ApiResponse<()>
- point_service.consume()注释与签名一致
- VideoGeneration改为拼接成功后扣费
- 添加漏扣费风险注释
- 删除过时测试文件
- 修复camelToSnake连续大写字母问题
- vidu.py import移至模块顶层
Refs: P1-1~P1-6 技术债务清理
|
2026-05-14 17:45:28 +08:00 |
|
小鱼开发
|
cf1352ed41
|
fix: TTS合成成功弹窗显示后端实际扣费积分
|
2026-05-13 17:28:15 +08:00 |
|
小鱼开发
|
6728f9b012
|
fix: TTS去掉前置积分检查、扣费允许欠费,避免402打断流程
|
2026-05-13 16:52:57 +08:00 |
|
小鱼开发
|
4579fa78d4
|
feat: 操作按钮展示积分消耗提示
后端:
- 新增 GET /points/rules 返回积分计费规则列表
前端:
- 各操作按钮添加积分消耗提示:
- 固定积分: 生成脚本(5)/润色(1)/标题生成(1)/字幕烧录(2)/封面设计(2)/压制成片(5)
- 按秒计费: 配音合成/视频生成 显示'按秒计费'
|
2026-05-13 14:52:09 +08:00 |
|
小鱼开发
|
86486fa4d5
|
chore: 添加装修避坑脚本prompt(sq/3、wt/2)
|
2026-05-13 13:51:16 +08:00 |
|
小鱼开发
|
fc4ebb7de0
|
feat: 封面背景图迁移到数据库,按script_code分类获取
后端:
- 新建 mjk_cover_backgrounds 表(Alembic e02c96e264d9)
- CoverBackground模型/CRUD/Schema/API(GET /cover-backgrounds?script_code=)
前端:
- ScriptCreation保存categoryCode到store和meta.json
- CoverDesign从API获取背景图,替换bg-config.json
- 修复useEffect不响应categoryCode变化的bug
其他:
- 删除Rust遗留的generate_cover_image命令和burn_ass_subtitle_to_image函数
|
2026-05-13 11:07:11 +08:00 |
|
小鱼开发
|
353890df29
|
chore: 更新 prompt 配置与分类
|
2026-05-12 17:36:26 +08:00 |
|
小鱼开发
|
4cba598b17
|
feat: 视频生成积分按总时长一次性扣费 + 错误文案友好化 + 弹窗样式修复
- 视频生成积分规则:从按对口型实际时长计费改为按脚本规划总时长计费
- 前端 VideoGeneration:提交 lipSync 时传 plannedDuration + totalPlannedDuration + batchId
- 后端 video_handler:tick 预检用 planned_duration,扣费改为总时长一次性扣 + batch_id 幂等
- 后端 tasks.py:VideoParams 替换字段,余额检查用 planned_duration
- 前端按钮旁显示预计消耗积分
- 新增 errorMessage.ts:统一错误信息友好化转换
- ScriptCreation/VideoGeneration/VoiceSynthesis/SubtitleBurning/CoverDesign:弹窗错误文案改用友好提示
- ProgressModal.css:错误/成功文案添加折行样式
- ContentManagement.css:补全缺失的 settings-row 样式
- ScriptCreation:删除过时空状态文案和多余 Slider.css import
|
2026-05-12 12:36:39 +08:00 |
|
小鱼开发
|
dc5d0d4959
|
fix: TTS/润色/标题/克隆 API 前置积分检查 + 402 异常透传
- voice.py: synthesize/synthesize-batch/synthesize-file/clone/submit 添加前置积分检查
- script.py: polish/generate_title 添加前置积分检查
- 修复 HTTPException(402) 被外层 except Exception 吞掉变成 500 的问题
- 所有端点在执行业务前先检查余额,不足直接返回 402
|
2026-05-11 22:55:47 +08:00 |
|
小鱼开发
|
367c3d352c
|
fix: 任务创建 API 和 Scheduler 前置积分检查
- tasks.py: create_task 在写入 Redis 前检查积分余额,不足返回 402
- script_handler.py: tick 执行 AI 调用前预检积分
- video_handler.py: 提交 Vidu 任务前预检积分
- 避免余额不足的任务入队,即时反馈给用户
|
2026-05-11 22:06:01 +08:00 |
|
小鱼开发
|
873db1a26f
|
fix: 禁止积分余额变为负数
- point_service.consume 默认 allow_negative=False
- script.py / voice.py 捕获 ValueError(积分不足) 返回 402
- Scheduler 后置扣费余额不足时静默失败并记录日志
|
2026-05-11 21:47:26 +08:00 |
|
小鱼开发
|
447f3c2ffe
|
feat: 空镜素材系统数据库化 + 修复积分不足弹窗叠加
后端:
- 新增 BrollCategory/BrollMaterial/BrollTag 模型及表(mjk_categories/materials/tags)
- 新增 Alembic 迁移 69274ce979a5
- 新增 broll_category/broll_material CRUD 层
- 重构 material_service:删除 JSON 配置,改用 PostgreSQL + Redis 去重
- 新增 /materials/batch-match 接口,删除 /materials/reload
- usage_count 原子递增,Redis 失败自动降级
前端:
- materials API 改为 projectId 去重,新增 batchMatch
- VideoGeneration 批量匹配改用 batchMatch,删除 usedUrls 手动维护
- 修复积分不足时进度弹窗与充值弹窗叠加的 bug
- 操作前预检积分,不足时显示提示条+立即充值按钮
|
2026-05-11 17:40:38 +08:00 |
|
小鱼开发
|
95e55293c6
|
security: 全面生产安全加固与部署修复
后端安全:
- DEBUG 默认 True → False
- 彻底移除 AUTH_BYPASS 认证绕过
- 验证码不再明文打印到日志
- 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验
- python-jose → PyJWT, 更新 requirements.lock/uv.lock
- Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607)
- 修复 5 处 try_except_pass, 15 处加 nosec 注释
- 启用 Bandit pre-commit 钩子
前端安全:
- 配置完整 CSP 策略
- 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**)
- 移除硬编码 devToken
- 清理前端 TODO(美家卡智影命名统一)
部署修复:
- docker-compose.prod 增加 alembic 迁移步骤
- api + scheduler 增加 Redis 心跳健康检查
- Nginx 添加安全响应头
- Nginx client_max_body_size 100M → 500M
- .env.example 补充 UPLOAD_MAX_* 配置与安全注释
其他:
- /voice/upload 合并到 /upload/audio
- Rust 上传增加文件大小检查
- 清理 Rust 19 处 println! + 前端 21 处 console.info
- 修复 VideoCompose.tsx toast 未导入(已有bug)
|
2026-05-10 23:31:34 +08:00 |
|
小鱼开发
|
82108fd13c
|
fix(auth): PATCH /auth/me 会话隔离导致修改失败
current_user 来自 get_current_user 的数据库会话,和 update_me
的 db 不是同一个会话。直接修改对象后 commit 找不到变更。
修复:先用当前会话重新查询用户再修改。
|
2026-05-10 21:13:37 +08:00 |
|
小鱼开发
|
fe3b378117
|
fix(cors): 后端 CORS 允许 Tauri 桌面应用 origin
添加 tauri://localhost 到 CORS_ORIGINS 默认值,
解决 Tauri WebView 请求被跨域拦截的问题
|
2026-05-10 21:10:11 +08:00 |
|
小鱼开发
|
ea1b607aca
|
feat(profile): 拆分个人中心与账户设置,支持昵称编辑
后端:
- 新增 UpdateNicknameRequest schema
- 新增 PATCH /auth/me 修改昵称接口
前端:
- Profile.tsx 精简为纯资产中心(积分统计+最近记录+充值)
- 新建 Account.tsx 账户设置页(昵称编辑、手机号、退出登录)
- App.tsx + Sidebar.tsx 新增 account 路由和导航菜单
- 昵称修改后同步更新 authStore
|
2026-05-10 08:32:45 +08:00 |
|
小鱼开发
|
edc782b15b
|
fix(points): 积分明细首次加载、自定义Select、名词口径统一
- 修复首次进入积分明细无数据(日期就绪后才触发查询)
- 新增 CustomSelect 组件替换原生 select,绿色主题
- 下拉选项根据后端配置动态过滤(只展示有扣费的业务)
- 后端新增 /points/chargeable-types 接口
- 统一名词口径:消耗→消费、声音克隆→复刻、封面制作→设计、润色→文案润色
- 后端接口支持 source_type 查询参数(修复类型筛选不生效)
|
2026-05-10 07:39:08 +08:00 |
|
小鱼开发
|
a28a16921d
|
feat(recharge): 过期时间改2分钟 + 刷新图标 + 间距统一 + 骨架屏占位
|
2026-05-09 22:00:05 +08:00 |
|
小鱼开发
|
04e467e433
|
feat(points): 积分系统收尾 + 充值弹窗改造 + 命名统一
后端:
- 微信回调 db.commit 失败仍返回 SUCCESS,避免无限重试
- recharge() 加 order_id 幂等保护,防重复充值
- time_expire 使用北京时间(UTC+8),修复时区 bug
- 充值档位后端配置化(points-config.yaml + /recharge-options API)
- 代码审查 20 项修复(认证加固、扣费顺序、错误响应、状态同步等)
前端:
- 充值弹窗:自动轮询 + 【我已支付】手动兜底
- 二维码倒计时显示,过期后遮罩 + 刷新按钮
- 充值档位从后端动态加载
- 去掉 select/qrcode 弹窗标题,金额红色突出显示
- 全项目命名统一(视频生成/压制成片/配音合成/声音复刻等)
- Modal 关闭按钮独立于 title 显示
|
2026-05-09 21:29:35 +08:00 |
|
小鱼开发
|
0722225c62
|
feat(points): 积分流水表支持时长显示,说明字段简化
后端:
- PointTransaction 模型添加 duration 字段(float, nullable)
- PointTransactionItem schema 添加 duration
- consume() 新增 duration 参数,写入流水记录
- 各业务 description 统一简化为【脚本生成】【配音合成】等格式
- duration 类业务(tts/video)传入实际秒数
- Alembic 迁移: 95eb1a1c0af9_add_duration_to_point_transaction
前端:
- PointTransaction 类型添加 duration
- UsageDetail: 来源列 → 时长列(有值显示 xs,无值显示 -)
- 说明列直接显示后端返回的简化描述
|
2026-05-09 17:08:50 +08:00 |
|
小鱼开发
|
368fdfa094
|
fix(points): 修复积分系统联调 bugs
致命级(扣费不落库):
- /points/consume、/admin/recharge、/recharge/query/{id} 补单路径添加缺失的 db.commit()
- voice.py 三个端点(synthesize/synthesize-batch/clone/submit)consume 后添加 db.commit()
- script.py 两个端点(polish/generate-title)consume 后添加 db.commit()
严重级(运行时错误):
- 清理 points.py 对已删除 schema(ConsumeFreezeRequest 等)的导入
- 修复 schemas.ConsumeRequest 引用为直接导入 ConsumeRequest
- video_handler.py: duration 字符串类型安全转换 float()
- tasks.py VideoParams 添加 duration 字段并写入 Redis params
中等级(体验):
- CoverDesign: consumePoints 移到 exportPng() 成功后
- 三个消费页面 RechargeModal 添加 onRechargeSuccess 刷新余额
|
2026-05-09 16:00:28 +08:00 |
|
小鱼开发
|
c6eba97b43
|
feat(points): 积分消耗系统全链路集成
后端:
- 简化积分服务: 删除 freeze/settle/refund, 保留 consume/recharge/expire
- 计费配置化: config/points-config.yaml 驱动 fixed/duration/free 三种模式
- TTS 时长探测: app/utils/audio_utils.py (httpx + mutagen 纯 Python)
- Python 层扣费: script(5)/polish(1)/title(1)/voice_clone(200)/tts(按秒)/video(按秒)
- 字幕 free_services: caption/auto_align 不扣费
- 新增 POST /points/consume 端点(402余额预检)
- 新增 check_balance + /points/cost 返回 sufficient/balance/required
- 新增 expire_batches 定时回收, 接入 scheduler main(每5分钟)
- 删除废弃 tts_handler.py
- Alembic 迁移: 删除 frozen/total_refunded 字段
- 同步 requirements.lock 添加 mutagen
前端:
- Rust/IPC 层扣费: compose(5)/subtitle_burn(2)/cover_design(2)
- 字幕打轴改异步: 走 scheduler subtitle handler
- 对口型传 duration: VideoGeneration 传 actualDuration
- 创建 pointStore: 全局余额 + fetchBalance + 充值弹窗控制
- 402 欠费弹 RechargeModal: VideoGeneration/SubtitleBurning/CoverDesign
- 修复 VoiceDubbing.tsx 类型错误 (alignResult never)
- 同步 PointBalance 类型(删除 frozen/available/totalRefunded)
Refs: 积分消耗集成收尾
|
2026-05-09 15:42:54 +08:00 |
|
小鱼开发
|
63599a5b9e
|
chore: 短信签名改为【厦门美家卡科技】,验证码扩展码设置为 11
|
2026-05-09 11:20:17 +08:00 |
|
小鱼开发
|
6e79791694
|
refactor: 短信扩展码改为在 sms_service.py 中配置,不再从 .env 读取
- 移除 __init__ 中 settings.SMS_EXTENDED_CODE 的读取
- send_single_sms 增加 extended_code 参数,由调用方指定
- send_verification_code 通过类常量 EXT_CODE_VERIFICATION 配置扩展码
- 支持不同短信内容搭配不同扩展码
|
2026-05-09 10:35:20 +08:00 |
|
小鱼开发
|
54b3d2b3e7
|
fix: 创建充值订单后缺少 db.commit() 导致订单未持久化
- create_recharge_order 成功/失败路径均添加 await db.commit()
- 修复轮询 404 和微信支付回调找不到订单的问题
|
2026-05-08 22:05:45 +08:00 |
|
小鱼开发
|
8e5174c58c
|
fix: 修复轮询接口 CORS 头丢失 + CRUD 类型不匹配
- main.py: 自定义 exception_handler 手动添加 CORS 头,避免 500 响应被浏览器拦截
- crud/base.py: CRUDBase.get 的 id 参数改为 Any,兼容 int/BigInt 主键
- api/v1/points.py: query_recharge_status 去掉 str() 转换,直接传 int order_id
|
2026-05-08 21:56:56 +08:00 |
|
小鱼开发
|
566c94eb77
|
chore: 调整系统提示词文件命名
|
2026-05-08 21:16:55 +08:00 |
|
小鱼开发
|
092051210e
|
chore: 更新系统提示词文件
|
2026-05-08 21:15:02 +08:00 |
|
小鱼开发
|
105025ae4d
|
feat: 删除登录即注册逻辑,登录时用户不存在直接报错
- login_with_sms: get_or_create_by_mobile → get_by_mobile
- 用户不存在时返回 ValueError('用户不存在')
- send_code 保留用户存在性校验
|
2026-05-08 21:11:05 +08:00 |
|
小鱼开发
|
12f4e2f3e7
|
chore: 恢复短信验证码真实校验逻辑
|
2026-05-08 21:05:22 +08:00 |
|
小鱼开发
|
7a762a9e15
|
fix: SSE 踢人时 user_id 类型不匹配导致消息发不出去
- user.id 是 uuid.UUID 对象,_sse_connections 的 key 是字符串
- dict.get(UUID) 与 dict.get(str) 不匹配,queue 永远是 None
- 修复:_kick_old_device(str(user.id))
|
2026-05-08 20:55:05 +08:00 |
|