Commit Graph
75 Commits
Author SHA1 Message Date
maogeigei acb4c3ea3c 热点数据 UI:首页入口改名+页内 tab 与赛道/时间筛选同行
- 首页入口卡「账号周榜」→「热点数据」(desc=账号周榜 · 视频热榜 · 点赞榜);CRUMB_TITLES ranking 同步
- #/ranking 页 rank-tabs 并入 page-toolbar 同一行(返回|标题|三榜tab|赛道下拉+期数切换),空/错误态仍可切 tab
- CSS .page-toolbar .rank-tabs 行内化;index.html 静态资源加 ?v=20260903 版本参数防缓存
2026-09-03 15:10:13 +08:00
maogeigei faa0bd751f 热点三榜数据接入定稿:全品类单文件(不传赛道一次调用)+ 三子目录落盘
- fetch_week_ranks.py 重写:28 赛道循环→全品类不传 type 每榜每期 1 次调用;hotContentRank source 修正为生产名「抖音每日点赞飙升榜」(GitHub 后缀版返回空);API 单次上限 TOP50(limit/page/offset 实测均无效)固化防再探测;成本铁律「批量付费调用前须先经用户确认」
- 落盘契约:抖音榜单/ 三子目录(账号周榜/视频热榜/点赞榜),hot/likes 全品类单文件/期 抖音周榜_{视频热榜|点赞榜}_{周一}.json;旧 28 赛道 56 文件归档 _archive_旧28赛道结构_20260903
- dsh-data.js:RANK_SUB 子目录映射 + rankFilePath + listRankFiles(子目录优先+根目录旧平铺回退) + collectCategories(week=文件名赛道、hot/likes=条目 category 并集)+ getRanking 赛道筛选(week 文件名级/hot likes 条目级)
- 前端三榜渲染(data-pages.js/app.js/style.css 承接前段)+ 文档同步(主 SKILL.md 落盘表/抓取器说明段)+ dsh 副本 diff=0 + 记忆日志
2026-09-03 15:00:01 +08:00
maogeigei 09dc431773 工作台删除「涨粉榜」tab(三榜变两榜,技能 douyin-rise-ranking 保留)
用户指令「删除涨粉榜功能」→ 范围=只删工作台 tab:
- app.js 首页 rank-tabs 删 fans 按钮 + 注释 3→2
- data-pages.js RANK_TABS 删 ['fans','涨粉榜'] 行
- 首页 tab handler 通用逻辑无特判,删除即收敛;cdp 验证脚本 fans=粉丝列保留
- node --check + 伺服零残留验证通过
2026-09-03 13:14:45 +08:00
maogeigei a1227600f7 工作台「账号周榜」入口改为「热点数据」多榜 tab 页:首页入口卡片/面包屑/路由标题同步改名;renderRanking 重构——RANK_TABS 四 tab(账号周榜/视频热榜/点赞榜/涨粉榜,与首页 rank-preview 一致),账号周榜 tab 保留完整列表(筛选/排序/分页/关注),其余榜暂占位(后端仅周榜 json,数据落盘后接入) 2026-09-03 12:20:37 +08:00
maogeigei 7261c52690 v25: AI写脚本页三tab脚本中心(参考选题/自定义选题/ABC占位)+UI创作写库闭环
- dsh-data: listCustomScripts/getCustomScript/saveScript(可写连接)/getRewriteStats
- server: /api/dsh/custom-scripts|custom-script|script-save|rewrite-stats
- data-pages: renderRewrites tab化重构(保留openRewriteCompare),徽标计数,账号级进入默认落有数据tab,chip清账号筛选,openCustomScriptView全文弹窗
- saveHintOf 追加全部UI创作prompt尾(参考选题带videoId/awemeId,自定义仅accountId)
- 修复: note/accChip 顶层const不随tab更新→移入load()重算
- style: rw-tabs/rw-tab-badge/rw-chip/cw-modal; app.js +copy图标
2026-09-02 19:32:19 +08:00
maogeigei 8443af199b feat(workshop): 痛点/爽点 标签加空格(label+clarify模板同步);AI写脚本列表默认近三个月 v24 2026-09-02 19:07:15 +08:00
maogeigei 6fc4c1a536 feat(workshop): 账号列表 AI脚本列改为按钮展示(数量+条)v23 2026-09-02 19:02:16 +08:00
maogeigei 7cfe9c62b6 fix(workshop): rewrites 账号跳转 param 中文未解码——补 decodeURIComponent v22-fix
- #/rewrites/<编码账号名> 的 param 未经 decode,中文账号名(俊希等)以编码串进入搜索词匹配不到
- renderRewrites 开头 decodeURIComponent(initAccount)(try/catch 防坏 URI)
- 纯前端,无需重启
2026-09-02 19:00:29 +08:00
maogeigei 5881610d71 feat(workshop): 账号列表去地区列+加AI脚本列(数量/跳转该账号AI写脚本) v22
- dsh-data listAccounts 增 rewrite_count 子查询(口径同视频页:rewrite_log done 且有脚本)
- renderAccounts:删地区列,操作列左加「AI脚本」列——数量>0 显示为链接,0 显示 —
- 跳转 #/rewrites/<账号名>:parseHash param 传 renderRewrites(view, initAccount),预填搜索+note 提示该账号上下文
- app.js rewrites 路由透传 param;空行 colspan 13/12→12/11
2026-09-02 18:59:02 +08:00
maogeigei d5a83c48f6 fix(workshop): 需求区展开挤出输入条——上限560回400/44vh+对话区让位+modal裁边 v21
- 根因:v17 为 8 卡把展开上限提到 560px,v20 已回 5 卡未回缩;窗口 92vh 较矮时 560+对话区(130)+输入条超出弹窗总高,输入条 flex:none 固定底被挤出
- .req-sheet / .req-sheet-box.open 展开上限 560→min(44vh,400px)(5 卡空卡约 330 全显,内容超高内部滚动,矮窗口自动让位)
- .req-dialog min-height 130→60 腾出弹性空间
- .req-modal 加 overflow:hidden 防残余溢出弹窗框
- 纯 CSS,无需重启服务
2026-09-02 18:56:04 +08:00
maogeigei d31261eabf refactor(workshop): 删需求字段『共鸣/共情』8→5 行,共鸣由 AI 依痛点爽点发挥 v20
- REQ_FIELDS 6→5:删 relate;idea→blow→pain→form→note
- w 初值同步删 relate;空态/注释同步(共鸣与情节结尾由 AI 依痛点爽点发挥)
- clarify 模板同步 5 行 + 提示共鸣/共情不收集由创作自然发挥
- 复盘评分维度「共鸣和共情」(1134/1232/1312)属复盘技能结构,不在需求表单,未动
2026-09-02 18:53:22 +08:00
maogeigei 6602b8d45e refactor(workshop): 爆点改名『创新 / 爆点』并移至一句话创意之后 v19
- REQ_FIELDS:blow 标签 爆点→创新 / 爆点,字段序 idea→blow→pain→relate→form→note
- clarify 服务端模板同步;空态/注释同步字段序
2026-09-02 18:51:02 +08:00
maogeigei f45eb4a692 refactor(workshop): 需求表单 8→6 行——叙事形态改名叙事结构,删核心情节/结尾落点 v18
- REQ_FIELDS:删 plot/end,form 标签 叙事形态→叙事结构(idea/pain/relate/blow/form/note 6 字段)
- w 初值同步删 plot/end;情节与结尾由 AI 创作阶段按人设与选题自决,无需用户填写
- clarify 服务端模板同步 6 行 + 注释;提示补充情节/结尾/时长不由清单承载
- 空态/注释同步
2026-09-02 18:48:28 +08:00
maogeigei fd25045182 feat(workshop): AI创作需求表单加入落点三字段(痛点爽点/共鸣共情/爆点) 共8行可空 v17
- REQ_FIELDS 5→8:idea/pain/relate/blow/form/plot/end/note,落点要素可选留空由 AI 补齐
- clarify 服务端模板同步 8 行,注释 5行→8行
- 需求区展开高度 400→560px 容纳 8 张卡片
2026-09-02 18:44:23 +08:00
maogeigei 84d4587384 style(workshop): 弹窗空态引导精简(去账号级设定说明与附件格式,只留支持上传附件) 2026-09-02 18:39:00 +08:00
maogeigei 12ba43c5c7 style(workshop): 时长下拉宽度收窄 168→110px 2026-09-02 18:35:59 +08:00
maogeigei 8c5b66da67 style(workshop): 需求卡空值文案改『待完善』(确认弹窗兜底同步) 2026-09-02 18:35:32 +08:00
maogeigei cc59c1cc87 style(workshop): 时长选项标签改『时长』/默认『自动』+ 修复秒数输入框 hidden 被 display 覆盖一直显示问题(选自定义才显示) 2026-09-02 18:34:23 +08:00
maogeigei 504c92e90d style(workshop): 需求栏字段卡片化——维度名作小标题置左上角+内容在下+padding 10px(展开高度340→400) 2026-09-02 18:30:40 +08:00
maogeigei e6ab15faf1 chore(workshop): 修正折叠容器注释 n/10 → n/5(需求栏已收窄至5字段) 2026-09-02 18:29:59 +08:00
maogeigei 17acaf1740 feat(workshop): AI创作弹窗时长改功能选项下拉(30/60/120/240/自定义,移出需求栏) + 一句话创意与选题改名一句话创意 2026-09-02 18:28:22 +08:00
maogeigei 3be2ff152d feat(workshop): AI创作需求框收窄为选题侧6字段(删情绪/受众/结构性符号/广告植入4账号设定字段,人设卡已覆盖,保留其他约束兜底) 2026-09-02 18:22:28 +08:00
maogeigei e4cede21f1 refactor(workshop): AI创作弹窗去重引导文案(删顶部常驻req-head,保留对话空态引导并补快捷键/附件说明) 2026-09-02 18:17:06 +08:00
maogeigei de77425fcb feat(workshop): AI创作弹窗需求区默认折叠可点击展开(标题行+已填计数+箭头动画) 2026-09-02 18:13:40 +08:00
maogeigei 446c5119d2 fix(workshop): AI创作弹窗需求区改单列清单(一行一维度) + 提交创作加确认弹窗
- style.css: .req-sheet 双列卡片网格→单列清单式(grid 1fr);.req-field 改 flex 维度名左标签+内容同行;max-height 290→340;新增 .req-confirm-* 确认弹窗样式
- data-pages.js: reqCreate 点击先 loadPersona 再弹确认弹窗(达人/S1-S11说明/已填需求 n/10/人设附件状态),确认后才 executeTask;取消/遮罩/X 均不提交
2026-09-02 18:08:24 +08:00
maogeigei d32492ee8a fix(workshop): 提炼账号设定/生成分镜/复盘三入口prompt统一加技能前缀(提示词与技能边界分离)
- 新增 SKILL_HINT_EXTRACT(mcn-dou-analysis功能三)/SKILL_HINT_STORYBOARD(mcn-video-prompt F4)/SKILL_HINT_REVIEW(脚本复盘) 三常量,与 SKILL_HINT_CREATE 同层管理
- 三处调用点(提炼confirmRun/生成分镜confirmRun/复盘startReview)改为前缀+业务正文拼接,技能声明不再混写进业务字符串
- 复盘按钮 desc/prompt 按有无源脚本动态分支,提示词仅保留用户可见摘要
- EXTRACT 文案规避 server.js BROWSER_HINT 正则命中(不执行数据抓取流程字样)
- 验证: node --check 通过; 四前缀均不命中 BROWSER_HINT 正则; 服务端 JS 已含全部常量
2026-09-02 17:32:18 +08:00
maogeigei 35778e09be fix(workshop): AI创作弹窗提交任务补拼SKILL_HINT_CREATE自动模式声明(防S1-S11跳步直出S9)
- 根因: 弹窗 reqCreate 提交(L386)只调 buildCreatePrompt() 裸需求 prompt, 漏拼 SKILL_HINT_CREATE 流程约束前缀(详情页入口 L711/L920 从 ef98395 起都拼了, 弹窗 v2-v6 迭代漏跟)
- 导致: 创作指令任务收到无流程约束的 prompt → 模型按自动模式语义误读'后台静默=可跳步' → 只读 S9 规范一步直出, S5-S8 脑内带过
- 修复①: SKILL_HINT_CREATE 补'本任务以⚡自动模式执行: 严格按 S1-S11 步骤顺序逐步走完...禁止跳过或合并中间步骤一步直出成品'声明(对齐创作流程规范'后台静默≠跳步'P0)
- 修复②: 弹窗 reqCreate 提交拼 ${SKILL_HINT_CREATE}\n 前缀, 与详情页入口对齐
2026-09-02 17:14:57 +08:00
maogeigei 25396a9765 fix(workshop): AI创作弹窗v6.2 输入框默认两行空间(min-height 30→60+rows=2) 2026-09-02 16:50:59 +08:00
maogeigei b9896a1f75 fix(workshop): AI创作弹窗v6 确认按钮移入输入框工具栏 + 间距10px 2026-09-02 16:47:48 +08:00
maogeigei 39bc9e7879 fix(workshop): AI创作弹窗v5输入框布局对齐WorkBuddy参考(输入区在上/工具栏在下/外框圆角)
* data-pages.js confirmAiScript HTML 重排:paperclip/textarea/send 横向→textarea 上+toolbar 下
  (toolbar 内 paperclip + spacer + send)
