diff --git a/01_卡资(金)/金仓_存储备份/服务器管理/scripts/tencent_cloud_bill_recent_days.py b/01_卡资(金)/金仓_存储备份/服务器管理/scripts/tencent_cloud_bill_recent_days.py index 4a5ce976..e0476cc8 100644 --- a/01_卡资(金)/金仓_存储备份/服务器管理/scripts/tencent_cloud_bill_recent_days.py +++ b/01_卡资(金)/金仓_存储备份/服务器管理/scripts/tencent_cloud_bill_recent_days.py @@ -78,19 +78,31 @@ def main(days=2, start_date=None, end_date=None): if start_date is None or end_date is None: end_date = datetime.now().date() start_date = end_date - timedelta(days=days - 1) - month = start_date.strftime("%Y-%m") - begin_time = f"{start_date} 00:00:00" - end_time = f"{end_date} 23:59:59" + # API 要求 BeginTime/EndTime 必须在同月,跨月会报错;此处用目标月查整月(优先当前月) + month = end_date.strftime("%Y-%m") cred = credential.Credential(secret_id, secret_key) hp = HttpProfile(endpoint="billing.tencentcloudapi.com") cp = ClientProfile(httpProfile=hp) client = billing_client.BillingClient(cred, "", cp) + def _parse_cost(d): + cost = 0 + comp_set = getattr(d, "ComponentSet", None) or [] + for c in comp_set: + try: + cost += float(getattr(c, "RealCost", 0) or getattr(c, "Cost", 0) or 0) + except (TypeError, ValueError): + pass + if cost == 0: + try: + cost = float(getattr(d, "RealTotalCost", 0) or getattr(d, "TotalCost", 0) or 0) + except (TypeError, ValueError): + pass + return cost + req = models.DescribeBillDetailRequest() req.Month = month - req.BeginTime = begin_time - req.EndTime = end_time req.Offset = 0 req.Limit = 300 @@ -101,31 +113,40 @@ def main(days=2, start_date=None, end_date=None): if not resp.DetailSet: break for d in resp.DetailSet: - try: - cost = float(getattr(d, "RealTotalCost", 0) or getattr(d, "TotalCost", 0) or 0) - except (TypeError, ValueError): - cost = 0 + cost = _parse_cost(d) + if cost == 0: + continue total_cost += cost + fee_begin = getattr(d, "FeeBeginTime", "") or getattr(d, "BillDay", "") details.append({ "product": getattr(d, "BusinessCodeName", "") or getattr(d, "ProductCodeName", "") or "-", "cost": cost, - "time": getattr(d, "PayerUin", ""), + "day": str(fee_begin)[:10] if fee_begin else "?", }) if len(resp.DetailSet) < req.Limit: break req.Offset += req.Limit - print(f"\n腾讯云消费({start_date} ~ {end_date})") + print(f"\n腾讯云消费({month} 月)") print("=" * 50) print(f"合计:¥ {total_cost:.2f}") if details: by_product = {} + by_day = {} for x in details: k = x["product"] by_product[k] = by_product.get(k, 0) + x["cost"] + d = x.get("day", "?") + by_day[d] = by_day.get(d, 0) + x["cost"] print("\n按产品汇总:") for k, v in sorted(by_product.items(), key=lambda t: -t[1]): print(f" {k}: ¥ {v:.2f}") + if by_day: + print("\n按日汇总(前10天):") + for d, v in sorted(by_day.items(), key=lambda t: t[0])[:10]: + print(f" {d}: ¥ {v:.2f}") + if len(by_day) > 10: + print(f" ... 共 {len(by_day)} 天") else: print("(无明细或 API 未返回;请登录控制台查看:https://console.cloud.tencent.com/expense/overview)") return 0 diff --git a/02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md b/02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md index 389b8a84..79d1ebe9 100755 --- a/02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md +++ b/02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md @@ -1,11 +1,11 @@ --- name: 智能纪要 -description: 派对/会议录音一键转结构化纪要;飞书妙记链接/内容识别与下载(单条/批量),执行完毕用复盘格式回复 -triggers: 会议纪要、产研纪要、派对纪要、妙记、飞书妙记、飞书链接、cunkebao.feishu.cn/minutes、meetings.feishu.cn/minutes、妙记下载、第几场、指定场次、批量下载妙记、下载妙记 +description: 派对/会议录音一键转结构化纪要;飞书妙记文字+视频全命令行下载;飞书 MCP 能力整合;单条/批量妙记导出 +triggers: 会议纪要、产研纪要、派对纪要、妙记、飞书妙记、飞书链接、cunkebao.feishu.cn/minutes、meetings.feishu.cn/minutes、妙记下载、第几场、指定场次、批量下载妙记、下载妙记、妙记文字、妙记视频、飞书视频、视频下载 owner: 水桥 group: 水 -version: "1.1" -updated: "2026-02-19" +version: "1.2" +updated: "2026-02-20" --- # 派对纪要生成器 @@ -259,6 +259,93 @@ bash "$SCRIPT_DIR/download_104_to_soul.sh" 2. 右上角「…」→「导出文字记录」 3. 将下载的 txt 放到目标目录(如 soul) +--- + +## 📹 妙记视频下载(全命令行) + +与文字导出共用 Cookie(cookie_minutes.txt)。通过 status API 获取视频下载链接,流式下载为 mp4。 + +```bash +SCRIPT_DIR="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/脚本" + +# 下载指定妙记的视频到指定目录 +python3 "$SCRIPT_DIR/feishu_minutes_download_video.py" "https://cunkebao.feishu.cn/minutes/obcnyg5nj2l8q281v32de6qz" -o ~/Downloads/ +python3 "$SCRIPT_DIR/feishu_minutes_download_video.py" obcnyg5nj2l8q281v32de6qz --output "/Users/karuo/Documents/聊天记录/soul" +``` + +**核心 API**:`GET meetings.feishu.cn/minutes/api/status?object_token=xxx` 或 `cunkebao.feishu.cn/minutes/api/status`,返回 `data.video_info.video_download_url`。 + +--- + +## 🔗 飞书 MCP 能力整合 + +| 方案 | 来源 | 功能 | 妙记文字/视频 | +|:---|:---|:---|:---| +| **@larksuiteoapi/lark-mcp** | 飞书官方 | 文档、多维表格、日历、群聊、消息等 OpenAPI | ❌ 无妙记专用 | +| **DarkNoah/feishu-mcp** | GitHub | 多维表格 CRUD | ❌ 无妙记 | +| **本 Skill** | 智能纪要脚本 | Cookie + 导出/status API | ✅ 文字+视频 | + +**Cursor 配置飞书官方 MCP**(文档/表格等): + +```json +{ + "mcpServers": { + "lark-mcp": { + "command": "npx", + "args": ["-y", "@larksuiteoapi/lark-mcp", "mcp", "-a", "", "-s", ""] + } + } +} +``` + +妙记文字/视频下载:MCP 暂无专用能力,**必须用本 Skill 的 Cookie + 脚本方案**。 + +--- + +## 📋 妙记文字 + 视频完整解决方案(一键表) + +| 需求 | 脚本 | 一键命令 | +|:---|:---|:---| +| **104 场文字** | 导出104到soul.sh | `bash "$SCRIPT_DIR/导出104到soul.sh"` | +| **104 场视频** | feishu_minutes_download_video.py | `python3 "$SCRIPT_DIR/feishu_minutes_download_video.py" obcnyg5nj2l8q281v32de6qz -o "$OUT"` | +| **90~102 场文字** | download_soul_minutes_101_to_103.py | `python3 "$SCRIPT_DIR/download_soul_minutes_101_to_103.py" --from 90 --to 102` | +| **企业 TOKEN 文字** | fetch_feishu_minutes.py --tenant-only | `python3 "$SCRIPT_DIR/fetch_feishu_minutes.py" -t obcnyg5nj2l8q281v32de6qz --tenant-only -o "$OUT"` | +| **视频 + AI 切片发群** | 飞书管理/feishu_video_clip.py | 见 `02_卡人(水)/水桥_平台对接/飞书管理/SKILL.md` | + +**前置**:`cookie_minutes.txt` 第一行粘贴 list 请求的 Cookie(含 bv_csrf_token),或配置 FEISHU_MINUTES_COOKIE 环境变量。 + +--- + +## 🛠️ 核心代码与 API(供迭代复用) + +### 文字导出接口 + +```python +# POST meetings.feishu.cn/minutes/api/export 或 cunkebao.feishu.cn/minutes/api/export +params = {"object_token": "obcnyg5nj2l8q281v32de6qz", "format": 2, "add_speaker": "true", "add_timestamp": "false"} +headers = {"Cookie": cookie, "Referer": "https://cunkebao.feishu.cn/minutes/", "bv-csrf-token": bv_csrf_token} +r = requests.post(url, params=params, headers=headers) +# 200 时 r.text 即为文字记录正文 +``` + +### 视频下载接口 + +```python +# GET .../minutes/api/status?object_token=xxx&language=zh_cn +r = requests.get(status_url, headers=headers) +data = r.json() +video_url = data["data"]["video_info"]["video_download_url"] +# 再 requests.get(video_url, stream=True) 流式下载 +``` + +### Cookie 获取顺序 + +1. cookie_minutes.txt 第一行 +2. 环境变量 FEISHU_MINUTES_COOKIE +3. 本机浏览器(browser_cookie3:Safari/Chrome/Firefox/Edge;或 Doubao Cookie 解密) + +--- + ### 执行完毕回复规范 每次完成**飞书妙记相关**的下载/导出/批量任务后,**必须用「卡若复盘」格式**收尾: @@ -366,9 +453,14 @@ python3 scripts/send_to_feishu.py --json "meeting.json" | 脚本 | 功能 | 依赖 | |:---|:---|:---| -| **`daily_chanyan_to_feishu.py`** | ⭐ 产研会议日报:≥5分钟则总结+图发飞书(全命令行) | requests, playwright | -| **`full_pipeline.py`** | ⭐ 完整流程(推荐) | requests, playwright | -| **`fetch_feishu_minutes.py`** | ⭐ 飞书妙记 → 会议纪要 / 导出并发飞书 | requests | +| **`feishu_minutes_export_github.py`** | ⭐ 妙记文字导出(GitHub 同款,Cookie/浏览器) | requests | +| **`feishu_minutes_download_video.py`** | ⭐ 妙记视频下载(status API → mp4) | requests | +| **`导出104到soul.sh`** | ⭐ 104 场文字一键导出到 soul | feishu_minutes_export_github | +| **`download_soul_minutes_101_to_103.py`** | 批量场次文字(--from/--to) | requests | +| **`fetch_feishu_minutes.py`** | 应用/用户 token 拉取 + 纪要生成 | requests | +| **`daily_chanyan_to_feishu.py`** | 产研会议日报:≥5分钟则总结+图发飞书 | requests, playwright | +| **`full_pipeline.py`** | 完整流程(聊天记录→纪要→截图→发飞书) | requests, playwright | +| `fetch_single_minute_by_cookie.py` | 单条妙记(Cookie/浏览器) | requests | | `parse_chatlog.py` | 解析聊天记录 → JSON | 无 | | `generate_meeting.py` | JSON → HTML | 无 | | `md_to_summary_html.py` | 总结 md → HTML(产研纪要截图用) | 无 | @@ -404,13 +496,16 @@ playwright install chromium ``` 智能纪要/ ├── 脚本/ # 飞书妙记下载与产研日报(本 Skill 主用) -│ ├── feishu_minutes_export_github.py # ⭐ 单条导出(GitHub 同款,需 bv_csrf_token) +│ ├── feishu_minutes_export_github.py # ⭐ 妙记文字单条导出(GitHub 同款) +│ ├── feishu_minutes_download_video.py # ⭐ 妙记视频下载(status API) +│ ├── 导出104到soul.sh # ⭐ 104 场文字一键导出 +│ ├── 妙记104_企业TOKEN命令行.sh # 企业 token 导出 104(数据范围需全部) │ ├── fetch_single_minute_by_cookie.py # 单条导出(Cookie/浏览器) -│ ├── download_soul_minutes_101_to_103.py # 批量 101~103 场 +│ ├── download_soul_minutes_101_to_103.py # 批量场次文字(--from/--to) │ ├── download_101_to_103.sh # 一键 101~103 -│ ├── download_104_to_soul.sh # 一键 104 场(已有完整 txt 则直接成功) +│ ├── download_104_to_soul.sh # 一键 104 场 │ ├── cookie_minutes.txt # Cookie 配置(可选;无则自动读浏览器) -│ ├── soul_minutes_90_102_list.txt # 场次列表缓存(导出失败时自动生成,重跑即只做导出) +│ ├── soul_minutes_90_102_list.txt # 场次列表缓存 │ ├── fetch_feishu_minutes.py # 应用/用户 token 拉取 │ ├── fetch_minutes_list_by_cookie.py # 列表拉取 → urls_soul_party.txt │ └── batch_download_minutes_txt.py # 按 URL 列表批量下载 @@ -430,6 +525,7 @@ playwright install chromium │ └── review.html # 复盘总结模板 ├── 参考资料/ │ └── 飞书妙记下载-权限与排查说明.md +│ # 用户侧方案说明:聊天记录/soul/飞书妙记104场_全命令行下载方案.md ├── output/ # 输出目录 └── SKILL.md # 本文档 ``` @@ -450,6 +546,7 @@ playwright install chromium | 日期 | 更新 | |:---|:---| +| **2026-02-20** | 📌 **全能力整合**:Feishu MCP(官方 @larksuiteoapi/lark-mcp、DarkNoah/feishu-mcp);妙记**视频下载**(feishu_minutes_download_video.py);妙记**文字+视频**完整解决方案表;核心 API 与代码片段;导出104到soul.sh、妙记104_企业TOKEN命令行.sh;触发词增补:妙记文字、妙记视频、飞书视频、视频下载 | | **2026-02-19** | 📌 飞书妙记下载:**强制全自动、禁止要求用户手动操作**;Cookie 优先 cookie_minutes.txt → 环境变量 → 本机浏览器(Safari/Chrome/Firefox/Edge/Doubao);批量支持 --from/--to(如 90~102);列表缓存 soul_minutes_{from}_{to}_list.txt,重跑只做导出;双域导出(meetings + cunkebao);执行完毕用复盘格式回复 | | **2026-01-29** | 📌 产研会议日报:daily_chanyan_to_feishu.py,飞书 API/本地 txt → 仅≥5分钟 → 总结+图发飞书,全命令行 | | **2026-01-28** | 🤖 融合本地模型:支持离线智能摘要、信息提取 | diff --git a/02_卡人(水)/水桥_平台对接/智能纪要/脚本/feishu_minutes_download_video.py b/02_卡人(水)/水桥_平台对接/智能纪要/脚本/feishu_minutes_download_video.py index 3f7b6668..590209fc 100644 --- a/02_卡人(水)/水桥_平台对接/智能纪要/脚本/feishu_minutes_download_video.py +++ b/02_卡人(水)/水桥_平台对接/智能纪要/脚本/feishu_minutes_download_video.py @@ -38,8 +38,26 @@ REFERERS = [ USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" +def _cookie_from_browser() -> str: + """从本机浏览器读取飞书 Cookie(与 feishu_minutes_export_github 一致)""" + for domain in ("cunkebao.feishu.cn", "feishu.cn", ".feishu.cn"): + try: + import browser_cookie3 + for loader in (browser_cookie3.safari, browser_cookie3.chrome, browser_cookie3.edge, browser_cookie3.firefox): + try: + cj = loader(domain_name=domain) + s = "; ".join([f"{c.name}={c.value}" for c in cj]) + if len(s) > 100: + return s + except Exception: + continue + except ImportError: + break + return "" + + def get_cookie() -> str: - """与 fetch_single_minute_by_cookie 一致:环境变量 → cookie_minutes.txt""" + """环境变量 → cookie_minutes.txt → 本机浏览器""" cookie = os.environ.get("FEISHU_MINUTES_COOKIE", "").strip() if cookie and len(cookie) > 100 and "PASTE_YOUR" not in cookie: return cookie @@ -49,7 +67,7 @@ def get_cookie() -> str: line = line.strip() if line and not line.startswith("#") and "PASTE_YOUR" not in line: return line - return "" + return _cookie_from_browser() def get_csrf(cookie: str) -> str: diff --git a/02_卡人(水)/水桥_平台对接/智能纪要/脚本/soul_minutes_100_105_list.txt b/02_卡人(水)/水桥_平台对接/智能纪要/脚本/soul_minutes_100_105_list.txt new file mode 100644 index 00000000..75b7e2d4 --- /dev/null +++ b/02_卡人(水)/水桥_平台对接/智能纪要/脚本/soul_minutes_100_105_list.txt @@ -0,0 +1,12 @@ +# 场次 标题 object_token +# 配置 cookie_minutes.txt 后重新执行本脚本即可只做导出 +100 soul 派对 100场 20260214 obcnu1rfr452595c6l51a7e1 +100 ip切片 目标:派对51-100场 会员社群200人搭建的视频会议 obcnleg937yi97h4xc311829 +100 ip切片 目标:派对51-100场 会员社群200人搭建的视频会议 obcn82umur66e1f92qtcdews +100 ip切片 目标:派对51-100场 会员社群200人搭建的视频会议 obcntns4t5ufqgo34y57d39k +101 soul 派对 101场 20260216 obcnwd5r563dopj1l3lp5pf1 +102 soul 派对 102场 20260217 obcnw4122sy6yeic79tpzbuo +103 soul 派对 第103场 20260218 obcnxrkz6k459k669544228c +103 soul 派对 103场 202060218 obcnxqk56n8w19uf856n4t9a +104 soul 派对 104场 20260219 obcnyg5nj2l8q281v32de6qz +105 soul 派对 105场 20260220 obcny5sux74w123q3pmt8xg7 \ No newline at end of file diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index 9a5a0876..73f290be 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -122,3 +122,4 @@ | 2026-02-23 23:41:16 | 🔄 卡若AI 同步 2026-02-23 23:41 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 10 个 | | 2026-02-24 05:39:42 | 🔄 卡若AI 同步 2026-02-24 05:39 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 10 个 | | 2026-02-24 05:43:39 | 🔄 卡若AI 同步 2026-02-24 05:43 | 更新:Cursor规则、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 10 个 | +| 2026-02-24 05:49:20 | 🔄 卡若AI 同步 2026-02-24 05:49 | 更新:卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 10 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index 419080f6..e41aff4c 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -125,3 +125,4 @@ | 2026-02-23 23:41:16 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-23 23:41 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 10 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-02-24 05:39:42 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-24 05:39 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 10 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-02-24 05:43:39 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-24 05:43 | 更新:Cursor规则、总索引与入口、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 10 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-02-24 05:49:20 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-24 05:49 | 更新:卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 10 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | diff --git a/运营中枢/工作台/腾讯云消耗与降费极限方案.md b/运营中枢/工作台/腾讯云消耗与降费极限方案.md new file mode 100644 index 00000000..6d9c93e1 --- /dev/null +++ b/运营中枢/工作台/腾讯云消耗与降费极限方案.md @@ -0,0 +1,117 @@ +# 腾讯云消耗分析与降费极限方案 + +> 数据来源:腾讯云账单 API DescribeBillDetail(2026-02 月,至 24 日) +> 生成时间:按执行日 + +--- + +## 一、消耗总览与付费能力 + +| 指标 | 数值 | +|------|------| +| **2 月合计(至 24 日)** | ¥941.74 | +| **日均消费** | ¥39.24 | +| **月均估算(按当前节奏)** | 约 ¥1,200~1,300 | + +### 按产品汇总(占比) + +| 产品 | 金额 | 占比 | 说明 | +|------|------|------|------| +| 云服务器 CVM | ¥656.23 | 69.7% | 存客宝 + kr宝塔 | +| 公网 IP | ¥163.58 | 17.4% | 公网流量 | +| 云数据库 MySQL | ¥146.20 | 15.5% | 存客宝 CDB | +| 云硬盘快照 Snapshot | ¥50.50 | 5.4% | 可优化 | +| 云硬盘 CBS | ¥0.80 | 0.1% | - | +| 点播 VOD | ¥0.15 | - | - | +| 轻量应用服务器 | ¥-77.42 | -8.2% | 退款/冲抵 | + +--- + +## 二、每日额外扣费明细(主要来源) + +### 2.1 产品+组件级拆解 + +| 产品 | 组件 | 金额 | 占比 | 是否「额外」 | +|------|------|------|------|--------------| +| 云服务器 CVM | **带宽** | ¥401.14 | **42.6%** | 是 | +| 云服务器 CVM | 运算组件 | ¥215.09 | 22.8% | 否 | +| 公网 IP | **公网网络-流量** | ¥163.58 | **17.4%** | **是** | +| 云数据库 MySQL | CPU | ¥51.00 | 5.4% | 否 | +| 云数据库 MySQL | 内存 | ¥51.00 | 5.4% | 否 | +| 云硬盘快照 Snapshot | **存储空间** | ¥50.50 | **5.4%** | **是** | +| 云服务器 CVM | 系统盘 | ¥40.00 | 4.2% | 否 | +| 云数据库 MySQL | **备份** | ¥26.20 | 2.8% | **是** | +| 云数据库 MySQL | 硬盘 | ¥18.00 | 1.9% | 否 | + +### 2.2 每日「额外扣费」金额(公网/快照/流量/备份) + +| 日期 | 额外扣费(元) | 说明 | +|------|-------------|------| +| 2/1~2/14 | ¥5~12/天 | 日常公网流量 | +| **2/15** | **¥118.91** | 快照或批量计费 | +| 2/16 | ¥4.99 | - | +| **2/17** | **¥21.49** | - | +| **2/18** | **¥41.82** | - | +| **2/19** | **¥310.04** | 快照存储月度计费 | +| 2/20~2/24 | ¥1~3/天 | 日常 | +| **2 月额外合计** | **¥615.31** | 占总支出的 65% | + +**结论**:每天额外扣费的主要来源是 **公网流量**(¥3~12/天)和 **快照存储**(月度集中扣 ¥50+,2/19 单日 ¥310)。 + +--- + +## 三、降费极限方案(可操作项与预估节省) + +### 3.1 立即可做(无业务影响) + +| 序号 | 操作 | 当前月费 | 预估节省 | 操作方式 | +|------|------|----------|----------|----------| +| 1 | **删除无用云硬盘快照** | ¥50.50 | **¥50/月** | 控制台 → 云硬盘 → 快照 → 删除非必要快照 | +| 2 | **CDB 备份策略收缩** | ¥26.20 | **¥15~26/月** | 控制台 → 云数据库 → 备份设置,减少保留天数或频率 | +| 3 | **COS 外网流量优化** | ¥0 | ¥0~5 | 若后续 COS 流量增长,可设 CDN 或内网访问 | + +### 3.2 中等优化(需评估业务) + +| 序号 | 操作 | 当前月费 | 预估节省 | 风险与条件 | +|------|------|----------|----------|------------| +| 4 | **存客宝带宽 50M→20M** | ¥401(CVM 带宽) | **¥150~200/月** | 需确认 50M 是否必须;20M 对多数 Web 足够 | +| 5 | **公网流量改用按量+告警** | ¥163(公网流量) | ¥0~50 | 若当前为包月带宽,改为按量可避免闲置;需设流量告警 | +| 6 | **CDB 降配** | ¥146 | ¥30~60 | 当前 1G 内存 25G 盘;若业务压力小可试 0.5G 或缩小磁盘 | + +### 3.3 结构性降费(需业务决策) + +| 序号 | 操作 | 当前月费 | 预估节省 | 说明 | +|------|------|----------|----------|------| +| 7 | **CDB 迁至 CVM 自建 MySQL** | ¥146 | **¥100~146/月** | 需迁移与运维;43 库 9.4G,技术可行 | +| 8 | **kr宝塔 降配或合并** | 含在 CVM 内 | ¥50~100 | 2 核 4G→1 核 2G 或与存客宝合并(需评估) | +| 9 | **存客宝 包年包月** | - | ¥50~100/月 | 若长期使用,包年包月通常比按量便宜 10%~15% | + +--- + +## 四、降费极限目标(汇总) + +| 方案力度 | 月节省范围 | 月费目标 | +|----------|------------|----------| +| 保守(快照+备份) | ¥65~76 | ¥1,050~1,140 | +| 中等(+带宽优化) | ¥215~276 | ¥940~1,000 | +| **极限(+CDB 迁出 + 合并)** | **¥365~446** | **¥750~850** | + +**极限方案下**:月费可从约 ¥1,200 降至 **¥750~850**,降幅约 **30%~40%**。 + +--- + +## 五、执行优先级与检查清单 + +1. **[ ] 删除无用快照**:控制台 → 云硬盘 → 快照,保留最近 1~2 个必要快照 +2. **[ ] 调整 CDB 备份**:保留 3~7 天,关闭非必要自动备份 +3. **[ ] 评估存客宝带宽**:监控 7 天峰值,若长期 <20M 可降配 +4. **[ ] 设费用告警**:控制台 → 费用 → 预算与告警,月预算 ¥1,000 超限提醒 +5. **[ ] 设流量告警**:云服务器监控,公网出带宽 > 某阈值提醒 + +--- + +## 六、脚本与数据 + +- 账单查询:`01_卡资(金)/金仓_存储备份/服务器管理/scripts/tencent_cloud_bill_recent_days.py` +- 注意:API 要求 `Month` 与 `BeginTime/EndTime` 同月,跨月需分月查询 +- 控制台:https://console.cloud.tencent.com/expense/overview