1. 20 Jul, 2026 3 commits
  2. 19 Jul, 2026 3 commits
  3. 17 Jul, 2026 8 commits
    • - 在 .env.example 添加 REVIEW_ACCESS_CODE 和 REVIEW_SESSION_TTL_SECONDS 配置项
      - 在 l2_review_dashboard.html 增加审核登录弹窗界面及样式
      - 实现异步登录流程,支持昵称和暗号输入,完成服务端认证
      - 使用本地存储和会话存储管理审核者昵称和认证令牌
      - 对所有编辑相关的 API 请求附加认证信息,实现服务端权限校验
      - 服务端新增审核登录和会话验证接口,支持暗号验证和会话续期
      - 审核操作接口添加会话有效性检查,非法或过期会话返回 401
      - 新增 ReviewAuthError 自定义异常用于认证错误处理
      - 修改入库脚本执行错误时返回更友好信息
      - 相关前后端代码统一处理认证状态,支持登录失效自动刷新提醒
      - README.md 中新增审核登录暗号配置及使用说明
      - 添加后端认证逻辑的单元测试,验证正确登录和错误拒绝情况
      沈秋雨 authored
    • - 调整已审核记录的识别条件,区分不同审核状态
      - 移除撤销审核权限中的审核人限制,允许所有审核人撤销
      - 修正 SQL 领取语句,避免错误筛选已审核记录的审核人字段
      - 更新前端领取逻辑,避免新建/合并/跳过等记录被错误领取
      - 增加多人审核首次启用时的数据库迁移说明
      - 前端页面增加审核任务领取、数据同步及冲突处理的详细说明
      - 添加单元测试对更新代码的覆盖和验证
      - 新增 title-norm Python 包相关项目配置及说明文档
      沈秋雨 authored
    • fix · 98d1d92a
      沈秋雨 authored
    • fix · ad342c08
      沈秋雨 authored
    • - 新增审核人身份录入和本地缓存功能,支持切换审核人并生成客户端令牌
      - 引入审核领取机制,支持防止多人同时修改同一条记录
      - 实现审核状态的乐观锁版本控制,防止并发更新冲突
      - 后端新增审核相关字段和索引,支持多审核人操作和审核状态管理
      - 在审核列表和详情页中展示审核状态、领取状态和审核人信息
      - 支持撤销审核、删除标注和入库操作,增加详细错误提示和冲突提示
      - 定时同步审核状态,自动刷新审核列表和详情,保持界面数据一致
      - 优化审核筛选条件,新增待审核、已审核、已提交过滤项
      - 前端增加同步通知提示,展示审核冲突和同步错误信息
      - 修改导出和导入逻辑,确保入库操作仅在 staging-db 环境进行
      沈秋雨 authored
    • 沈秋雨 authored
    • - 在L2审核面板新增音频播放器组件,实现播放、进度条、时间显示等交互
      - 音频播放器支持多个实例,点击播放按钮互斥播放
      - 页面布局中拆分详情为粘性区域和可滚动区域,更好展示新入库歌词和召回候选音频
      - 后端接口增强,返回查询和候选音频URL数据支持前端播放
      - 决策过滤条件扩展,支持l1命中、l2重复、l2审核、冲突、新歌、跳过等更多分类
      - 更新筛选逻辑和选项标签,提升用户筛选灵活性和准确性
      沈秋雨 authored
    • - 目标库名称由 hk_songs 修改为 hk_songs_test,新增中间表 hk_songs_import_staging
      - 添加测试环境 crawler_dev PostgreSQL 连接配置变量
      - 添加正式环境 archive_crawler PostgreSQL 连接配置变量
      
      refactor(check_record_titles): 调整平台原始标题核对逻辑
      
      - 变更核对数据库源为 archive_crawler 与 hikoon-data-spider
      - 按平台分表批量查询 spider 原始标题替代原录音名查询
      - 合并结果中使用 spider_title 与 crawler_title 精确比对
      - 输出 Excel 标题及字段相应更新,匹配时整行高亮
      - 修改脚本参数说明和默认批处理数量描述
      - 日志及信息输出文本调整以反映新数据源
      
      feat(fix_record_titles): 新增基于 spider 标题的归一化批量修复工具
      
      - 支持从 archive_crawler 读取待修复记录的推送关系
      - 结合 spider 标题,计算归一化标题和版本号
      - 支持对不同平台数据批量生成更新 SQL 预览或应用
      - 支持备份更新前数据,支持安全回退操作
      - 导出更新报告 Excel,突出显示变化字段
      - 支持长文本分批过滤,避免数据库字段长度异常
      - 增加命令行参数控制应用范围、批量大小及排除标题列表
      - 使用严格的 SQL 语句构造与变更检测优化更新效率
      - 实现基于 run_id 的多表回滚机制,保证数据一致性
      沈秋雨 authored
  4. 15 Jul, 2026 3 commits
  5. 14 Jul, 2026 2 commits
  6. 13 Jul, 2026 10 commits
  7. 12 Jul, 2026 1 commit
  8. 11 Jul, 2026 1 commit
    • - 新增 MySQL 和 PostgreSQL 连接池类,支持按需创建和自动回收连接
      - 增加连接池全局实例及其获取函数,实现连接复用
      - 修改原有连接获取函数,改用连接池管理连接
      - 添加 refresh_conn 函数用于检测和刷新断开的连接
      - 在 runner 模块中批处理循环前调用 refresh_conn 保证长时间任务连接可用
      - 用 close_all_pools 统一关闭所有连接池连接,替代原单独关闭调用
      - 提升长期运行任务的数据库连接稳定性与效率
      沈秋雨 authored
  9. 10 Jul, 2026 8 commits
    • - 扩展 run_etl.py,添加 --init-yinyan-records2 参数支持初始化 yinyan_song_records2
      - 提升 BATCH_SIZE 从 100 到 1000,提升批处理效率
      - 实现 _NulSafePgConnection 及 _NulSafePgCursor,自动清理 PostgreSQL 参数中的 NUL 字符,防止插入错误
      - 新增查询接口 iter_hk_songs_records2_batches 和 fetch_all_song_record_relations,用于提取满足 records2 条件的歌曲关联数据
      - 在 runner.py 中实现 initialize_yinyan_song_records2,写入所有合格歌曲关系并统一去除 records1 已存在的重复关系
      - 在 writer.py 中新增 insert_yinyan_song_records2 和 delete_yinyan_song_records2_existing_relations 函数,实现批量插入和基于 records1 的重复关系删除
      - 新增单元测试覆盖 NUL 字符清理、records2 插入及去重逻辑,保障代码质量和功能稳定性
      沈秋雨 authored
    • 沈秋雨 authored
    • 沈秋雨 authored
    • - 修改路径顺序,将平台(platform)调整至类别(category)之后
      沈秋雨 authored
    • - 引入
      - 修改查询条件,将 platform_song_id 为空视为未导入状态
      - 在标记资源转存失败时,将 platform_song_id 设置为哨兵值 -1
      - 更新测试用例,验证 platform_song_id 字段的正确更新及查询条件调整
      - 删除旧的 resource_transfer_failed 字符串常量及相关引用
      沈秋雨 authored
    • - 在 run_etl.py 添加 backfill-qq-invalid-covers 命令行选项
      - 配置文件中新增 HTTP_TRANSFER_RETRIES 和 RETRY_BACKOFF_SECONDS
      - oss.py 中实现下载资源的重试逻辑,避免超时和连接断开失败
      - runner.py 中引入资源必要性校验,确保音频、封面、歌词均成功转存
      - 实现根据歌词和封面有效性选择更合适的QQ录音记录进行替换
      - 实现 backfill_qq_invalid_covers 函数,处理无专辑占位封面的QQ歌曲
      - 无候选的QQ歌曲在crawler和yinyan记录中删除,并软删除 HK 歌曲
      - 资源转存失败的记录在yinyan_song_records标记,避免重复处理
      - run函数中增加对QQ、酷狗、网易备选录音的支持和筛选
      - 增加对应的数据库操作函数支持替换、删除以及状态标记
      - 测试覆盖下载重试、资源转存失败处理及选择替代录音逻辑
      - 所有下载失败均返回空URL,不阻断流程以保证稳定性
      - 异常处理增强,确保未成功上传资源的歌曲不入库
      - 未匹配到HK歌曲的情况增加日志警告及延迟重试机制
      沈秋雨 authored
    • - run_etl.py中新增--backfill-empty-singers参数支持回填操作
      - runner.py新增backfill_empty_singers主流程函数及qq、酷狗、网易分平台回填实现
      - writer.py新增查询缺失singers的歌曲及更新singers字段的数据库操作函数
      - 回填过程中处理歌手头像的转存及歌手与歌曲关联关系的维护
      - 支持批量分批次处理,避免长时间阻塞与重复无效查询
      - 完整回填流程整合蜘蛛库和pg库连接资源管理,并日志记录处理结果
      沈秋雨 authored
    • - 新增HTTP连接池配置,提升请求性能和资源复用
      - 使用requests Session统一管理HTTP连接,减少请求开销
      - 实现_url清洗函数,过滤无效或非法URL
      - 并行执行音频、封面、歌词及歌手头像的OSS转存任务,提升效率
      - 按平台统一构建导入数据payload,简化处理流程
      - 批量写入歌曲、歌手、专辑及关联关系,提升数据库操作性能
      - 替换原平台单独处理函数为统一预处理及写入方法
      - 取消原单线程顺序处理,改为线程池并发执行数据准备和导入
      - 获取平台歌曲及歌手信息支持传入缓存参数,减少重复查询
      - 优化异常处理及日志记录,提高稳定性和可维护性
      - 新增歌手索引和性别等字段辅助函数,完善歌手信息处理
      沈秋雨 authored
  10. 09 Jul, 2026 1 commit
    • - 将批量查询录音数从1000调整为100,适配具体需求
      - 新增按录音id批量查询录音函数,避免按歌曲id查询全部平台数据
      - 修改runner流程中以录音id批量预取录音数据,减少重复查询
      - 增加spider数据批量预取,避免逐条调用造成性能瓶颈
      - 优化写入yinyan_song_records时采用批量更新语句,提高更新效率
      - 新增测试覆盖fetch_platform_records_by_record_ids函数的查询准确性
      - 调整测试用例以适配新增的批量查询函数及写入逻辑
      沈秋雨 authored