* style.css:
  - .req-input-box flex row→column;border-radius 12→14;padding 0(让内部块各自控)
  - .req-input width:100%+box-sizing:border-box;padding 10/14/6
  - 新增 .req-input-toolbar(.req-spacer flex:1 推开两钮)
  - .req-send 34×34→32×32 圆角50%(贴合 WorkBuddy 圆形发送)
  - .req-paper 28×32→32×32(与 send 视觉对齐)
* CDP 9224 验证:结构(列向/圆角/toolbar 位置/按钮分布)全绿+autoGrow 多行自然下移
* 设计:req-create 仍保留在 .req-bar 左侧独立(对应弹窗外功能,不入输入框)
2026-09-02 16:36:58 +08:00
maogeigei a92d84dcc9 feat(workshop): AI创作弹窗v4-上传需求附件(doc/docx/txt/pdf)→AI打磨携带+创作上下文
* attachment-parser.js 零依赖(node:zlib)txt/docx/pdf纯文本提取;.doc明确400报错
* server.js 新增 POST /api/req/parse-attachment(20MB/30MB/3万字符限);
  /api/ai/clarify 入参增 attach 拼【附件素材】段(2万字符)
* data-pages.js confirmAiScript:req-input-box内左侧回形针(新ICON_PATHS paperclip)
  + 隐藏 file input + attach chip 行(paperclip+文件名+字数+×);
  空输入但有附件自动发引导语;sendTurn 携带 attach;
  buildCreatePrompt 增第5参 attachText→【附件素材】段并入创作 prompt
