62 Commits

Author SHA1 Message Date
ABAPPLO
87f4d4066d feat: KOC详情弹窗 + 任务中心单入口改版 + 资源池默认合作方/采集兜底
KOC 详情弹窗(合作方/数据回收/工作台三处入口):
- 新增 KocDetailModal:基本信息 / 绑定KOC账号画像 / 参与任务记录 / 履约漏斗
- 工作台最近分发、回收队列账号名、截图回收合作方名、合作方页名称、分发详情头部合作方均可点开
- 分发表行点击仍打开分发详情(stopPropagation 隔离)

任务中心单入口改版(对齐"单任务双阶段"模型):
- 任务卡发布/回收面板整块可点,全卡仅保留一个「查看明细」,回收面板重复按钮移除
- 详情页自述身份:动态 label(任务详情·分发与回收一体/仅分发)+ 阶段徽章(含回收·截止/未开通回收)
- 内容分发表新增阶段筛选 chips(全部/待发布/已发布待数据/待收截图,未开通回收不显示截图项),筛选落空给专用空态文案
- 数据回收页入口文案改为「选择一个任务进入回收队列」,全站不再区分发布/回收两种任务类型

资源池 KOC 默认加入合作方 + 采集兜底:
- partners 新增 released_account_id(mysql/0023):显式解绑/被顶替的账号不再被默认合作方同步回填
- 任务未设置采集计划时,默认按发布时间起连续采集 7 天,等待文案显示「等待D1 · 默认7天」
2026-10-12 11:11:31 +08:00
ABAPPLO
c11afd5f99 feat: 采集失败KOC补交截图闭环 + 任务中心分发详情弹窗
公开数据补交闭环(F1):
- distributions 新增 public_metrics_screenshot_key(mysql/0022 迁移)
- KOC 门户:链接已回填但采集失败时展示补交数据截图入口(kind=public-metrics)
- 运营端:回收队列"核对补录"支持公开互动数据(赞/藏/评),按补交截图补录后采集状态置成功
- 企微催办:采集失败纳入待办(公开数据待补交)
- task-result-image 支持 kind=publish 输出发布截图

门户文案(F2):
- 自动采集数据明确"由系统每天自动采集,无需你填写",仅识别失败时才手动填写曝光/阅读

任务中心分发详情:
- 任务中心/数据回收的分发表行可点击,弹窗查看详情
- 详情按任务类型适配:发布阶段/数据回收(自动采集)/创作者数据(第7天)/截图回收四区块三段式布局
2026-10-09 17:02:46 +08:00
ABAPPLO
c686003cfb fix: 完成态判据统一为曝光+阅读齐+交互断点三处修复
- 创作者凭证提交(manual_metrics/submit_creator_metrics)的完成判据从
  d7_likes(全库无赋值方,永不触发)改为 exposure+views 齐,与采集侧口径
  对齐;管理端手动回填后同步 refreshTaskStatus 联动任务状态
- 回收队列头部改为「已发布 N / 总数」口径,未回填链接行不再计入
- 行内更新/补填笔记链接从原生 prompt 改为弹窗表单,失败保留已输入内容
- 顶栏「获取KOC领取链接」从导航跳转改为弹窗直接列出各任务领取链接,
  一键复制;弹窗内点击不冒泡误关
2026-10-08 15:17:14 +08:00
ABAPPLO
c54649258b fix: 修复两端走查发现的4个UI断点
- 门户回填表单:缺发布截图时提交按钮前置禁用并提示「先上传发布截图,
  链接回填需以截图为凭证」,不再等提交后才 toast 报错(服务端守卫保留)
- 门户笔记详情:回填链接前收起回收区块的说明与示例图,只留一行锁定提示,
  降低回填阶段信息密度
- 运营端分发表:数据状态按任务采集计划显示等待日(等待D{首个采集日}),
  未设置计划时显示「待设置采集计划」,不再写死「等待D2」
- 截图包回收清单:序号列对无 source_row 的内容回退行号;种子内容补
  source_row,演示数据导出不再出现空序号
2026-10-08 14:44:47 +08:00
ABAPPLO
2db06063ee fix: 采集失败不降级有数据分行+任务领取计数对齐实际分发行数
- 采集失败时按 latest_likes 分流:无数据才标 failed,已有历史数据保持
  success 并注明沿用上次数据,collection_updated_at 不动;run 行照实记失败
