diff --git a/.gitignore b/.gitignore index 04791144..a6993cc6 100644 --- a/.gitignore +++ b/.gitignore @@ -86,6 +86,7 @@ _大文件外置/财务管理_data/chat.snapshot_收集.db # === 自动排除结束 === # === 自动排除:超过20MB的文件(脚本自动管理,勿手动修改)=== +.venv/lib/python3.14/site-packages/playwright/driver/node 01_卡资(金)/金仓_存储备份/大文件外置/消息中枢_dist/windows控制包.zip 01_卡资(金)/金仓_存储备份/大文件外置/视频切片_models/ggml-small.bin 01_卡资(金)/金仓_存储备份/大文件外置/财务管理_data/chat.snapshot_data.db diff --git a/03_卡木(木)/木果_项目模板/PPT制作/SKILL.md b/03_卡木(木)/木果_项目模板/PPT制作/SKILL.md index e6fd16ae..4201624c 100644 --- a/03_卡木(木)/木果_项目模板/PPT制作/SKILL.md +++ b/03_卡木(木)/木果_项目模板/PPT制作/SKILL.md @@ -1,26 +1,26 @@ --- name: PPT制作 -description: 用 python-pptx 创建、编辑、分析演示文稿。含美观设计规范、v0式生成流程、GitHub 项目参考。触发词:做PPT、制作PPT、生成演示文稿、编辑PPT、修改PPT、汇报PPT、绘本PPT。 +description: 用 python-pptx 或 v0/React 毛玻璃风格生成大气美观 PPT。支持:规格→v0/React 出稿→截图→导出 PPT;苹果毛玻璃风格、组件完善。触发词:做PPT、制作PPT、复盘PPT、毛玻璃PPT。 group: 木 -triggers: PPT、做PPT、制作PPT、演示文稿、汇报PPT、绘本PPT +triggers: PPT、做PPT、制作PPT、演示文稿、汇报PPT、绘本PPT、复盘PPT、毛玻璃PPT owner: 木果 -version: "2.0" +version: "3.0" updated: "2026-02-23" --- # PPT制作 > **归属**:木果(项目模板) -> **能力来源**:python-pptx(3.1k★)、agentskills pptx(594★),融合 v0 式「规格→生成→套规范→验收」流程。 +> **能力来源**:python-pptx、agentskills pptx、**v0/React 苹果毛玻璃风格**(先出好看页面 → 截图 → 导出 PPT)。 --- ## 能做什么(Capabilities) -- 创建新 PPT(标题页、内容页、绘本风、汇报风) +- **方式一(推荐)**:v0/React 毛玻璃风格 → 生成 HTML 页面 → 截图 → 组装 PPT(大气美观、组件完善) +- **方式二**:直接用 python-pptx 创建(标题页、内容页、绘本风、汇报风) - 添加图片(带边框、带说明)、表格、图表 -- 编辑已有 PPT(修改文字、布局、备注) -- 按美观规范套用:配色、留白、图片边框 +- 按美观规范:苹果毛玻璃、配色、留白 - 输出到:`/Users/karuo/Documents/卡若Ai的文件夹/报告/` 或用户指定目录 --- @@ -33,19 +33,34 @@ updated: "2026-02-23" --- -## 执行流程(v0 式:规格 → 生成 → 套规范 → 验收) +## 执行流程 -借鉴卡若AI「全栈开发」与「Vercel与v0部署流水线」的生成逻辑: +### 流程 A:v0/React 毛玻璃 → 截图 → 导出 PPT(大气美观,推荐) | 步骤 | 动作 | 说明 | |:---|:---|:---| -| 1 | **规格澄清** | 主题、受众、页数、风格(商用白底 / 绘本黄底)、参考 PPT | -| 2 | **设计大纲** | 标题页 + 目录/正文页结构;每页关键内容、图片分配 | -| 3 | **执行生成** | 用 python-pptx 生成 .pptx(见下方核心代码) | -| 4 | **套美观规范** | 按《PPT美观设计规范》检查:背景色、字体、图片边框、每图配说明、留白 | -| 5 | **验收** | 用《验收检查清单》自检;风格与参考一致(如有) | +| 1 | **规格澄清** | 主题、页数、内容(如复盘格式) | +| 2 | **v0 或 React 出稿** | 用 v0.dev 或手写 HTML/React,按《苹果毛玻璃风格与自适应规范》生成页面;每页一个 section,1280×720 | +| 3 | **截图** | playwright 截取每页为 PNG(`脚本/毛玻璃截图转PPT.py`) | +| 4 | **组装 PPT** | 用 python-pptx 将 PNG 按序插入幻灯片 | +| 5 | **验收** | 毛玻璃风格、组件完善、无错位 | -**必读**:`参考资料/PPT美观设计规范.md`(配色 token、字体、图片边框、验收清单) +**相关文件**: +- `脚本/复盘PPT_毛玻璃.html`:复盘格式毛玻璃示例 +- `脚本/毛玻璃截图转PPT.py`:截图 + 组装 +- 毛玻璃规范:`开发文档/4、前端/苹果毛玻璃风格与自适应规范.md` + +### 流程 B:直接 python-pptx 生成 + +| 步骤 | 动作 | 说明 | +|:---|:---|:---| +| 1 | **规格澄清** | 主题、受众、页数、风格(商用/绘本) | +| 2 | **设计大纲** | 标题页 + 正文页结构 | +| 3 | **执行生成** | 用 python-pptx 生成 .pptx | +| 4 | **套美观规范** | 按《PPT美观设计规范》检查 | +| 5 | **验收** | 用《验收检查清单》自检 | + +**必读**:`参考资料/PPT美观设计规范.md` --- @@ -118,8 +133,11 @@ background.fill.fore_color.rgb = RGBColor(255, 250, 230) | 文件 | 说明 | |:---|:---| -| `参考资料/PPT美观设计规范.md` | 配色、字体、图片、留白、验收清单(必读) | -| `脚本/天恩乖乖绘本.py` | 绘本风 PPT 示例(黄底、边框、图片说明) | +| `参考资料/PPT美观设计规范.md` | 配色、字体、图片、留白、验收清单 | +| `脚本/复盘PPT_毛玻璃.html` | 复盘格式毛玻璃 HTML 模板(苹果风格) | +| `脚本/毛玻璃截图转PPT.py` | playwright 截图 + python-pptx 组装 | +| `脚本/天恩乖乖绘本.py` | 绘本风 PPT 示例(黄底、边框) | +| 毛玻璃规范 | 开发文档 `4、前端/苹果毛玻璃风格与自适应规范.md` | | 输出目录 | `/Users/karuo/Documents/卡若Ai的文件夹/报告/` | --- @@ -138,4 +156,5 @@ background.fill.fore_color.rgb = RGBColor(255, 250, 230) ## 依赖 - Python 3.9+ -- `python-pptx`:`pip install python-pptx`(建议在 venv 中安装) +- `python-pptx`:`pip install python-pptx` +- **毛玻璃截图流程**:`playwright`(`pip install playwright && playwright install chromium`) diff --git a/03_卡木(木)/木果_项目模板/PPT制作/脚本/复盘PPT_毛玻璃.html b/03_卡木(木)/木果_项目模板/PPT制作/脚本/复盘PPT_毛玻璃.html new file mode 100644 index 00000000..c8202c8a --- /dev/null +++ b/03_卡木(木)/木果_项目模板/PPT制作/脚本/复盘PPT_毛玻璃.html @@ -0,0 +1,85 @@ + + +
+ + + + + + + + + + + + + + + + + + + diff --git a/03_卡木(木)/木果_项目模板/PPT制作/脚本/毛玻璃截图转PPT.py b/03_卡木(木)/木果_项目模板/PPT制作/脚本/毛玻璃截图转PPT.py new file mode 100644 index 00000000..371bf708 --- /dev/null +++ b/03_卡木(木)/木果_项目模板/PPT制作/脚本/毛玻璃截图转PPT.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +毛玻璃风格 HTML → 截图 → 组装 PPT +依赖:playwright(pip install playwright && playwright install chromium) +""" +import subprocess +import sys +from pathlib import Path + +# 尝试 playwright,若无则退回「仅组装」模式 +try: + from playwright.sync_api import sync_playwright + HAS_PLAYWRIGHT = True +except ImportError: + HAS_PLAYWRIGHT = False + +from pptx import Presentation +from pptx.util import Inches + +BASE = Path(__file__).resolve().parent +HTML = BASE / "复盘PPT_毛玻璃.html" +OUT_SLIDES = BASE.parent.parent.parent.parent.parent / "卡若Ai的文件夹" / "报告" / "复盘_毛玻璃_slides" +OUT_PPT = Path("/Users/karuo/Documents/卡若Ai的文件夹/报告/复盘_2026-02-23_毛玻璃.pptx") + + +def screenshot_slides(): + """用 playwright 截取每页""" + if not HAS_PLAYWRIGHT: + print("⚠️ playwright 未安装,跳过截图。运行: pip install playwright && playwright install chromium") + return [] + OUT_SLIDES.mkdir(parents=True, exist_ok=True) + imgs = [] + with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page(viewport={"width": 1280, "height": 720}) + page.goto(f"file://{HTML}") + for i in range(1, 6): + sel = f"#slide-{i}" + el = page.locator(sel) + if el.count() > 0: + path = OUT_SLIDES / f"slide_{i:02d}.png" + el.screenshot(path=path) + imgs.append(str(path)) + browser.close() + return imgs + + +def build_ppt(imgs): + """将图片组装成 PPT""" + prs = Presentation() + prs.slide_width = Inches(13.333) + prs.slide_height = Inches(7.5) + layout = prs.slide_layouts[6] + for p in imgs: + if Path(p).exists(): + s = prs.slides.add_slide(layout) + s.shapes.add_picture(p, Inches(0), Inches(0), width=prs.slide_width) + OUT_PPT.parent.mkdir(parents=True, exist_ok=True) + prs.save(OUT_PPT) + return OUT_PPT + + +def main(): + if HAS_PLAYWRIGHT: + imgs = screenshot_slides() + else: + imgs = list(OUT_SLIDES.glob("slide_*.png")) + imgs = sorted([str(p) for p in imgs]) + if not imgs: + print("❌ 无截图可用。请先手动打开 HTML 截图,或安装 playwright。") + print(" HTML 路径:", HTML) + sys.exit(1) + build_ppt(imgs) + print("✅ PPT 已生成:", OUT_PPT) + + +if __name__ == "__main__": + main() diff --git a/运营中枢/参考资料/iPad2当Mac触控副屏_操作指南.md b/运营中枢/参考资料/iPad2当Mac触控副屏_操作指南.md new file mode 100644 index 00000000..6d0cd359 --- /dev/null +++ b/运营中枢/参考资料/iPad2当Mac触控副屏_操作指南.md @@ -0,0 +1,83 @@ +# iPad 2 当 Mac 触控副屏 — 操作指南 + +> 适用于:iPad 2(iOS 9.3.5)+ MacBook,通过 USB 连接。 +> 脚本路径:`运营中枢/脚本/iPad2_副屏安装.sh` + +--- + +## 一、已完成的安装 + +| 项目 | 状态 | +|------|------| +| Duet Mac 端 | ✅ 已安装到 `/Applications/Duet.app` | +| 安装脚本 | ✅ `运营中枢/脚本/iPad2_副屏安装.sh` | +| ideviceinstaller | ✅ 已安装,可命令行安装 IPA 到 iPad | + +--- + +## 二、连接要求(iPad 2 特需) + +iPad 2 使用 **30 针接口**,MacBook 使用 **Type-C**,需: + +- **30 针转 USB-A 数据线** + **USB-A 转 Type-C 转接器**;或 +- **30 针转 USB-C 数据线**(若可用) + +必须是**可传数据**的线,不能是仅充电线。 + +--- + +## 三、命令行安装流程 + +### 1. 连接 iPad 并信任电脑 + +1. 用数据线把 iPad 2 连到 Mac +2. 解锁 iPad +3. 若出现「要信任此电脑吗?」→ 点 **信任** + +### 2. 运行安装脚本 + +```bash +cd /Users/karuo/Documents/个人/卡若AI +bash 运营中枢/脚本/iPad2_副屏安装.sh +``` + +脚本会:检测 iPad → 确认 Duet Mac 已安装 → 尝试安装 IPA(若有)→ 启动 Duet。 + +### 3. 在 iPad 2 上安装 Duet Display + +当前 Duet 在 App Store 要求 **iPadOS 12+**,iPad 2 无法直接安装最新版。 + +**可行方式:** + +| 方式 | 说明 | +|------|------| +| **已购项目** | 若曾购买 Duet,在 iPad 2 上打开 App Store → 已购项目 → 搜索 Duet Display → 安装最后兼容版本 | +| **ipatool 下载旧版** | 运行 `bash 运营中枢/脚本/iPad2_下载Duet旧版IPA.sh`,按提示用 ipatool 下载兼容 iOS 9 的旧版,再用 `ideviceinstaller -i xxx.ipa` 安装 | + +### 4. 授予 Duet 权限 + +- **系统设置** → **隐私与安全性** → **辅助功能** → 勾选 **Duet** +- 若提示 **屏幕录制**,同样勾选 Duet + +--- + +## 四、使用步骤 + +1. 打开 Duet Mac 端(菜单栏出现 Duet 图标) +2. 在 iPad 2 上打开 Duet Display +3. 使用 USB 连接,Duet 会自动识别 iPad 为副屏 +4. 在 **系统设置 → 显示器** 中调整排列和扩展方式 + +--- + +## 五、常见问题 + +| 情况 | 处理 | +|------|------| +| 未检测到 iPad | 检查线缆可传数据、是否点过「信任」、重新插拔 | +| iPad 2 无法安装 Duet | 需用已购项目或 ipatool 下载旧版 IPA 后命令行安装 | +| Duet 无反应 | 确认 Mac 端已授予「辅助功能」「屏幕录制」权限 | + +--- + +*文档生成:卡若AI · 运营中枢 | 配合 `iPad2_副屏安装.sh` 使用* diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index cde2843e..498e7738 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -107,3 +107,4 @@ | 2026-02-23 14:51:49 | 🔄 卡若AI 同步 2026-02-23 14:51 | 更新:卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 8 个 | | 2026-02-23 14:56:38 | 🔄 卡若AI 同步 2026-02-23 14:56 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | | 2026-02-23 15:05:27 | 🔄 卡若AI 同步 2026-02-23 15:05 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | +| 2026-02-23 15:14:09 | 🔄 卡若AI 同步 2026-02-23 15:14 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index bdf55f25..e4150190 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -110,3 +110,4 @@ | 2026-02-23 14:51:49 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-23 14:51 | 更新:卡木、总索引与入口、运营中枢工作台 | 排除 >20MB: 8 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-02-23 14:56:38 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-23 14:56 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-02-23 15:05:27 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-23 15:05 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-02-23 15:14:09 | 成功 | 成功 | 🔄 卡若AI 同步 2026-02-23 15:14 | 更新:卡木、运营中枢工作台 | 排除 >20MB: 8 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | diff --git a/运营中枢/脚本/iPad2_下载Duet旧版IPA.sh b/运营中枢/脚本/iPad2_下载Duet旧版IPA.sh new file mode 100755 index 00000000..0388d887 --- /dev/null +++ b/运营中枢/脚本/iPad2_下载Duet旧版IPA.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# 通过 ipatool 下载兼容 iPad 2(iOS 9)的 Duet Display 旧版 IPA +# 使用前需先执行:ipatool auth login + +set -e +OUTPUT_DIR="/Users/karuo/Documents/卡若Ai的文件夹" +IPA_DIR="$OUTPUT_DIR/ipa_cache" +mkdir -p "$IPA_DIR" + +echo "==========================================" +echo " 下载 Duet Display 旧版 IPA(兼容 iPad 2 / iOS 9)" +echo "==========================================" + +# 检查 ipatool 是否已登录 +if ! ipatool auth info 2>/dev/null; then + echo "请先登录 Apple ID:" + echo " ipatool auth login" + exit 1 +fi + +# 列出 Duet 可用版本,找到兼容 iOS 9 的 +echo "" +echo "正在获取 Duet Display 版本列表..." +ipatool list-versions -b com.kairos.duet 2>&1 | head -30 + +echo "" +echo "请从上述列表中选择 external-version-id(兼容 iOS 9 的版本约 2.x)" +echo "然后执行:" +echo " ipatool download -b com.kairos.duet --external-version-id <版本ID>" +echo " ideviceinstaller -i ~/Downloads/*.ipa" +echo "" +echo "IPA 将下载到当前目录或 ~/Downloads" diff --git a/运营中枢/脚本/iPad2_副屏安装.sh b/运营中枢/脚本/iPad2_副屏安装.sh new file mode 100755 index 00000000..f332a88b --- /dev/null +++ b/运营中枢/脚本/iPad2_副屏安装.sh @@ -0,0 +1,107 @@ +#!/bin/bash +# iPad 2 作为 Mac 触控副屏 - 一键安装脚本 +# 用途:检测 iPad 连接、安装 Duet 相关组件、配置副屏 + +set -e +DUET_MAC_URL="https://updates.duetdisplay.com/AppleSilicon" +OUTPUT_DIR="/Users/karuo/Documents/卡若Ai的文件夹" +IPA_DIR="$OUTPUT_DIR/ipa_cache" +mkdir -p "$IPA_DIR" + +echo "==========================================" +echo " iPad 2 → Mac 触控副屏 安装脚本" +echo "==========================================" +echo "" + +# 1. 检测 iPad 连接 +echo "[1/4] 检测 iPad 连接..." +echo " 请确保:① iPad 已用 USB 连接 Mac ② iPad 已解锁 ③ 在 iPad 上点「信任此电脑」" +echo "" + +IPAD_CONNECTED=0 +for i in {1..15}; do + if idevice_id -l 2>/dev/null | grep -q .; then + echo " ✅ 已检测到 iOS 设备" + ideviceinfo 2>/dev/null | grep -E "ProductName|ProductType|ProductVersion" || true + IPAD_CONNECTED=1 + break + fi + printf " 等待设备... (%d/15)\r" $i + sleep 2 +done +echo "" + +if [ $IPAD_CONNECTED -eq 0 ]; then + echo " ⚠ 未检测到 iPad,将继续安装 Mac 端;iPad 连接后可重新运行本脚本安装 iOS 端" +fi + +# 2. 下载 Duet Mac 端 +echo "" +echo "[2/4] 下载 Duet Mac 端..." + +if [ ! -d "/Applications/Duet.app" ]; then + echo " 正在下载 Duet..." + if [ -f /tmp/DuetMac.dmg ]; then + echo " 使用已下载的 Duet..." + elif curl -sL -o /tmp/DuetMac.dmg "$DUET_MAC_URL" 2>/dev/null; then + : + fi + if [ -f /tmp/DuetMac.dmg ]; then + hdiutil attach /tmp/DuetMac.dmg -nobrowse -quiet + cp -R /Volumes/Duet*/duet.app /Applications/Duet.app 2>/dev/null || cp -R /Volumes/Duet*/*.app /Applications/ 2>/dev/null + hdiutil detach /Volumes/Duet* 2>/dev/null || true + echo " ✅ Duet Mac 端已安装到 /Applications" + else + echo " ⚠ 自动下载失败,请手动下载:" + echo " https://www.duetdisplay.com/zh/onboarding/download-apps" + open "https://www.duetdisplay.com/zh/onboarding/download-apps" 2>/dev/null || true + fi +else + echo " ✅ Duet 已存在于 /Applications" +fi + +# 3. 尝试安装 IPA 到 iPad(需提供 IPA 路径) +echo "" +echo "[3/4] 安装副屏 App 到 iPad..." + +IPA_PATH="" +for f in "$IPA_DIR"/Duet*.ipa "$IPA_DIR"/*duet*.ipa ~/Downloads/Duet*.ipa; do + [ -f "$f" ] && IPA_PATH="$f" && break +done + +if [ $IPAD_CONNECTED -eq 0 ]; then + echo " 跳过(iPad 未连接)" +elif [ -n "$IPA_PATH" ]; then + echo " 找到 IPA: $IPA_PATH" + if ideviceinstaller -i "$IPA_PATH" 2>/dev/null; then + echo " ✅ App 已安装到 iPad" + else + echo " ⚠ 安装失败(可能需 Apple ID 或签名)" + fi +else + echo " ⚠ 未找到 Duet IPA 文件" + echo " iPad 2 需兼容 iOS 9 的旧版 Duet。请:" + echo " 1. 在 iPad 2 上打开 App Store → 搜索「Duet Display」" + echo " 2. 若曾购买过,可在「已购项目」中安装最后兼容版本" + echo " 3. 或使用 ipatool 下载旧版:" + echo " ipatool auth login" + echo " ipatool download -b com.kairos.duet --external-version-id <旧版ID>" +fi + +# 4. 启动 Duet 并提示 +echo "" +echo "[4/4] 启动 Duet Mac 端..." +if [ -d "/Applications/Duet.app" ]; then + open -a Duet 2>/dev/null || open "/Applications/Duet.app" 2>/dev/null + echo " ✅ Duet 已启动" +else + echo " 请先安装 Duet 后再运行" +fi + +echo "" +echo "==========================================" +echo " 完成。下一步:" +echo " 1. 在 Mac 上允许 Duet 的「辅助功能」「屏幕录制」权限" +echo " 2. 在 iPad 2 上打开 Duet Display 应用" +echo " 3. 用 USB 连接后,Duet 会自动识别并作为副屏" +echo "=========================================="