前端配置迁至 config/local.js,完善支付、模板库与部署脚本

- 页面直接引用 local.js 设置 SOON_DEPLOY_CONFIG,移除 deploy-config
- Docker sync-config 生成 local.js;更新 README 与 agent-core 说明
- 模板库自动扫描 .soon;新增后端部署/种子/排查脚本
- 完善支付配置、订阅弹窗与后台支付管理页

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
24kycj
2026-06-08 20:48:51 +08:00
parent 88c6ce8ccc
commit 152228d41f
47 changed files with 1448 additions and 486 deletions
+28
View File
@@ -966,6 +966,34 @@
gap: 10px;
}
.soon-pay-channels--single {
grid-template-columns: 1fr;
}
.soon-pay-channel.is-fixed {
cursor: default;
}
.soon-pay-channel.is-fixed:hover {
border-color: rgba(255, 255, 255, 0.08);
background: rgba(0, 0, 0, 0.18);
}
.soon-pay-channel.is-fixed.is-active:hover {
border-color: var(--soon-accent);
background: rgba(0, 150, 136, 0.07);
}
.soon-pay-channel.is-fixed .soon-pay-channel__radio {
border-radius: 50%;
background: currentColor;
opacity: 0.85;
}
.soon-pay-channel.is-fixed.is-active .soon-pay-channel__radio::after {
display: none;
}
.soon-pay-channel {
display: flex;
align-items: center;
+28 -45
View File
@@ -271,44 +271,12 @@
animation: soon-fadeInUp 0.4s;
}
.soon-member-wrap { max-width: 960px; margin: 0 auto; }
.soon-template-card {
flex: 1 1 0;
min-width: 0;
max-width: 148px;
background: var(--soon-bg-panel);
border: 1px solid var(--soon-border-subtle);
border-radius: var(--soon-radius-sm);
overflow: hidden;
cursor: pointer;
transition: transform 0.2s var(--soon-ease), border-color 0.2s, box-shadow 0.2s;
animation: soon-fadeInUp 0.4s var(--soon-ease) backwards;
}
.soon-templates-strip .soon-empty--inline {
flex: 1 1 100%;
width: 100%;
min-width: 100%;
}
.soon-template-card:hover {
border-color: var(--soon-accent);
background: var(--soon-bg-elevated);
}
.soon-template-card img {
width: 100%;
height: 100px;
object-fit: cover;
background: var(--soon-bg-deep);
}
.soon-template-card span {
display: block;
padding: var(--soon-space-sm);
font-size: 12px;
color: var(--soon-text);
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.soon-member-header {
@@ -506,9 +474,12 @@
}
.soon-home .card-list > .card,
.soon-home-recent-grid > .card {
.soon-home-recent-grid > .card,
.soon-home .soon-templates-strip > .card {
width: 168px;
max-width: 168px;
flex-shrink: 0;
margin: 0;
}
.soon-section--recent #filePager {
@@ -518,7 +489,8 @@
border-top: 1px solid var(--soon-border-subtle);
}
.soon-home .card-list .rect {
.soon-home .card-list .rect,
.soon-home .soon-templates-strip .rect {
width: 168px;
height: 160px;
background: var(--soon-bg-panel);
@@ -535,11 +507,13 @@
overflow: hidden;
box-sizing: border-box;
}
.soon-home .card-list .rect:hover {
.soon-home .card-list .rect:hover,
.soon-home .soon-templates-strip .rect:hover {
border-color: var(--soon-accent);
background: var(--soon-bg-elevated);
}
.soon-home .card-list .rect img {
.soon-home .card-list .rect img,
.soon-home .soon-templates-strip .rect img {
display: block;
width: 100%;
height: 135px;
@@ -553,9 +527,12 @@
border-radius: 4px;
transition: transform 0.3s;
}
.soon-home .card-list .rect1 img { transform: scale(0.8); }
.soon-home .card-list .rect1:hover img { transform: scale(0.85); }
.soon-home .card-list .tip {
.soon-home .card-list .rect1 img,
.soon-home .soon-templates-strip .rect1 img { transform: scale(0.8); }
.soon-home .card-list .rect1:hover img,
.soon-home .soon-templates-strip .rect1:hover img { transform: scale(0.85); }
.soon-home .card-list .tip,
.soon-home .soon-templates-strip .tip {
flex-shrink: 0;
width: 100%;
height: 25px;
@@ -571,7 +548,8 @@
border-top: 1px solid var(--soon-border-subtle);
background: rgba(0, 0, 0, 0.15);
}
.soon-home .card-list .rect:hover .tip { color: var(--soon-text-strong); }
.soon-home .card-list .rect:hover .tip,
.soon-home .soon-templates-strip .rect:hover .tip { color: var(--soon-text-strong); }
.soon-home .card-list .soon-file-card__actions {
position: absolute;
top: 6px;
@@ -636,7 +614,8 @@
max-width: none;
}
.soon-home .card-list .rect:not(.rect1)::after {
.soon-home .card-list .rect:not(.rect1)::after,
.soon-home .soon-templates-strip .rect:not(.rect1)::after {
content: '';
position: absolute;
left: 50%;
@@ -736,18 +715,22 @@
min-height: 300px;
}
.soon-home .card-list > .card,
.soon-home-recent-grid > .card {
.soon-home-recent-grid > .card,
.soon-home .soon-templates-strip > .card {
width: 148px;
max-width: 148px;
}
.soon-home .card-list .rect {
.soon-home .card-list .rect,
.soon-home .soon-templates-strip .rect {
width: 148px;
height: 150px;
}
.soon-home .card-list .rect img {
.soon-home .card-list .rect img,
.soon-home .soon-templates-strip .rect img {
height: 125px;
}
.soon-home .card-list .rect:not(.rect1)::after {
.soon-home .card-list .rect:not(.rect1)::after,
.soon-home .soon-templates-strip .rect:not(.rect1)::after {
transform: translate(-50%, calc(-50% - 12px));
width: 20px;
height: 20px;