* style.css:req-attach-row/req-chip/chip-x/req-paper 系列样式;req-input-box padding-left 调
* 端到端 4 路径 API 验证 OK;CDP 9224 冒烟(纯Runtime+DataTransfer 注入 + 持久WS)全绿;
  真实 Dify 一轮打磨确认附件诉求已吸收进需求清单
* 测试样例 tmp/attach-tests/{req.txt,req.docx,old.doc}.b64(make_samples.py)
  9-02 16:31 已改中立内容,避免冒烟带真实账号名
2026-09-02 16:31:57 +08:00
maogeigei 1a8f4456ec AI创作弹窗 v3 补完:textarea auto-grow + placeholder 单行化 + req-head 换行提示
参考 WorkBuddy 输入框体验补完最后细节:

- textarea auto-grow(data-pages.js confirmAiScript):
  - 新增 autoGrow() 闭包:style.height = auto + Math.min(scrollHeight, 100)px
  - input 事件绑定 autoGrow,输入多行自动增高(上限 100px = CSS max-height)
  - sendTurn 清空 + 错误恢复 input 后调 autoGrow 复位
  - 验证 cdp-autogrow-check.mjs:before 32→after 100(5 行 116px cap 到 100px),清空回 32 ✅
- placeholder 单行化(去掉"(Enter 发送,Shift+Enter 换行)"——rows=1 只显示一行,第二行被截断)
- req-head 末尾补"Enter 直接发送,Shift+Enter 换行"提示,键盘说明从 placeholder 迁到头部更显眼

