chore: v1 整理 — 清理历史文件、DDL 合并、文档归档

- 清理 1155 个已删除的历史文件(废弃 prompt_logs、tmp、旧 ops 脚本)
- export/ 数据文件从 git 移除(已在 .gitignore)
- demo-miniprogram 从 tmp/ 移入 apps/,添加 CLAUDE.md 注解
- DDL 合并:完整 schema 定义填充到 db/*/schemas/(从 docs/database/ddl/ 复制)
- 39 个 v1 迁移脚本归档到 db/_archived/migrations_v1_merged/
- 4 个迁移变更类 BD_Manual 文档归档到 docs/database/_archived/
- .gitignore 补充 .vite/ 和 apps/*.zip
- settings.json 添加 effortLevel 默认配置
- scripts/ops/ 新增运维脚本入库

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Neo
2026-04-06 00:39:27 +08:00
parent 6f8f12314f
commit 779b2f6d52
1340 changed files with 9124 additions and 132087 deletions

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,39 @@
Component({
properties: {
/** 是否显示 */
visible: {
type: Boolean,
value: true,
},
/** 跳转目标页面 */
targetUrl: {
type: String,
value: '/pages/chat/chat',
},
/** 可选:携带客户 ID 参数 */
customerId: {
type: String,
value: '',
},
/** 距底部距离rpxTabBar 页面用 200非 TabBar 页面用 120 */
bottom: {
type: Number,
value: 200,
},
},
methods: {
onTap() {
let url = this.data.targetUrl
if (this.data.customerId) {
url += `?customerId=${this.data.customerId}`
}
wx.navigateTo({
url,
fail: () => {
wx.showToast({ title: '页面跳转失败', icon: 'none' })
},
})
},
},
})

View File

@@ -0,0 +1,14 @@
<!-- AI 悬浮对话按钮 — SVG 机器人 + 渐变流动背景 -->
<view
class="ai-float-btn-container"
wx:if="{{visible}}"
style="bottom: {{bottom}}rpx"
bindtap="onTap"
>
<view class="ai-float-btn">
<!-- 高光叠加层 -->
<view class="ai-float-btn-highlight"></view>
<!-- 机器人 SVG小程序用 image 引用) -->
<image class="ai-icon-svg" src="/assets/icons/ai-robot.svg" mode="aspectFit" />
</view>
</view>

View File

@@ -0,0 +1,56 @@
/* AI 悬浮按钮 — 忠于 H5 原型:渐变流动背景 + 机器人 SVG */
/* H5: 56px → 56×2×0.875 = 98rpx */
.ai-float-btn-container {
position: fixed;
right: 28rpx;
z-index: 100;
}
.ai-float-btn {
width: 98rpx;
height: 98rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
/* 渐变动画背景 — 忠于 H5 原型 */
background: linear-gradient(135deg, #667eea 0%, #764ba2 25%, #f093fb 50%, #f5576c 75%, #667eea 100%);
background-size: 400% 400%;
animation: gradientShift 8s ease infinite;
box-shadow: 0 8rpx 40rpx rgba(102, 126, 234, 0.4);
}
.ai-float-btn:active {
transform: scale(0.95);
}
/* 高光叠加层 */
.ai-float-btn-highlight {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(145deg, rgba(255,255,255,0.2) 0%, transparent 50%, rgba(0,0,0,0.1) 100%);
border-radius: 50%;
pointer-events: none;
}
/* 背景渐变流动动画 */
@keyframes gradientShift {
0% { background-position: 0% 50%; }
25% { background-position: 50% 100%; }
50% { background-position: 100% 50%; }
75% { background-position: 50% 0%; }
100% { background-position: 0% 50%; }
}
/* SVG 图标 H5: 30px → 52rpx */
.ai-icon-svg {
height: 60rpx;
position: relative;
z-index: 1;
}