feat(ops): ECR-007 行为分析与 ECR-008 内容运营后台
ci / h5 (push) Canceled after 0s
ci / api (push) Canceled after 0s
ci / ess-docs (push) Canceled after 0s

落地埋点 ingest/数据看板、首页宫格 CMS 与测评上下架;含账号引导、问答流式与免责声明去重,以及 review P1 审计同事务修复。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-07 02:26:16 +08:00
co-authored by Cursor
parent 7e9023f0a8
commit 7ab9add5dd
132 changed files with 8276 additions and 491 deletions
+52 -16
View File
@@ -1,8 +1,12 @@
<template>
<div class="card empty">
<HomeToolIcon name="ask" :size="56" />
<p>还没有个人档案完成愈心解码后再来提问回答会更贴合你</p>
<div class="card empty reveal">
<div class="av" aria-hidden="true">
<HomeToolIcon name="ask" :size="48" />
</div>
<p class="title">先建立你的个人档案</p>
<p class="desc">完成愈心解码后问答会结合你的性格与节律来回答更贴合你</p>
<router-link class="cta" to="/portrait">去愈心解码</router-link>
<router-link class="link" to="/profile">或手动创建档案</router-link>
</div>
</template>
@@ -12,30 +16,62 @@ import HomeToolIcon from '../HomeToolIcon.vue'
<style scoped>
.card {
background: var(--color-surface);
border-radius: var(--radius-xl);
padding: 16px;
box-shadow: var(--shadow-hero);
margin-bottom: 12px;
}
.card.empty {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
color: #666;
gap: 10px;
background: rgba(255, 255, 255, 0.92);
border-radius: var(--radius-xl);
padding: 28px 20px;
box-shadow: var(--shadow-hero);
border: 1px solid rgba(255, 255, 255, 0.95);
}
.av {
width: 72px;
height: 72px;
border-radius: 22px;
display: grid;
place-items: center;
background: linear-gradient(145deg, #ffe8e0, #ffd4c8);
margin-bottom: 4px;
}
.title {
font-family: var(--font-display);
font-size: 18px;
font-weight: 700;
color: var(--color-text-primary);
}
.desc {
font-size: 13px;
line-height: 1.55;
color: #9a8f8b;
max-width: 16em;
}
.cta {
margin-top: 6px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 12px 20px;
border-radius: 22px;
padding: 12px 22px;
border-radius: var(--radius-pill);
background: linear-gradient(135deg, #ff7a6e, var(--color-primary));
color: #fff;
font-weight: 600;
font-weight: 700;
font-size: 14px;
box-shadow: 0 6px 16px rgba(229, 77, 66, 0.28);
box-shadow: 0 8px 18px rgba(229, 77, 66, 0.28);
}
.link {
font-size: 12px;
color: #b0a49f;
text-decoration: underline;
text-underline-offset: 3px;
}
.reveal {
animation: rise 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes rise {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
</style>