- 种子 seedIfEmpty 末尾统一对账 claimed_quantity,杜绝演示数据口径漂移
- 新增 mysql/0021 对账迁移,修复 0020 物理合并遗留的生产计数漂移
- 运营端展示全面改读实时 dist_total(任务卡双面板/项目树/概览/进度),
  project-service 查询补 dist_total 子查询
- 走查实证:卡片 7/18 vs 详情已领取 2 两处口径打架;保存采集计划补采
  失败会把历史成功行改写为 failed
2026-10-08 14:30:36 +08:00
ABAPPLO
ec45e7318c test: 门户守卫测试对齐任务模型物理合并
e2a93e2 将 screenshot_collect 并入单任务双阶段(先发布后回收截图)时漏改
koc-portal/tests,两条源码守卫断言失配导致 CI 失败:

- note-index 完成态改为仅看 publish_url 的单分支断言
- 截图任务用例改为合并后的回收截图模型:recoveryEnabled 守卫、
  先回填发布链接再传截图的门槛、批次回收进度、回收示例图,
  并加 doesNotMatch 防止回退 screenshot_collect/isScreenshotTask 旧模型
2026-09-28 13:48:37 +08:00
ABAPPLO
e2a93e22cf feat: 任务模型物理合并,发布+回收并为单任务双阶段
- tasks 新增 recovery_enabled/recovery_due_at/recovery_instructions/recovery_example_images,回收挂自己名下(先发布后交截图),不再置 complete
- 存量 screenshot_collect 迁移并入父任务后删除(mysql/0020 含 DELETE,生产执行前务必备份)
- 新 action task_enable_recovery:ghost 面板一键开通回收,截止默认=发布截止
- 企微催办双阶段(待发布/截图待提交);超期自动释放仅发布阶段
- admin 删 groupTaskMasters 聚合改单卡双面板;portal 详情页回收截图区块+批次回收进度
- 测试 309 全绿 + Playwright E2E 20/20
2026-09-24 15:52:45 +08:00
ABAPPLO
ab78b187c0 feat: 项目层级树+合作方绑定KOC资源+客户群全量可选+精简编辑表单,移除复盘报表
- 项目支持父子层级:树形折叠展示、详情面板内联管理总群成员、推送聚合子项目任务、环检测与子项目删除守卫
- 外部KOC合作方绑定 KOC 资源账号(唯一占用、换绑/解绑、资源页一键设为合作方),列表直显联系方式
- 绑定客户群改为全量外部群缓存(含各群主),同步按钮强刷;member_count 缺失以 member_list 兜底
- 任务/项目编辑模式隐藏不可变字段(平台/内容类型/品牌/总群成员),详情面板维护成员时保留 parent_id
- 删除复盘报表整栏(导航/页面/task_report_list/导出路由/CSV lib 及测试)
2026-09-23 11:13:17 +08:00
ABAPPLO
8f1ebf7697 feat: 负责人下钻视图+项目负责人编辑管理+企微授权自助绑定
- 任务/项目负责人 union scope:任务中心分组视图、工作台项目进度卡、收录验证列
- 项目负责人可管理自己项目:编辑/删除项目、编辑任务、分配负责人、推送、项目内建任务;堵死转移归属/越权新建/任务迁移
- 只读依赖放开给已登录:inspect_feishu、wecom_list_internal_contacts
- 企微 OAuth 自助绑定:/api/wecom-bind(state 签名校验+登录态一致性+归属冲突检查),未绑定 banner 增加入口
- 工作台项目进度卡与未绑定 banner 排版修复
- 修 user-auth 判空分支被 Turbopack dev 折叠删除导致匿名请求 500
2026-09-17 15:21:24 +08:00
ABAPPLO
dd5b603149 feat: 项目总群自动建群+任务负责人后台视角+客户群活码进群+任务编辑
- 项目总群:≥3 人 appchat/create 自动建群(chatid=pgc+projectId),成员 diff 增删同步;DROP project_group_chats;推送改 appchat/send 群发、无群降级逐人
- 任务负责人:tasks.owner_userid(新建/编辑任务通讯录选人),task_set_owner 分配即预建 tgc 任务群发介绍,群主链接只归属负责人
- 任务编辑 task_update:基础字段+截图任务数量/关键词/说明,contents 调平只删 available 尾行
- 删除「一键推送」:task-one-click-push-service 整体移除(recordCardAck 移入 wecom-callback-events)
- 负责人后台视角:users.wecom_userid 绑定,lib/owner-scope 行级过滤(undefined=全量/""=空范围/非空=过滤),~30 action 补 managerGate/taskOwnerGate,owner 登录仅见工作台/任务中心/数据回收/复盘报表
- 任务绑定客户群+进群活码:tasks 增 customer_chat_id/name、join_config_id、join_qr_code 4 列,join_way add/update/get/del(换绑走 update 保 config_id 活码不变),后台「客户群」弹窗,portal 认领后扫码自助进群(满员自动开新群)
- 迁移 0013/0014/0015;催办支持按任务;企微可信域名 IP 验证文件
- 288 测试全绿;真机全链路验收通过(列群/活码四端点/portal 渲染/解绑清空)
2026-09-04 18:03:46 +08:00
ABAPPLO
5430624a43 feat: 企微通讯录选人替换手填 userid(项目负责人/总群成员/群主合作方)
- wecom-client 新增 listInternalContacts:department/list + 逐部门 user/simplelist(cursor 翻页、去重、部门名映射)
- 新 action wecom_list_internal_contacts(仅返回应用可见范围内成员)
- admin 新增 WecomUserPickerModal:单选点行填入/多选勾选合并,姓名+userid 搜索,5 分钟共享缓存
- 三处接线:项目负责人(单选)、项目总群成员(多选合并去重)、新建群主合作方(单选)
- 拉取失败(60020 等)提示手填兜底,手填路径不变
2026-09-03 13:52:10 +08:00
ABAPPLO
bd80b2d7d8 feat: 项目负责人+内部任务群+portal 内部身份领取+群主链接归属
- 迁移 0012:projects.owner_userid / tasks.task_chat_id / claims.owner_partner_id
- lib/task-group-service.ts:懒建 appchat 任务群(首个内部群主领取时创建,成员 diff 补员),播报/卡片文案
- wecom-client 新增 appchat create/update/get/send 封装
- OAuth ticket 增可选 uid(v:1 兼容),内部成员领取按 wecom_userid 解析群主身份
- 外部 OAuth 领取人 upsert 打 partner_type='group_owner'
- portal 链接带 ?owner= 穿透 OAuth 往返,claims 记录归属群主
- 后台任务卡「群主链接」面板:复制链接/推送内部群主/任务群状态
- 催办与超期升级同步播报进任务群
2026-09-03 11:30:26 +08:00
ABAPPLO
5d2a17f5b5 refactor: 项目中心合并进任务中心(导航 8→7,分组/平铺双视图)
manager 默认按项目分组(项目区块含总群成员/任务群关联/推送,末尾未分组任务),
可切换平铺;普通用户仅平铺列表无管理入口。任务卡抽为 TaskRowCard 双视图共用,
项目编辑/删除弹窗上提为受控组件,详情内任务表与区块任务卡去重(单任务推送
改走推送弹层任务下拉)。
2026-09-02 17:32:42 +08:00
ABAPPLO
7ebf8d4902 chore: 增加企业微信可信域名验证文件 2026-09-02 14:31:37 +08:00
ABAPPLO
5cb056507d fix: 催办按任务类型分流 + 领取事务加锁防超发
- 临期/超期/自动释放查询按 task_type 区分完成口径:内容任务看 publish_url,截图任务看 result_submitted_at,截图任务不再被永久误判为未发布
- portal 领取改为事务内 SELECT ... FOR UPDATE 锁定可用内容,消除并发领取超发窗口
2026-09-02 13:56:07 +08:00
ABAPPLO
e1005081fe refactor: 任务中心合并任务分发(导航 9→8,任务卡进入分发明细) 2026-09-02 11:25:16 +08:00
ABAPPLO
fb1551a3a4 docs: 企微化流程环境变量清单与部署指南(回调/回流/催办/复盘) 2026-09-01 17:47:51 +08:00
ABAPPLO
4c1ff2d5b8 feat: 复盘报表视图与 CSV 导出(manager 专属) 2026-09-01 17:46:11 +08:00
ABAPPLO
3e4269729c feat: 催办分层(超期升级+交互卡片)与超期自动释放开关 2026-09-01 17:37:35 +08:00
ABAPPLO
bca524417e feat: 数据回流通知(提交/采集结果推运营群,默认关闭) 2026-09-01 17:34:14 +08:00
ABAPPLO
d01281fba9 feat: 任务一键推送企微(总群+KOC个人直达+群发,含推送记录) 2026-09-01 17:30:47 +08:00
ABAPPLO
b243562e60 feat: 企微回调服务基建(加解密+事件分发,默认关闭) 2026-09-01 15:08:00 +08:00
ABAPPLO
ca3810a3d0 feat: 门户接入企微网页授权——企微内静默免输身份领取,浏览器外保留手动输入 2026-08-31 17:17:00 +08:00
ABAPPLO
6e590e3b08 feat: 任务领取/找回支持企微身份票据,领取自动绑定催办通道 2026-08-31 17:13:03 +08:00
ABAPPLO
b83a6a53c9 feat: 新增企微 OAuth 换码路由与 HMAC 身份票据服务 2026-08-31 17:11:20 +08:00
ABAPPLO
7f6c0e0983 feat: wecom-client 新增网页授权能力(授权 URL / code 换身份 / 外部联系人显示名) 2026-08-31 17:10:03 +08:00
ABAPPLO
a6f5a5fd4a feat: 新增项目中心——按项目组织任务/任务群/总群并一键推送
- 新表 projects / project_group_chats,partners 加 partner_type/wecom_userid,tasks 加 project_id(迁移 0010)
- 项目 CRUD、总群成员配置、任务群人工映射(群主→合作方)、任务挂项目
- 推送:总群成员逐人应用消息 + 任务群按群主企业群发,结果分项回显
2026-08-31 16:35:17 +08:00
ABAPPLO
ed13262166 feat: 批量更新账号资料支持勾选字段(含AI打标)
- 更新全部账号ID 升级为 批量更新账号资料:弹窗勾选 账号ID/昵称/粉丝数/IP属地/性别/简介/标签
- 标签勾选时调用 LLM 重新打标(覆盖已有标签),AI_TAGGING_TOOL 未配置自动跳过
- 只写入选中字段,爬取为空的字段跳过不清空;演示账号(xhs- 前缀)不参与
- .env.app.example 为 SEED_DEMO_DATA 补充注释
2026-08-28 14:00:07 +08:00
ABAPPLO
8e4e3de974 feat: KOC资源列表分页展示(每页15个) 2026-08-27 19:17:53 +08:00
ABAPPLO
dfc7dc217d feat: KOC资源页新增一键爬取更新全部账号ID 2026-08-27 18:54:55 +08:00
ABAPPLO
5614a13ebb feat: KOC资源卡片支持手动修改账号ID 2026-08-27 17:50:44 +08:00
ABAPPLO
9c37141399 merge: 合入 main(PR #4 搜索 API + MCP 截图识别),解决 .gitignore 冲突 2026-08-27 16:32:03 +08:00
ABAPPLO
b79117df9a fix: 移除 0001 初始化脚本中与 0006 迁移重复的列定义
gender/bio/tags 由 0006 迁移 ALTER TABLE 添加,0001 基础建表若同时包含
会导致全新安装执行迁移时报重复列错误。
2026-08-27 16:21:15 +08:00
ABAPPLO
db5c7522f7 refactor: 环境变量统一为 .env.app 单文件 + 清理死配置
- 新增 .env.app.example 统一模板(两套 compose 共用,数据库按模式分节注释),删除 .env.self-hosted.example / .env.production.example
- 部署指南与 README 的 --env-file 引用统一为 .env.app;.gitignore / .dockerignore 白名单同步调整
- runtime-env.ts 移除零消费的 MCP_API_KEY / COLLECTION_MCP_URL / COLLECTION_MCP_KEY 遗留声明
- .dockerignore 补充 .dev.vars 排除;mcp-task-server 测试改读新模板
2026-08-27 11:42:02 +08:00
ABAPPLO
cb010b6c5b chore: 根目录图片加入 .gitignore 并移除已入库的调试截图
- .gitignore 新增根目录 png/jpg/jpeg/webp 忽略规则(正式资源在 public/ 与 koc-portal/public/,不受影响)
- git rm --cached 移除 15 张 design-qa 调试截图(本地文件保留)
2026-08-26 17:40:10 +08:00
ABAPPLO
9b9f6a3520 feat: 新增生产环境 compose 编排(直连公共 MySQL)
- 新增 docker-compose.production.yml:仅 app + nginx,数据库连公司公共 MySQL,MYSQL_HOST/MYSQL_PASSWORD 必填校验
- 新增 .env.production.example 环境模板,.gitignore 白名单放行
- 修复 docker-compose.self-hosted.yml 漏转发 AI_TAGGING_TOOL 与 WECOM_* 共 7 个环境变量
- 部署指南补充两套编排文件选用说明与生产启动命令;忽略真实账号数据 CSV 防误提交
2026-08-26 17:28:25 +08:00
ABAPPLO
4a64feee02 feat: KOC 资源导入后自动爬取主页资料并调用 LLM 打标签
- 新增 structured_text_process 打标客户端(文本构造、标签解析清洗、MCP 调用)
- 写库后后台打标(tagUntaggedAccounts),单条新增 / 批量导入 / 每日补全三个入口统一
- 标签只补空,UPDATE 带 tags 为空守卫,不覆盖已有标签
- 新增 AI_TAGGING_TOOL 配置项(留空关闭),更新配置示例与文档
- 新增 16 个打标测试用例,全量 131 个测试通过
2026-08-26 15:21:28 +08:00
7bb4e0c493 Merge pull request 'feat: 新增搜素 API' (#4) from feature/search-api into main
Reviewed-on: #4
2026-08-20 10:44:25 +00:00
kaixianzheng
08bde54d74 feat: 新增搜素 API 2026-08-20 17:11:15 +08:00
ABAPPLO
9697b5890d feat: 任务发布到企微客户群(企业群发)与资源库单条新增
- 任务中心新增「发布到企微群」:同步客户群清单(wecom_group_chats)、
  按群主分组创建企业群发任务(add_msg_template)、发送记录落库
  wecom_group_pushes,迁移 mysql/0009;lib/wecom-client.ts 补
  listCustomerGroupChats/createGroupMsgTemplate
- KOC 资源库支持单条新增:app/api/resources-insert + lib/resource-write,
  拆出资源写入公共逻辑供导入复用;0008 补合作方外部联系人字段
- 环境变量示例补企微凭证与 SEED_DEMO_DATA;next.config 增加
  allowedDevOrigins;CLAUDE.md 补充项目说明
- .gitignore 排除 .codegraph/ 与 .ipynb_checkpoints/
2026-08-20 15:16:18 +08:00
巫凤萍
ab3a544eec feat: add MCP creator screenshot metrics recognition 2026-08-19 15:08:17 +08:00
8f7ea0558d Merge pull request 'feat: 接入企业微信通知(临期催办 + 群机器人汇总)' (#3) from feat/account-tags into main
Reviewed-on: #3
2026-08-18 09:12:59 +00:00
ABAPPLO
f2ac751c4c feat: 接入企业微信通知(临期催办 + 群机器人汇总)
新增 lib/wecom-client.ts 与 lib/wecom-notifier-service.ts,支持
群机器人 webhook 与应用消息双通道;scheduler 加入临期 N 天催办
与每日管理员汇总;action 路由补 bind_wecom_external_id 与
send_test_wecom 两个管理端动作,配套测试。
2026-08-18 17:05:16 +08:00
巫凤萍
cac6c5e83b fix: 修复回填更新与截图刷新 2026-08-16 22:22:50 +08:00
巫凤萍
74671a9b9f docs: 更新 main 私有化部署指南 2026-08-15 03:57:50 +08:00
巫凤萍
f37d05dd88 feat: 完善视频任务与 KOC 资源库 2026-08-15 03:53:09 +08:00
巫凤萍
ad3dbdcc86 feat: collapse mobile note after first backfill 2026-08-12 20:44:57 +08:00
巫凤萍
ee6caaf9e5 fix: type resource import enrichment fallback 2026-08-12 19:59:38 +08:00
巫凤萍
e05041e037 fix: preserve KOC portal path in delegation links 2026-08-12 19:53:19 +08:00
巫凤萍
51934b0638 feat: simplify KOC resource imports 2026-08-12 17:51:57 +08:00