diff --git a/frontend/pages/asset-detail/asset-detail.vue b/frontend/pages/asset-detail/asset-detail.vue index 896fdaf..28e4b5f 100644 --- a/frontend/pages/asset-detail/asset-detail.vue +++ b/frontend/pages/asset-detail/asset-detail.vue @@ -242,6 +242,7 @@ import { ref, computed, onUnmounted } from 'vue'; import { onLoad, onShow, onHide, onUnload } from '@dcloudio/uni-app'; import { getAssetDetailApi, getMintOrderDetailApi, likeAssetApi, unlikeAssetApi, getAssetMaterialsApi, getAssetLikersApi } from '@/utils/api.js'; +import { reportEvent } from '@/utils/task-api.js'; import { getPreloadApi } from '@/utils/preloadApi/index'; import { getAssetCoverRealUrl } from '@/utils/assetImageHelper.js'; import LikeUsersModal from '@/pages/components/LikeUsersModal.vue'; @@ -857,6 +858,13 @@ onLoad((options) => { // 订阅跨页面点赞事件 uni.$on('assetLikeChanged', handleAssetLikeChangedExternal); + // 触发每日首次浏览藏品任务(spec §3 / Phase F.2) + // 后端幂等:completed/claimed 状态时 skip;本地不缓存避免跨天去重逻辑复杂 + const starIdBrowse = uni.getStorageSync('star_id') || 1; + reportEvent('daily_browse_asset', starIdBrowse).catch(err => { + console.error('上报浏览事件失败:', err); + }); + // craft_confirm 模式:不需要调用 loadData,而是加载本地表单数据 if (fromParam.value === 'craft_confirm') { craftConfirmMode.value = true; diff --git a/frontend/pages/exhibition/exhibition.vue b/frontend/pages/exhibition/exhibition.vue index 6db540d..181f43e 100644 --- a/frontend/pages/exhibition/exhibition.vue +++ b/frontend/pages/exhibition/exhibition.vue @@ -377,7 +377,6 @@ export default { import NftCard from '../components/NftCard.vue'; import { getMyGalleriesApi, placeAssetToGalleryApi, getMyAssetsApi, removeAssetFromGalleryApi, getUserGalleriesApi, getRandomGalleryApi } from '@/utils/api.js'; import { getAssetCoverRealUrl } from '@/utils/assetImageHelper.js'; - import { reportEvent } from '@/utils/task-api.js'; import GuideOverlay from "@/components/GuideOverlay.vue"; const store = useStore(); @@ -1561,12 +1560,6 @@ export default { // 加载展馆槽位信息 loadGallerySlots(); - // 上报每日首次预览事件 - const starId = uni.getStorageSync('star_id') || 1 - reportEvent('daily_browse_asset', starId).catch(err => { - console.error('上报预览事件失败:', err) - }) - // 启动倒计时定时器(每秒更新一次) countdownTimer = setInterval(() => { updateCountdowns(); diff --git a/frontend/pages/profile/myWorks.vue b/frontend/pages/profile/myWorks.vue index a3de6ba..0e154e1 100644 --- a/frontend/pages/profile/myWorks.vue +++ b/frontend/pages/profile/myWorks.vue @@ -218,7 +218,7 @@