auto backup 2026-08-13 22:00

This commit is contained in:
2026-08-13 22:00:04 +08:00
parent 38540abf8d
commit 8c8c42bc71
5 changed files with 116 additions and 105 deletions
+45 -13
View File
@@ -271,8 +271,7 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 32768,
"api": "openai-completions"
"maxTokens": 32768
},
{
"id": "deepseek-v4-pro",
@@ -288,8 +287,7 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 32768,
"api": "openai-completions"
"maxTokens": 32768
},
{
"id": "deepseek-v4-flash",
@@ -305,8 +303,7 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 8192,
"api": "openai-completions"
"maxTokens": 8192
},
{
"id": "glm-5.1",
@@ -323,8 +320,7 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 32768,
"api": "openai-completions"
"maxTokens": 32768
},
{
"id": "kim-k2.6",
@@ -340,8 +336,7 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 32768,
"api": "openai-completions"
"maxTokens": 32768
},
{
"id": "qwen3.5-plus",
@@ -358,16 +353,53 @@
"cacheWrite": 0
},
"contextWindow": 131072,
"maxTokens": 32768,
"api": "openai-completions"
"maxTokens": 32768
}
]
},
"openai": {
"baseUrl": "http://192.168.2.74:3000/v1",
"apiKey": "sk-vaYyq9RwzyLlvAvHHUXzOTWkbioP76YW58vKuplq2npSkfZr",
"api": "openai-completions"
},
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-893b90b270ad4697a0b0b24969964d79",
"api": "openai-completions",
"models": []
"models": [
{
"id": "deepseek-v4-pro",
"name": "DeepSeek V4 Pro",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 1,
"output": 2,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 384000
},
{
"id": "deepseek-v4-flash",
"name": "DeepSeek V4 Flash",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 1,
"output": 2,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 384000
}
]
}
}
}
@@ -1,46 +0,0 @@
{
"generatedBy": "openclaw-plugin-model-catalog-v1",
"providers": {
"deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"models": [
{
"id": "deepseek-v4-pro",
"name": "DeepSeek V4 Pro",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 1,
"output": 2,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 384000,
"api": "openai-completions"
},
{
"id": "deepseek-v4-flash",
"name": "DeepSeek V4 Flash",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 1,
"output": 2,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 384000,
"api": "openai-completions"
}
],
"api": "openai-completions",
"apiKey": "sk-893b90b270ad4697a0b0b24969964d79"
}
}
}
@@ -1,2 +1,2 @@
openclaw-workspace-attestation:v1
2026-08-12T14:58:28.426Z
2026-08-12T15:13:35.208Z
+10 -8
View File
@@ -9,15 +9,17 @@
- 公网 MySQL101.34.227.188:3306readonlyhost `%`(可任意来源直连)
- 公网 Redis101.34.227.188:6379AOF 持久化已支持)
## cc-square Node 轻服务(2026-08 替代 Spring Boot
- 位置:/home/yangxuan/cc-square/server/
- 架构:前端 → Node(Express) → MySQL(只读) + Redis(点击计数/排)
- 关键:MySQL 仅只读,点击次数只存 RedisZINCRBY/ZREVRANGE 纯点击倒序)
## cc-square Node 轻服务(2026-08 替代 Spring Boot,已上线
- 位置:/home/yangxuan/cc-square/server/VPS 部署:/opt/cc-squaregit 项目)
- 架构:前端 → nginx(/api rewrite) → Node(Express,48080) → MySQL(只读) + Redis(点击/排)
- 关键:MySQL 仅只读,点击次数只存 RedisZINCRBY/ZREVRANGE 纯点击倒序),不落库
- 初始化脚本:npm run init-redis(需先注入 MYSQL_PASSWORD/REDIS_PASSWORD 环境变量)
- 文档:DEPLOY.md(部署)/ FRONTEND-CHANGES.md(前端改造)
- 部署状态2026-08-12):pm2 运行,端口 48080,内存 ~45MB,内存占用远低于原 Spring Boot
- 前端已改造:env.js(baseUrl=/api,走 nginx 反代) + http.js(去认证) + nav.js(/app-api/tab/ → /tab/)
- 密码:MySQL readonly 密码 135246Redis 密码 5gynj20J(存放于 server/.env,供 Node 服务启动用)
- 文档:DEPLOY.md(部署/更新流程/ FRONTEND-CHANGES.md(前端改造)
- 部署(2026-08-12 生产生效):pm2 运行于 VPS,端口 48080,内存 ~45MB
- 前端已改造:baseUrl=/api + http.js(去认证) + nav.js(/tab/) + vite dev 代理=本机48080;鉴权已彻底清理(删 auth/token/login/qs)
- bookmark 已修复:排除 nav-left,返回 website 字段
- 密码:MySQL readonly 135246Redis 5gynj20J(放 .env 不入 git
- git 工作流:改代码→commit→push→VPS git pull→pm2 restart;禁止 scp 直接改 VPS 生产文件
## 工作日志
- 2026-08-12(去 Spring Boot 化 + Node 服务 VPS 部署):memory/2026-08-12.md
+60 -37
View File
@@ -1,6 +1,6 @@
# 工作日志 2026-08-12
## 主题:cc-square 去 Spring Boot 化 —— Node 轻服务 + Redis 点击计数
## 主题:cc-square 去 Spring Boot 化 —— Node 轻服务 + Redis 点击计数(已上线)
### 背景 / 起因
- VPS 内存紧张,需放弃部署重型的 Spring Boot 后端(yudao/ruoyi-vue-pro
@@ -13,73 +13,96 @@
3. 排序规则:**纯点击倒序**ZREVRANGE
4. Node 服务部署在 VPS
5. 前端 baseUrl 走 nginx `/api` 反代(rewrite 剥 /api → 48080
6. 彻底清理前端鉴权(方案 B:删 token/login/userInfo/auth.js/qs
### 最终架构
### 最终架构(已上线)
```
前端(cc-square) → nginx(/api rewrite) → Node(Express, 48080) → MySQL(只读) + Redis(点击/排序)
浏览器 → https://www.climbcube.cnnginx 托管前端 dist
└→ /api/tab/* → nginx(rewrite剥/api) → Node(Express, 48080) → MySQL(只读) + Redis(点击/排序)
```
### 连接凭据确认(已验证)
### 连接凭据(已验证)
- 公网 MySQL`101.34.227.188:3306`readonly,密码 135246host `%`(任意来源)
- 公网 Redis`101.34.227.188:6379`,密码 5gynj20JAOF 持久化
- 验证结果:MySQL 连接+查询通(cc_website 212行/cc_engine 23行/cc_website_type 11行
- cc_website 启用 124 条;字段:id/status/type_id/title/click/order/icon/url/description...
- cc_website_type 分类名为 **title** 列(非 name),且有 order
- cc_engine 无 order 列,排序仅按 click
- MySQL 数据:cc_website 212行(启用124)/cc_engine 23行/cc_website_type 11行
- 字段细节:cc_website_type 分类名是 **title** 列(非 name),有 ordercc_engine 无 order 列,仅按 click 排序
### 交付物(/home/yangxuan/cc-square/server/
| 文件 | 说明 |
|------|------|
| server.js | 主程序:静态托管 + /tab/* 接口 + Redis 计数/排序 |
| config.js | 配置(支持环境变量)|
| config.js | 配置(支持环境变量,不入 git|
| scripts/init-redis.js | Redis 历史点击导入(幂等)|
| ecosystem.config.js | pm2 配置 |
| package.json | 依赖 express/mysql2/redis/axios |
| .env.example | 环境变量模板 |
| DEPLOY.md | 部署文档(含完整 pm2 命令)|
| .env.example / .env | 环境变量模板 / 实际密码(.env 不入 git|
| DEPLOY.md | 部署文档(含完整 pm2 命令:日志/状态/启停/开机自启|
| FRONTEND-CHANGES.md | 前端改造说明 |
| README.md | 服务导航 |
### Node 服务接口(全部实测通过
### 接口(全部实测 200
| 方法 | 路径 | 数据源 |
|------|------|--------|
| GET | /tab/engine | MySQL cc_engine |
| GET | /tab/bookmark | MySQL cc_website_type 聚合 |
| GET | /tab/bookmark | MySQL 聚合(排除 nav-left,字段 website|
| GET | /tab/menu | MySQL |
| GET | /tab/quick?limit=N | Redis ZREVRANGE 点击排行 |
| GET | /tab/list-by-type?typeId=N | MySQL |
| GET | /tab/searchBookmark?keyword=x | MySQL |
| GET | /tab/weather/all | 高德API(未配key返回空,优雅降级)|
| GET | /tab/weather/all | 高德API(未配 key 返回空降级)|
| POST | /tab/quickCount | Redis ZINCRBY(书签)|
| POST | /tab/engineCount | Redis ZINCRBY(引擎)|
| GET | /health | 健康检查 |
### 前端改造(已完成)
1. `src/config/env.js`baseUrl 改为 `/api`nginx 反代)
2. `src/request/http.js`:重写精简版,去掉 token/key 认证
### 前端改造(已完成并 build
1. `src/config/env.js`baseUrl 固定 `/api`
2. `src/request/http.js`:重写精简版(去 token/key 认证,保留 code===0
3. `src/request/api/nav.js``/app-api/tab/``/tab/`
- 已 build 成功(1720 模块),响应格式兼容原 yudao `{code:0,data,msg}`
4. `vite.config.js`dev 代理 `/api` → 本机 48080rewrite 剥 /api
5. **方案 B 清理鉴权**:删 auth.js、store 的 token/userInfo/setToken/clearAuth/logout、website.js 的 token/info key、util 的 info 残留、Search.js 登录判断改"添加引擎"提示、package.json 移除 qs
- 构建成功,dist 无鉴权代码,主 JS 变小(index 5.92→5.64kB
### 部署状态
- **本机(xuan-main**Node 服务 pm2 跑通验证(48080),接口全通
- **VPSxuan-vps / 101.34.227.188**
- 已备份旧前端 → `/usr/share/nginx/html.bak.20260812`
- apt 装 Node v22.23.1 + pm2 7.0.3(用户手动装)
- server 代码在 `/opt/cc-square-server/`npm install 完成(104 包
- `.env` 已建(含密码,600 权限)
### bookmark 字段修复(重要)
- 前端 Bookmark/index.vue 渲染 `item.website`,初版 Node 返回 `list` → 书签不展示
- 修复:server.js bookmark 接口 `list``website`
- 并排除 nav-leftand yudao 原逻辑:title!='nav-left' and status=0),只保留有书签的分类
### 部署状态(已完成,生产生效
- **本机(xuan-main**Node pm2 跑通,dev 环境 vite(5173) 代理正常
- **VPSxuan-vps / 101.34.227.188Debian 12**
- Node v22.23.1 + pm2 7.0.3(已装)
- 项目 git clone 在 `/opt/cc-square`gitee: xuan-java/cc-square
- Node 服务 pm2 运行,脚本 `/opt/cc-square/server/server.js`,端口 48080,内存 ~45MB
- `.env` + `config.js``/opt/cc-square/server/`config.js 需手动补,不入 git
- 旧目录 `/opt/cc-square-server` 已删/不用,统一 `/opt/cc-square`
- 前端 dist 已部署 `/usr/share/nginx/html`(保留 admin/ariang/tools 子目录)
- 备份:`/usr/share/nginx/html.bak.20260812``htmlbak-cc-20260812.tar.gz`
- Redis 已初始化(120 书签 / 3 引擎)
- **Node 服务启动 + 前端 dist 替换由用户手动完成**
- **nginx**:主站 climbcube.conf 已有 `/api` 反代 → `rewrite ^/api(.*)$ $1 break; proxy_pass http://localhost:48080;`
- 前端静态目录:`/usr/share/nginx/html`index.html 即 cc-square 导航页)
- **nginx**:主站 climbcube.conf `location /api { rewrite ^/api(.*)$ $1 break; proxy_pass http://localhost:48080; }`
- apiadmin→8080, yudaoapi→内网192.168.195.185:48080(旧配置保留)
### 待办 / 遗留
- [ ] VPS 上启动 Node 服务(用户手动):pm2 start ecosystem.config.js
- [ ] VPS 替换前端 dist 至 /usr/share/nginx/html(用户手动)
- [ ] 前端 baseUrl 需为 /api(本机已改,dist 需重新 build 后上传)
- [ ] 天气接口需高德 key
- [ ] 安全建议:readonly host `%` 建议收窄(需用户确认
### 验证结果(生产外网)
- `https://www.climbcube.cn/` → 200,前端正常
- `https://www.climbcube.cn/api/tab/{engine,bookmark,menu,quick}` → 全 200
- bookmark 返回 8 个真实分类(资源15/AI5/文档20/国家站点5/学习11/工具22/工作台25/办公15),无 nav-left
### git 工作流约定(避免再冲突
- 统一走 git:本机 commit→push → VPS `git pull` → pm2 restart
- **禁止直接 scp 覆盖 VPS 生产文件**(会绕过 git 产生冲突)
- 本次冲突解决:git checkout -- server.js(内容与远端一致)+ pull fast-forward
### 更新生效规则
- 改 server.js/config.js → `pm2 restart cc-square`
- 改 package.json 依赖 → `npm install` + restart
- 改前端 src/* → `npm run build` + 部署 dist 到 nginx
- 改 .env → `set -a && source .env` + restart
### 遗留 / 待办
- [ ] 天气接口需高德 key(amapKey 占位,未启用)
- [ ] 安全建议:readonly host `%` 建议收窄(需用户确认后执行)
- [ ] 前端 dist 已部署,但 git 仓库 /usr/share/nginx/html 与 /opt/cc-square 前端源码的关系需注意(dist 不入 git?待确认)
### 环境备注
- 本机 shell 是 zsh(注意 pkill/zsh 通配符坑)
- VPS 是 Debian 12内存 3.7G,磁盘 69G/32G 已用
- VPS 上多处是 debian 用户属主(/usr/share/nginx/html, /opt/cc-square-server
- 本机 shell 是 zsh(注意 pkill/zsh 通配符坑ssh 到 VPS 时 pm2/curl 需绝对路径或 export PATH
- VPS 内存 3.7G,磁盘 69G/32G 已用
- VPS 多文件 debian 属主;Node 服务 root 运行(pm2