Tensor 刷新后图片仍旧:检查已有刷新记录与元数据时间
链小知 · 进阶 · 核验 · 依官方文档整理
围绕已有refresh_metadata记录检查mint身份、响应空值、抓取时间与媒体URI,区分请求响应和实际数据变化,并保留一小时冷却及模型弃用边界。
开始前准备
- 已有脱敏POST刷新记录与刷新前后元数据;没有时使用官方schema建立记录表,不能宣称已刷新。
- Solana目标mint及采集时间;API key、账户认证信息从记录中删除。
- 此流程复核已有记录,不要求发刷新请求或连接钱包;范围为Refresh API1.0.0 Alpha参考。
1. 确认刷新的是哪一个mint
核对原请求是POST https://api.mainnet.tensordev.io/api/v1/trigger/refresh_metadata,mint位于query并为必填字符串。不要只保存展示名称、collId或图片URL。
将响应onchainId与原mint配对,并另记collId和slug;缺onchainId时保留身份未核实。文档对mint写string而非数组,不因为描述使用addresses复数就自行拼出批量传参方式。
检查结果:请求mint与已有响应身份能对应;同图或同名没有替代身份检查。
2. 分开权限、冷却与原错误
检查已有记录是否标注x-tensor-api-key认证方式,只记录头名和访问状态,不复制值。官方正文给出1小时cooldown,保留最近请求的原时间用于排查频繁重试。
文档没有说明冷却从何时开始、是否逐mint/key计算或专属错误码,所以不能仅凭两次请求相隔不到一小时就归因确定。400查看原message,422先查mint/格式等参数;未成功鉴权时不能推刷新费用或资产状态。
检查结果:错误记录包含HTTP状态、原message和请求时间;冷却仅为已知规则,具体失败原因按实际记录核对。
3. 检查200是否真的带有对象
该方法200整体schema允许null;MintWithColl模型还标deprecated。先判断响应是对象、null还是缺失,不能把200/null改写成“刷新成功且落库”。
对象里的metadataUri、metadataFetchedAt、files、attributes、lastSale等也可null,且未全部列为required。将缺字段与显式null分列。参考没有独立taskId/status队列回执,不能编造任务查询或等待分钟数。
检查结果:保留原响应形状;200空结果、字段未知与取得对象三种状态清楚区分。
4. 比较抓取时间与媒体路径
将前后metadataFetchedAt原始date-time字符串和采集时间放在同一表,按带时区值统一显示;没有时区或为null时不猜UTC/毫秒。metadataFetchedAt是元数据抓取字段,不等于区块最终性、市场成交或图片代理缓存失效。
分别比较metadataUri、imageUri、animationUri、files里的uri/type及attributes的trait_type/value。URI相同但内容是否改变、代理是否缓存,需要对应内容证据;只有响应对象时不要宣布源站或IPFS内容已经更新。
检查结果:能标出哪个字段变了、哪个时间更新或仍未知;图片旧与元数据旧没有被混为同一问题。
5. 隔离成交字段并写出可证结果
lastSale可能null;其price允许字符串或number,priceUnit枚举有SOL_LAMPORT/ETH_WEI,txAt为日期/字符串。保存金额原值与单位,不把该枚举推成Tensor所有EVM网络支持,也不把price作图片刷新进度。
结论按记录分别写“取得同mint对象但抓取时间未变”“字段有变化”“响应为空/版本不兼容待核”。没有前值或实际媒体内容时只说明已观察字段,不能宣称完整刷新完成。
检查结果:结论绑定mint、原响应、前后采集时间和字段变化,未知项有明确补证条件。
怎样确认完成
- 有同一mint的请求/响应、采集时间与元数据字段对照,或明确缺少哪些记录。
- 区分HTTP返回、对象字段变化、元数据抓取与媒体实际内容变化;没有执行刷新的证明不标成实测。
常见错误与边界
- 收到200或字段lastSale就认为刷新完成;该接口允许整个结果null。
- 在一小时冷却内无依据重复触发;没有文档支持的冷却计时细则或完成SLA。
- 把metadataFetchedAt的date-time按Unix毫秒解释,或把priceUnit枚举用作全网络矩阵。
- 参考模型deprecated与Alpha变更需按已有记录版本核对,不用旧schema强制修复当前服务数据。