git status 仅 2 文件(+25/-5),按 2 小时节奏暂不 push。
2026-09-02 16:14:50 +08:00
maogeigei e8fcb02be4 AI创作弹窗 v3:需求维度块+一体输入条(图标钮·去取消)
按用户 UI 要求收紧弹窗体验:

HTML(data-pages.js confirmAiScript):
- 弹窗加高 width 720→760 + height:min(840px,92vh) flex column
- 需求区改为 req-field 维度块(rf-title 标题在上,rf-val 内容在下),CSS 2 列 grid
- 输入条一体化:req-bar = [reqCreate ✓图标] [req-input-box 圆角胶囊(内嵌 textarea + 右侧 reqSend ↑图标)]
- 取消按钮整段删除(保留右上 × 关闭);提交创作改用 #reqCreate id + svg check 图标
- 附 ICON_PATHS 加 arrow-up/check 路径

CSS(style.css .req-* 段全重写 L209-272):
- .req-modal flex column gap:10px
- .req-sheet grid 2 列 + .req-field 卡片底(empty 浅色)
- .req-input-box 圆角 12 + focus-within halo + 无边框 textarea + 34x34 primary 蓝圆发送钮
- .req-send busy 状态:disabled 灰 + 14x14 白色旋转 spinner(@keyframes req-spin)
- .req-create 44x44 描边 ✓ 图标钮(hover 浅蓝底)

