diff --git a/.gitignore b/.gitignore index bc5d7ae..7323972 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,10 @@ Thumbs.db **/browser-harness/envs/ # WorkBuddy 自动化任务运行数据(本地运行时生成,不提交) .workbuddy/automations/ +# 工作台运行日志与 CDP 自检截图(本地产物,不提交) +**/mcn-work-shop/server.log +**/mcn-work-shop/shot-*.png +# 临时目录与生成产物 +tmp/ +.workbuddy/tmp/ +generated-images/ diff --git a/.workbuddy/memory/2026-08-28.md b/.workbuddy/memory/2026-08-28.md index 7269706..540f585 100644 --- a/.workbuddy/memory/2026-08-28.md +++ b/.workbuddy/memory/2026-08-28.md @@ -160,3 +160,22 @@ - **验证**(CDP #/rewrites):按钮在 AI脚本 head 内、与文字 gap=10px 精确、垂直对齐、顶栏无残留 ✅;点击展开源脚本列 + title 切「收起源脚本」✅;宽度 1200→1085 / 1500→1380 / 1700→1564 / **2000→1600 封顶居中** ✅ - ⚠️ 左右边距探针:`right:65` 不是 bug——mask(fixed inset:0) 宽=clientWidth 1185(不含滚动条),弹窗 calc(100%-100)=1085 在 mask 内精确居中左右各 50;15px 是页面右侧 classic 滚动条区域,滚动条左缘到弹窗恰 50px;无滚动条页面左右严格 50/50 - 验证脚本保留 `cdp-verify-srcbtn1600.mjs` + +## 关闭服务 + 以本地为准同步仓库(18:51-18:55) +- **关闭服务**:工作台 node 服务 PID 28424(127.0.0.1:8899)taskkill 停止;0.0.0.0:8899 的 20604 是 MiPCAudio.exe 占位不动;Git Bash `taskkill //PID` 参数会被 MSYS 转换报错,改 PowerShell `Stop-Process` +- **提交**(ab97842,155 文件):工作台导入功能/弹窗优化 + **短视频提示词生成 138 文件整体移入 `project/短视频脚本创作/V1.0/subskill/mcn-video-prompt/`**(git 识别为 R100 纯重命名保留历史,与 mcn-dou-analysis 同构);未提交项有意排除:`.workbuddy/tmp/`(edge-cdp 调试临时)、`server.log`、`cdp-wheel*.mjs`(旧滚轮探针) +- **以本地为准推送**(用户明确「不用拉取 直接同步」):`git pull` 走 22 端口超时 + 沙箱拦截 ~/.ssh 读取被用户拒 → 改用 `GIT_SSH_COMMAND="ssh -p 222 -o StrictHostKeyChecking=accept-new" git push origin main` ✅ fast-forward 成功(9b0c198..ab97842),**这次 push 后 origin/main 跟踪引用未丢失**(refs/remotes/origin/main 正常) + +## 账号周榜 5 数值列加宽(17:56-18:00) +- 用户需求:「账号周榜 列表中 下面的列宽度可以在大一些:综合得分 / 新增粉丝 / 新增点赞 / 新增评论 / 新增分享」 +- **改 data-pages.js**(renderRanking):`const WIDE = new Set(['comprehensiveScore','newFans','newLikes','newComments','newShares'])` → `sortable()` 工厂给命中 key 的 th 追加 `th-wide` class +- **改 style.css**(`.sortable:hover` 后):`.th-wide { min-width: 110px; }`(表格为 auto 布局,数值列加 min-width 即可增宽,不影响内容列) +- **验证**(CDP #/ranking 只读测量):5 列均带 th-wide、实测宽 **122px ≥110px** ✅、computed min-width 110px;对照列不受影响(rank 56 / 赛道 90 / followers 98 / 功能 77);20 行数据正常渲染 +- 验证脚本保留 `cdp-verify-rankwide.mjs`(含列宽测量 + computed style 校验,可复用) + +## 旧梦留声机账号设定卡 + 功能六固化(17:50-18:00 前段多轮迭代,本段收尾) +- **SVG 迭代定版**:`桌面/MCNSkill项目/旧梦留声机/旧梦留声机账号设定卡.svg`,viewBox `0 0 680 1716` 深棕红渐变底(`#2B0F0A→#1A0805`)+ 顶部浅米大框(280px 主标题+16px 副题「账号设定卡」)+ 内容路线 6 格浅米卡 + 核心气质 12 chips + 六大内容基因 186×130(GENE 0X 珊瑚红小标签)+ 色彩体系 5 色卡 h=80 + 角色类型库 186×130(中文名+英文代号大写斜体)+ 情绪图条形(76/32/64/112/84/52/72 底边对齐 y=1452)+ 小字总结行 y=1506 + 红线清单 6 条 2×3 + 版权 +- **功能六固化(生成账号设定卡片)**:新建 `references/feature/06_生成账号设定卡片.md`(输入/产出/五步方式含①.5读模板样例/模块裁剪适配表/配色适配/要求配色规范表/格式/7条避坑/完成汇报)+ `references/样例/`(模板_旧梦留声机账号设定卡.svg + 参考PNG,源+dsh 两副本)+ SKILL.md 功能总览五大→六大 + 新增「八、功能六」章节 + 部署禁用说明(功能六无连带文件) +- **收尾完善(本次)**:①SKILL.md 2.2 技能库路径表补录「功能六流程」+「账号设定卡模板样例」两行(源+dsh);②`R. REPayer`→`R. REPAYER` 大小写统一(模板源/dsh/桌面成品三处,其余代号全大写) +- **验证**:源技能 vs dsh 副本 SKILL.md/模板SVG/06功能文件三组 diff 全一致;REPayer 全库零残留 +- **沉淀要点**(供下次生成其他账号设定卡):先读 `references/样例/` 模板(复用版式骨架与样式常量,内容全替换);角色英文代号=大写首字母缩写+单词全大写;情绪图条形底边对齐峰谷差≥40px;文字垂直居中 y=中心;批量移动坐标用脚本统一加减防双重偏移;红线全量;改完必 present_files 预览确认 diff --git a/.workbuddy/memory/2026-08-31.md b/.workbuddy/memory/2026-08-31.md new file mode 100644 index 0000000..ceee497 --- /dev/null +++ b/.workbuddy/memory/2026-08-31.md @@ -0,0 +1,337 @@ +# 2026-08-31 工作日志 + +## 工作台首页顶部「数据预览」条带(09:34-09:50) +- 用户需求:「工作台首页顶部增加数据预览 参考插件MCN工作台首页顶部的数据预览」→ 参考源确认 = `D:\dshworkspace\plugin_package\dsh-plugin-mcn`(本机源码唯一含 mcnNav_stats 的实现,非线上 agentos) +- **参考实现**(dsh-plugin-mcn client.js + index.js):首页 home 视图顶部 stats 条带(浅蓝底 rgba(65,118,230,.07)、圆角 12、padding 22px 0),5 项 statItem(flex:1 竖排 value 28px 粗体品牌蓝 + label 13px 次级色、item 右侧细边框分隔、末项无边框);数据 `GET /mcn/api/stats`(后端 60s 缓存):accounts=hot_accounts del_flag=0 / analyses=account_video_analysis 计数 / rewrites=rewrite_log done+script_text 非空 / reviews=script_review type='ai'+done / writingScore=最新 20 条 AI 复盘 total 平均(1 位小数) +- **移植改动**:①dsh-data.js `getStats()` 修正对齐参考——reviews 补 `type='ai'` 限定、writingScore 由「计数」改为「最新 20 条 AI 复盘平均分」(无数据返回 null);②app.js renderHome `.home` 顶部(data-cards 前)加 `#homeStats` 条带占位 + 新增 `loadHomeStats()`(挂载 fetch /api/dsh/stats 一次,5 项 label 与 dsh 一致,失败显示「数据不可用」)+ router home 分支与 _reload 调用;③style.css 新增 `.home-stats/.home-stat-item/.home-stat-value/.home-stat-label`(工作台品牌色 --primary #2f6fed 对应 dsh 的 #4176e6,背景 rgba(47,111,237,.07)) +- **验证**(CDP #/ 强制刷新):5 项渲染值 热门账号7/视频解析12/AI写脚本17/AI写作复盘1/AI写作评分86.5 与接口一致 ✅;样式 computed 全符合(bg .07 蓝、圆角 12、值 26px 700 品牌蓝、item 右分隔线、末项无)✅ +- ⚠️ **坑**:CDP `Page.navigate` 到仅 hash 不同的 URL(#/ranking→#/)**不触发文档重载**,CSS/JS 仍是旧版(表现为新增样式全部 computed 为默认值)→ 必须补 `Page.reload({ignoreCache:true})`;服务端 dsh-data.js 改动需**重启 node 服务**(进程级 require 缓存) +- 验证脚本保留 `cdp-verify-homestats.mjs`(结构+值+computed 样式测量,可复用) + +## 首页账号周榜预览表:5 数值列加宽 + 功能列「分析」→「关注」(09:42-09:55) +- 用户澄清:要加宽的是**工作台首页的账号周榜预览表**(非 #/ranking 功能页——上轮 08-28 加的是功能页,本轮补首页预览表) +- **改 style.css**(`.rank-row` grid):`grid-template-columns: 34px 84px minmax(80px,1fr) 52px repeat(4,58px) 72px` → `... 88px repeat(4,84px) 72px`(综合得分 52→88、4 个数值列 58→84) +- **改 app.js**(loadRankingPreview 行模板):非 inDb 账号操作按钮「分析」→「关注」(title「分析该账号并加入账号列表」→「关注该账号并加入账号列表」;行为不变仍 confirmSaveAccount 保存并分析);inDb 账号保持「查看」 +- **验证**(CDP #/ 强制刷新实测):5 列宽 score=88 / 4×rk-num=84 ≥80 ✅;按钮「关注」+ title 正确 ✅;10 行数据正常、首页 stats 条带与快捷卡片不受影响 ✅ +- ⚠️ 验证脚本坑:flex/grid 行内同类元素取列宽用 `:nth-child(n)`(按子元素序号),**不能用 `:nth-of-type`**(按元素标签类型 span 计数会错位);rk-num 是行内第 5-8 个子元素 +- 验证脚本保留 `cdp-verify-rankpreview.mjs` + +## 账号周榜全部页面数值列「窄 + 右对齐」(09:50-10:05) +- 用户需求:「账号周榜 全部页面 这些列宽度可以窄一些 右对齐:综合得分/粉丝/新增粉丝/新增点赞/新增评论/新增分享」 +- **功能页 #/ranking**:①data-pages.js WIDE 集合补 `followers`(6 列)、数值列 td 加 `num` 类(综合得分 `num score-cell`);②style.css 根因排查——`width:100%` auto 布局下列需求总和(≈994px) < 容器(1440px),富余空间按比例摊薄拉宽每列,**min-width 只是下限压不住拉伸**(实测 110px 是摊薄结果,thMin 已 90px 却无效)→ 解法:周榜表单独 `table-layout: fixed` + 数值列 `width:90px` 硬约束(fixed 下 width 生效、min-width 忽略),排名 40/赛道 90/功能 85 固定,账号列吃剩余;table 加专属类 `table-rank`(避免影响账号列表等其他 .table 页面);td.num 缩 13px + tabular-nums + padding 8px +- **首页预览表**:`.rank-row` grid 列宽 88/84 → **76/76**(grid 本来就是硬约束,仅缩窄;右对齐原本就有) +- **验证**(CDP 实测):功能页 6 列全部 **90px + th/td 右对齐** ✅;首页 5 列 76px 右对齐 ✅;行数据/账号列自适应正常 +- ⚠️ 两个坑:①`.table th { text-align:left }` 特异性(0,1,1) 压过 `.th-wide`(0,1,0),需写 `.table th.th-wide`;②auto 布局富余空间摊薄是「列宽压不住」的真根因,fixed + width 才是硬约束 +- 验证脚本保留 `cdp-verify-ranknarrow.mjs`(功能页+首页双测) + +## 「AI写作复盘」→「AI脚本诊断」改名 + 首页周榜列表上底色(09:56-10:08) +- 用户需求:①「AI写作复盘」包括功能入口和数据预览名称都改为「AI脚本诊断」;②账号周榜列表内容区域上底色(原来透明与页面背景 #f5f6f8 同色很奇怪) +- **改名 7 处全量替换**(app.js 6 + data-pages.js 1):首页快捷卡片 title('flask')、数据预览条带 label(占位 HTML + loadHomeStats 两处)、CRUMB_TITLES、router titles、reviews 页 page-title、代码注释;index.html 无「复盘」字样;「AI写作评分」按用户范围保持不改;页面内部功能描述(复盘报告等)保持 +- **底色**:`.rank-preview-list` 补 `background: var(--panel); box-shadow: var(--shadow);`(白色面板 + 阴影,与快捷卡片一致;功能页 .table-wrap 本就有 panel 白底) +- **验证**(CDP 实测):数据预览 label 与快捷卡片均为「AI脚本诊断」✅;全页无「AI写作复盘」残留 ✅;周榜列表背景 rgb(255,255,255) ✅;#/reviews 标题「AI脚本诊断」✅ +- 验证脚本保留 `cdp-verify-rename.mjs` + +## 周榜功能列按钮统一白底带边框(09:58-10:10) +- 用户需求:「账号周榜 功能列的按钮都改为 白底带边框」 +- **改 style.css** `.btn-import`(功能页「分析」+ 首页「关注」共用):灰底 #f0f2f5 → **白底 #fff + 边框 #d0d4da**,hover 变主色边框+主色字;`.btn-view`(查看)本就是白底+主色边框未动 +- **验证**(CDP 实测):功能页「分析」白底 rgb(255,255,255)+边框 #d0d4da ✅;首页「关注」同 ✅ +- 验证脚本保留 `cdp-verify-btnwhite.mjs` + +## 首页周榜预览改 tab 切换 + 新增 3 个空榜(10:02-10:15) +- 用户需求:「首页账号周榜 改为 tab切换,新增 作品热榜、点赞日榜、涨粉日榜,功能先空着」 +- **改 app.js renderHome**:`
方式一:填写抖音账号信息,AI 通过抖音网页获取账号信息与视频列表。
+填写抖音账号信息,AI 通过抖音网页获取账号信息与视频列表。
方式二:输入本地数据文件夹绝对路径,AI 读取目录分析文件结构后导入。
-| 赛道 | 账号 | ${sortable('comprehensiveScore', '综合得分')}${sortable('followers', '粉丝')}${sortable('newFans', '新增粉丝')}${sortable('newLikes', '新增点赞')}${sortable('newComments', '新增评论')}${sortable('newShares', '新增分享')}功能 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 发布时间 | 视频ID | 视频标题 | 点赞 | 评论 | 分享 | 时长 | 操作 |
|---|---|---|---|---|---|---|---|
| 暂无视频数据 | |||||||
| ID | 账号 | 生成方式 | 脚本标题 | 生成时间 | ${DIMS.map((h) => `${h} | `).join('')}操作 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 暂无 AI 写脚本(完成改写的脚本会出现在这里) | ||||||||||||