6a11680f62
- schema: DirectUploadPrepareRequest 加 client_upload_id; DirectUploadPrepareResponse 加 duplicated/skip_transfer/asset_id(向后兼容) - _create_pending_asset: find-or-create 模式,先按 client_upload_id/file_hash 查现有记录,命中则复用并补齐字段,未命中才新建 - prepare_direct_upload: 签名 OSS 前按 file_hash/client_upload_id 去重, 命中直接返回 duplicated=true+skip_transfer=true;未命中正常签名并预建 PROCESSING 占位 asset(占位失败不阻塞签名) - _find_duplicate_asset 兜底规则细化:READY/ERROR 总命中;PROCESSING/ UPLOADING 仅当 hash 一致或占位无 hash 时命中,避免同文件名不同内容冲突 - 8 个新单测覆盖:首次带 hash、重复命中、client_upload_id 重试、 文件名兜底不命中 PROCESSING、兜底命中 READY、find-or-create 复用
xiaoxia-saas API
结构
app/core/:配置与基础能力app/api/:路由组织app/schemas/:请求响应模型app/dependencies.py:依赖注入入口main.py:FastAPI 启动入口
当前可用接口
GET /api/healthGET /api/projects?workspace_id=...POST /api/projects