feat: 邮箱注册验证 + 9项功能修复与优化
【认证系统】 - 新增邮箱验证码注册/登录流程 (sendEmailCode / verifyEmail / forgotPassword / resetPassword) - register-email 现在需要验证码 - 服务端新增 email_verification_codes 表 + patch-email-verification.js - App.tsx 登录后 emailVerified 检查提醒 - keyServerClient token 显式传递修复 401 错误 【电商模块】 - 自动推进: 策划完成后自动生成分镜图/视频 - 模特图选项 (性别/年龄/种族/体型/场景) 注入 AI 提示词 - 任务持久化指纹修复 (图片数量替代 blob URL) - 新增「视频换装」入口 (happyhorse-1.0-video-edit) 【剧本评分】 - 新增 .docx/.doc Word 文档支持 (ZIP解压+XML提取) - 历史记录支持点击查看/恢复评测结果 【画布】 - ReactFlow 节点禁止内置拖拽避免冲突 - 连接线拖拽弹窗优化 (预览线不消失, 弹窗跟踪鼠标) 【页面修复】 - 首页轮播图改为 aspect-ratio: 16/9 解决尺寸问题 - 资产库新增悬停删除按钮 - scriptEvalClient 改用服务端 /api/ai/chat 端点 - TokenUsagePage 未登录跳过 API 调用
This commit is contained in:
@@ -189,6 +189,40 @@
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.asset-card-wrapper {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.asset-card__delete {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
right: 6px;
|
||||
z-index: 2;
|
||||
display: none;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
background: var(--bg-panel);
|
||||
color: var(--fg-muted);
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
opacity: 0.85;
|
||||
transition: opacity 150ms, color 150ms;
|
||||
}
|
||||
|
||||
.asset-card-wrapper:hover .asset-card__delete {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.asset-card__delete:hover {
|
||||
opacity: 1;
|
||||
color: var(--fg-danger);
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.asset-preview-modal {
|
||||
padding: 14px;
|
||||
|
||||
@@ -725,9 +725,110 @@
|
||||
font-size: 42px;
|
||||
}
|
||||
|
||||
.compliance-page {
|
||||
min-height: 100%;
|
||||
background: #0d0d0f;
|
||||
color: var(--fg-body);
|
||||
}
|
||||
|
||||
.compliance-page__inner {
|
||||
width: min(940px, calc(100% - 48px));
|
||||
margin: 0 auto;
|
||||
padding: 40px 0 56px;
|
||||
}
|
||||
|
||||
.compliance-hero {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 16px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.compliance-hero__icon {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
flex: 0 0 54px;
|
||||
width: 54px;
|
||||
height: 54px;
|
||||
border: 1px solid rgba(var(--accent-rgb), 0.28);
|
||||
border-radius: 16px;
|
||||
background: rgba(var(--accent-rgb), 0.12);
|
||||
color: var(--accent);
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.compliance-hero__eyebrow {
|
||||
color: var(--accent);
|
||||
font-size: 12px;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.compliance-hero h1 {
|
||||
margin: 4px 0 8px;
|
||||
font-size: clamp(26px, 4vw, 38px);
|
||||
}
|
||||
|
||||
.compliance-hero p,
|
||||
.compliance-section p,
|
||||
.compliance-contact span {
|
||||
color: var(--fg-muted);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.compliance-card,
|
||||
.compliance-contact {
|
||||
border: 1px solid var(--border-subtle);
|
||||
border-radius: 18px;
|
||||
background: var(--bg-panel);
|
||||
box-shadow: var(--shadow-tight);
|
||||
}
|
||||
|
||||
.compliance-card {
|
||||
display: grid;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.compliance-section {
|
||||
display: grid;
|
||||
grid-template-columns: 52px minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
padding: 22px;
|
||||
border-bottom: 1px solid var(--border-weak);
|
||||
}
|
||||
|
||||
.compliance-section:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.compliance-section > span {
|
||||
color: var(--accent);
|
||||
font-size: 13px;
|
||||
font-weight: 950;
|
||||
}
|
||||
|
||||
.compliance-section h2,
|
||||
.compliance-section p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.compliance-section h2 {
|
||||
margin-bottom: 8px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.compliance-contact {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px 16px;
|
||||
margin-top: 16px;
|
||||
padding: 16px 18px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.community-review-page__inner,
|
||||
.report-page__inner {
|
||||
.report-page__inner,
|
||||
.compliance-page__inner {
|
||||
width: min(100% - 28px, 720px);
|
||||
padding-top: 24px;
|
||||
}
|
||||
@@ -786,4 +887,9 @@
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.compliance-hero,
|
||||
.compliance-section {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2809,6 +2809,26 @@
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.clone-ai-retry-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
min-height: 40px;
|
||||
padding: 0 20px;
|
||||
border: 1px solid rgba(var(--accent-rgb), 0.32);
|
||||
border-radius: 12px;
|
||||
background: rgba(var(--accent-rgb), 0.12);
|
||||
color: var(--accent);
|
||||
font-weight: 900;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s, transform 0.15s;
|
||||
}
|
||||
|
||||
.clone-ai-retry-btn:hover {
|
||||
background: rgba(var(--accent-rgb), 0.22);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.product-clone-page[data-tool="clone"] .clone-ai-preview-showcase {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(210px, 300px) 54px minmax(330px, 560px);
|
||||
@@ -7933,3 +7953,31 @@
|
||||
.clone-ai-adwizard__risk.is-medium { color: #faad14; }
|
||||
.clone-ai-adwizard__risk.is-high { color: #ff4d4f; }
|
||||
.clone-ai-adwizard__issues { margin: 0; padding-left: 16px; font-size: 12px; display: flex; flex-direction: column; gap: 4px; }
|
||||
|
||||
.clone-ai-video-outfit-upload {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.clone-ai-video-outfit-upload-btn {
|
||||
padding: 7px 16px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
border-radius: 8px;
|
||||
background: var(--bg-inset);
|
||||
color: var(--fg-body);
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
transition: border-color 150ms, background 150ms;
|
||||
}
|
||||
|
||||
.clone-ai-video-outfit-upload-btn:hover {
|
||||
border-color: var(--border-default);
|
||||
background: var(--bg-hover);
|
||||
}
|
||||
|
||||
.clone-ai-video-outfit-info {
|
||||
font-size: 12px;
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
@@ -316,7 +316,8 @@
|
||||
left: 50%;
|
||||
display: grid;
|
||||
width: clamp(214px, 17vw, 286px);
|
||||
height: clamp(122px, 9.8vw, 162px);
|
||||
height: auto;
|
||||
aspect-ratio: 16 / 9;
|
||||
place-items: center;
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
@@ -388,7 +389,8 @@
|
||||
|
||||
.omni-home__carousel-card.is-active {
|
||||
width: clamp(390px, 37vw, 620px);
|
||||
height: clamp(220px, 20.8vw, 350px);
|
||||
height: auto;
|
||||
aspect-ratio: 16 / 9;
|
||||
border-radius: clamp(16px, 1.8vw, 24px);
|
||||
box-shadow:
|
||||
0 18px 40px rgb(0 0 0 / 26%),
|
||||
|
||||
Reference in New Issue
Block a user