附带红利:弹窗提交按钮改 id 后,与账号列表 [data-create] 同名选择器歧义自然消失(之前 CDP 冒烟需 .req-modal [data-create] 限定,现改 #reqCreate 直接命中)

冒烟 cdp-req-v3-smoke.mjs 24s 一轮真打磨+提交捕获全绿:fields:10/empty:10/modalH:784/sendIsIcon:true/createIsIcon:true/hasCancel:false + 提交{label:创作指令, skills:[短视频脚本创作], hasPersona:true, reqRows:6, modalClosed:true}
2026-09-02 16:11:00 +08:00
maogeigei 7984520728 AI创作弹窗对话打磨 v2:单弹窗需求框+输入框+AI全程引导
废弃旧分步向导+跨会话打磨+md载入路径,改为单弹窗 confirmAiScript 重写。

改动:
- public/data-pages.js: confirmAiScript v2(L199-326)= REQ_FIELDS 10 项常量 + 顶部10行需求框常显(空值灰显"待定·由AI按人设自决")+ 中部对话流(u/ai气泡)+ 底部输入行 + 取消/提交创作;无 step/chip/AI按钮/载入按钮/上下步
- public/style.css: 删 .wizard-modal/.wz-/.ai-topic 旧样式;新增 .req-modal/.req-sheet/.req-dialog/.req-msg.mine/.req-msg.ai/.req-bubble/.req-input-row/.req-input/.req-send 全套
- server.js: 新增 POST /api/ai/clarify(紧跟 /api/ai/topics 之后)= 同步阻塞 Dify chat-messages 100s AbortController;入参 {accountName,turn,reqMd,history};query 拼装账号人设+当前需求+最近2轮历史+本轮输入;强制输出"对话+==REQ==+10行需求"模板
- 记忆:MEMORY.md 核心技能段补"AI创作弹窗对话打磨 v2"长期记忆;2026-09-02.md 追加完整收尾日志

关键设计:每轮重发 reqMd + 最近 2 轮 history 做无状态上下文;AI 可更新任意字段但严禁生成脚本正文;reqLines 仅取非空字段 + "未填由AI按人设自决"提示。

冒烟 tmp/cdp-req-dialog-smoke.mjs(CDP 9224)4 步端到端 53s 全绿:结构✓/双轮真实Dify打磨✓/需求框0→6→8字段✓/提交捕获{label:创作指令,skills:[短视频脚本创作],hasPersona:true,reqRows:8,modalClosed:true}✓。
2026-09-02 16:00:46 +08:00
maogeigei afc45b7710 fix(workbench): AI脚本诊断标题弹窗对齐AI写脚本查看弹窗——rw-stack三列(源脚本可折叠|AI脚本版本切换|AI诊断:评分条+问题清单+评语+查看完整复盘报告),未诊断显示空态+开始复盘按钮,复盘运行中禁用更新诊断(09-02) 2026-09-02 14:37:14 +08:00
maogeigei 1444f59e42 fix(workbench): 复盘按钮按有无源脚本动态分支prompt——无源(输入选题/未解析视频)仅AI脚本评分,禁幻觉对比;查询失败保守沿用三模式(09-02) 2026-09-02 14:26:56 +08:00
maogeigei 8c365d77e8 fix(workbench): AI脚本诊断生成方式列收拢两种取值——按video_id判定 参考选题/输入选题,删GEN死代码映射(09-02) 2026-09-02 14:22:30 +08:00
maogeigei d8ad2ccf0a feat(workbench): AI脚本诊断列表操作列表头居中(th-act)+已诊断行按钮改「更新」(按review_ai/compare done判定)(09-02) 2026-09-02 14:19:09 +08:00
maogeigei bceed5ba10 feat(workbench): 账号详情页抖音号可点击跳抖音主页——优先sec_uid拼/user/URL,兜底搜索链接,复用data-ext外链打开(09-02) 2026-09-02 14:16:25 +08:00
maogeigei b2c2c3eb42 fix(workbench): AI脚本诊断分页器右对齐——list-footer单元素(仅分页器)时margin-left:auto,与其他页批量栏+分页器布局一致(09-02) 2026-09-02 14:14:05 +08:00
maogeigei c21b5b43b9 feat(workbench): AI脚本诊断列表支持分页——每页20条前端切片,复用pager组件,空态colspan改动态(09-02) 2026-09-02 14:13:10 +08:00
maogeigei 44fa126bdd feat(workbench): 趋势图仅展示最新发布倒推半年数据(时间窗口过滤) 2026-09-02 11:40:43 +08:00
maogeigei f6ea791ac3 fix(workbench): 趋势图时间轴改从左到右新→旧(阅读习惯先看新发布) 2026-09-02 11:38:22 +08:00
maogeigei a0934c1a90 feat(workbench): 趋势图改单图双Y轴彩色版(点赞红/评论蓝,Y轴万单位) 2026-09-02 11:31:49 +08:00
maogeigei d9cbfd88b4 fix(workbench): 趋势图容器拆两层结构修复高度失效(CSS 后代选择器匹配) 2026-09-02 11:28:20 +08:00
maogeigei 77d037693a fix(workbench): 账号详情支持 hash 第三段直达 tab,趋势图失败显式提示 2026-09-02 11:26:30 +08:00
maogeigei cad356047c 工作台视频列表页新增点赞/评论趋势折线图(lieflat-charts G8 骨架)
- 引入 lieflat-charts 第三方图表技能到 subskills/(SKILL.md+catalog+templates,已删嵌套 .git)
- ECharts 6.1.0 本地化至 mcn-work-shop/public/vendor/(零 CDN 依赖,离线可用)
- 账号详情视频列表 tab 上方新增趋势图:X=发布时间升序,点赞/评论双序列面积折线
  (G8 Rainfall 骨架:双 grid 独立量级、同 X 联动 pointer、tipLight tooltip、quarticOut 入场)
- 全量视频数据单独拉取(pageSize=500,不随分页变化);numOf 解析 'x.x万' 文本
- V1.0/SKILL.md 登记 lieflat-charts 外部技能依赖
2026-09-02 11:09:12 +08:00
maogeigei d43578e820 账号详情:视频列表tab去掉标题,账号设定内容去左右20px间隔
- data-pages.js:persona tab 删除 <h3>视频列表</h3> 标题
- style.css:.persona-wrap padding 0 20px → 0
2026-09-02 10:55:12 +08:00
maogeigei dd15f12b58 账号信息精简:去掉简介行,账号定位收起改4行
- data-pages.js:info tab 删除「简介」info-row
- style.css:.clamp-text max-height 240px→96px(4行),展开按钮阈值 200→120
2026-09-02 10:53:39 +08:00
maogeigei 4473f159e5 工作台账号详情tab调整:账号设定内联信息页,视频列表移入persona tab并改名
- info tab:移除视频列表表格,内联展示账号设定(空态/文字版/卡片+文字切换),小节标题「账号设定」
- persona tab:改为视频列表表格+分页/批量,tab 标签改名「视频列表」
- persona 加载改为 info tab 首屏并行加载(dvP/await 拆分),tab 点击处理器去冗余
2026-09-02 10:51:40 +08:00