生成时间:2026-05-28
分析范围:/Users/samlee/Documents/works/image_article_comprehension 源码、PostgreSQL open_aigc.public 只读实连统计、MySQL open_aigc_pattern 与 aigc-admin-prod 连接/元数据核验。
核验方式:PostgreSQL 使用 default_transaction_read_only=on 查询元数据和统计;MySQL open_aigc_pattern 的 RDS 域名会被本机/VPN Fake-IP 路径接管且 SQL 握手失败,但真实内网地址 192.168.202.204:3306 可只读实连;MySQL aigc-admin-prod 只查询 information_schema 字段元数据,不读取 cookie 行值。
安全说明:本报告不复写数据库密码原文;密码原文按用户要求只写入同目录 Excel 的
数据库清单sheet。
2026-05-29 追加核验口径:Excel 的“源表 -> 去重 -> embedding -> 距离矩阵 -> DBSCAN -> batch -> 分类 agent -> global 三表”是真实存在的聚类辅助分类/embedding 分类链路;但 scripts/run_classify.py 主入口不把 element_dedup_group、source embedding cache、距离矩阵、DBSCAN 当硬前置。狭义 Pattern V2 是 pattern_mining_* 快照和 pattern 挖掘,不生成 global 三表;如果口头把整个 pattern_global_v2 服务都叫 Pattern V2,则其中分类库阶段会写 global 三表。MySQL open_aigc_pattern 当前通过真实内网地址 192.168.202.204:3306 只读复核成功,但只影响 build 工作台和旧兼容层口径,不改变分类库与 Pattern V2 主链路。完整修订见 /Users/samlee/Documents/works/数据工程/pattern-global-v2-full-data-algorithm-report.md。
本项目当前只按 3 个有效数据库整理:
| 数据库 | 定性 | 本项目角色 |
|---|---|---|
PostgreSQL open_aigc.public |
分类库 + pattern v2 + 原始解构主库 | 接收 topic/script 解构结果,沉淀去重、分类树、映射、embedding、pattern 快照和 pattern v2 输出 |
MySQL open_aigc_pattern |
构建工作台库 | 记录选题构建、脚本构建、prompt/strategy、外部搜索日志、输入缓存/配置,以及旧版兼容 topic_pattern_* 表 |
MySQL aigc-admin-prod |
AIGC 后台辅助库 | 当前代码只用于浏览器工具读取 agent_channel_cookies 的 cookie/profile 元数据,不是 pattern 加工输入库或输出库 |
两个已确认废弃库已从本报告和 Excel 的主数据流转中删除,不再纳入本项目数据工程口径。
主数据链路是:上游内容或解构 JSON/API 进入 open_aigc 原始表,经过 dedup、embedding/距离矩阵、DBSCAN 聚类辅助、分类 agent 写入全局分类体系,再由 pattern snapshot 和配置化挖掘产出 pattern v2 结果。patter_from_global_and_build 消费 open_aigc / pattern v2 查询能力,把选题和脚本构建过程写入 open_aigc_pattern。
需要特别修正的口径:
run_daily_main.py 当前默认只启用 topic_element FP-Growth;topic、point_pattern、cross_layer、paragraph、script_sequence 等 loop 是可配置能力或历史输出,不能写成当前默认都会跑。open_aigc_pattern 是当前 topic/script build 工作台库,不只是旧兼容库;其中 topic_pattern_* 是旧本地 mining/兼容/展示兜底层,当前 library/account pattern 查询更应以 pattern_global_v2 HTTP debug API 和 open_aigc 的 pattern v2 表为准。aigc-admin-prod 不提供外部搜索 case 数据;外部搜索来自 HTTP/crawler/aigc-channel/tophub 等接口,结果落 open_aigc_pattern.external_search_case_log。post_decode_topic_point_element 已有 topic 侧 感受 数据,实测 38,773 行,但当前 element_dedup_group 和当前全局映射尚未承接这部分口径。| 数据库 | 实例名/实例ID | 实例连接地址 | 当前解析/peer | 连接状态 | 用途 | 配置来源 |
|---|---|---|---|---|---|---|
PostgreSQL open_aigc.public |
gp-t4n72471pkmt4b9q7o-master |
gp-t4n72471pkmt4b9q7o-master.gpdbmaster.singapore.rds.aliyuncs.com:5432 |
198.18.0.45:5432 |
只读实连成功 | 原始解构、全局分类、embedding、dedup、pattern v2 快照和输出 | aiddit/pattern_global_v2/db/pg_db_manager.py:13、docker/Dockerfile.pattern_global_v2:21、patter_from_global_and_build/library_data/library_db_manager.py:12 |
MySQL open_aigc_pattern |
rm-bp1k5853td1r25g3n690 |
rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com:3306 |
域名 Fake-IP 本轮 198.18.0.59:3306;真实直连 192.168.202.204:3306 |
域名 Fake-IP 路径 TCP 可连但无 MySQL greeting;真实内网地址只读实连成功,35 张表、332 个字段 | 选题/脚本 build 工作台、prompt/strategy、外部搜索缓存、配置/输入缓存、旧 topic_pattern_* 兼容层 |
aiddit/pattern/patter_from_global_and_build/db_manager.py:11 |
MySQL aigc-admin-prod |
rm-t4na9qj85v7790tf84o |
rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com:3306 |
198.18.0.86:3306 |
实连成功;只查 agent_channel_cookies 字段元数据,不读 cookie 行值 |
AIGC 后台浏览器工具 cookie/profile 辅助库 | aigc_agent_sdk/Agent/agent/tools/builtin/browser/sync_mysql_help.py:27、browser/baseClass.py:520 |
open_aigc 表规模| 表 | 2026-05-28 实测值 | 业务域 |
|---|---|---|
post |
66,974 | 内容主表 |
post_decode_result |
66,670 | 选题解构结果 |
post_decode_topic_point |
572,780 | 选题点 |
post_decode_topic_point_element |
1,308,993 | 选题点元素 |
post_script_paragraph |
12,164 | 脚本段落 |
post_script_element |
47,951 | 脚本一级元素 |
post_script_paragraph_element |
110,999 | 段落元素关联 |
post_script_paragraph_field_element |
177,856 | 段落字段元素 |
element_dedup_group |
262,326 | 去重组 |
global_category |
4,944 | 全局分类树 |
global_element |
290,864 | 全局元素 |
element_classification_mapping |
1,123,373 | 源元素到全局元素/分类映射 |
global_element_embedding |
455,269 | 元素向量 |
global_category_embedding |
8,860 | 分类向量 |
pattern_mining_execution |
7 | pattern v2 执行 |
pattern_mining_category |
25,816 | pattern 分类快照 |
pattern_mining_element |
1,950,755 | pattern 元素快照 |
pattern_mining_config |
45 | pattern 挖掘配置 |
pattern_itemset |
449,216 | FP-Growth 结果 |
pattern_itemset_item |
1,808,629 | itemset item |
pattern_itemset_post |
3,910,262 | itemset 支撑 post |
pattern_script_sequence |
2,753 | PrefixSpan 序列 |
pattern_script_sequence_item |
7,873 | 序列 item |
pattern_script_sequence_post |
15,907 | 序列支撑 post |
pattern_group_itemset |
2,997 | topic point/group pattern |
pattern_group_itemset_item |
6,138 | group itemset item |
pattern_group_itemset_member |
39,191 | group itemset 成员 |
post_decode_topic_point_element| 分类维度 | 元素行数 | 覆盖 post | distinct 元素名 |
|---|---|---|---|
| 实质 | 681,856 | 66,069 | 165,839 |
| 形式 | 537,947 | 65,899 | 56,975 |
| 意图 | 50,417 | 47,572 | 743 |
| 感受 | 38,773 | 12,827 | 361 |
topic 侧 感受 已经是实测存在的数据,不再沿用旧报告“只有 3 行”的说法。但 dedup、聚类入口和当前全局映射尚未承接 感受 + post_decode_topic_point_element。
post_script_element| 分类维度 | 元素行数 | 覆盖 post | distinct 元素名 |
|---|---|---|---|
| 实质 | 31,872 | 1,936 | 12,572 |
| 形式 | 16,079 | 1,952 | 9,055 |
post_script_paragraph_field_element后续 dedup、paragraph pattern 和 script sequence pattern 的业务维度以 field_type 为核心:function -> 作用、feeling -> 感受,theme/form 再结合 element_type 归入“实质/形式”。
| 流转维度 | field_type | 元素行数 | 覆盖 post | distinct 元素名 |
|---|---|---|---|---|
| 作用 | function | 28,895 | 1,931 | 8,422 |
| 实质 | form | 40,207 | 1,926 | 13,084 |
| 实质 | theme | 41,699 | 1,932 | 20,760 |
| 形式 | form | 31,481 | 1,930 | 6,758 |
| 形式 | theme | 7,038 | 1,303 | 2,979 |
| 感受 | feeling | 28,536 | 1,932 | 2,194 |
| loop | 当前状态 | 输入 | 输出 | 说明 |
|---|---|---|---|---|
| topic/script 导入 | 保留主加工 | 上游 JSON/API/ODPS | post_decode_*、post_script_* |
pattern_global_v2/data_io 写入 open_aigc |
| dedup 同步 | 保留主加工 | 3 张原始元素表 | element_dedup_group |
1 张表内按 source_type + source_table 分 9 个处理组合,不是 9 张 dedup 表 |
| source embedding | 保留辅助加工 | dedup 代表元素、已有全局元素向量、embedding API | 本地 cache/embeddings_{source_table}.ids.npy/.vecs.npy;可复用/补写 global_element_embedding |
原始 source 元素没有独立 DB embedding 表;本地 cache 是矩阵输入 |
| 距离矩阵 | 保留主加工 | 9 组 dedup 代表元素 embedding | 本地 cache/dist_rows_{source_type}__{source_table}.bin/.idx.npz |
距离矩阵不是数据库表;每个 source_type/source_table 一组矩阵文件 |
| DBSCAN 聚类 | 保留辅助加工 | 距离矩阵 | 当前 cluster_on_demand.py 返回内存聚类结果;旧/归档路径可写本地 cache/global_clusters_{source_type}_{source_table}_{timestamp}.json |
聚类不直接写分类树,只辅助分类 agent/人工批处理;JSON 不是当前必经落地产物 |
| 分类 agent | 保留主加工 | cluster batch 或未分类元素 | global_category、global_element、element_classification_mapping;辅助写 classify_*、global_*_embedding、post_classification_status |
pattern v2 快照的事实基础 |
| pattern snapshot | 保留主加工 | 当前全局分类树和映射 | pattern_mining_execution/category/element |
每次 execution 固化当时分类视图 |
| topic_element FP-Growth | run_daily_main.py 默认启用 |
pattern_mining_element topic 元素 |
pattern_itemset* scope=topic_element |
当前默认唯一启用的挖掘 loop |
| topic FP-Growth | 可配置启用/历史输出 | topic 分类 item | pattern_itemset* scope=topic |
ENABLE_TOPIC=False |
| point pattern | 可配置启用/历史输出 | topic point/group transaction | pattern_group_itemset* |
ENABLE_POINT_PATTERN=False |
| cross_layer | 可配置启用/历史输出 | fully_classified post | pattern_itemset* scope=cross_layer |
ENABLE_CROSS_LAYER=False |
| paragraph | 可配置启用/历史输出 | paragraph transaction | pattern_itemset* scope=paragraph |
ENABLE_PARAGRAPH=False |
| script sequence | 可配置启用/历史输出 | 段落顺序 | pattern_script_sequence* |
ENABLE_SCRIPT=False |
MySQL topic_pattern_* 本地 mining |
兼容/展示兜底层 | v2 export API 快照 | open_aigc_pattern.topic_pattern_* |
非当前 pattern v2 主事实;当前 library/account pattern 查询默认看 v2 HTTP debug API |
| AIGC 后台 cookie/profile | 外部辅助 | agent_channel_cookies 元数据 |
浏览器工具登录态 | 不参与 pattern 加工,不读 cookie 行值 |
聚类完整链路只使用 PostgreSQL open_aigc.public 作为数据库;open_aigc_pattern 不参与原始元素去重、embedding、距离矩阵、DBSCAN 或分类树写入。需要特别区分:element_dedup_group 是 1 张数据库表中的 9 个处理组合,不是 9 张表;embedding 和距离矩阵大量落在本地 cache/ 文件,DBSCAN 当前可跑入口返回内存结果,旧/归档路径才会写 global_clusters_*.json。
| 阶段 | 输入 | 加工方式 | 生成数据 | 写入/落地位置 |
|---|---|---|---|---|
| 原始元素输入 | post_decode_topic_point_element、post_script_element、post_script_paragraph_field_element |
topic/script 解构导入后形成原始元素行 | 原始元素 ID、post_id、元素名、元素类型、描述、段落字段类型 | 3 张原始元素表 |
| 去重 dedup | 3 张原始元素表 | 按 source_type + source_table + normalized_name 分组;段落字段表中 function -> 作用、feeling -> 感受,theme/form 再结合 element_type 归入实质/形式 |
representative_id、member_ids、occurrence_count、dedup_key |
element_dedup_group |
| source embedding | dedup 代表元素 ID | 优先读本地 source embedding cache;缺失时尝试通过 element_classification_mapping -> global_element_embedding 复用已分类全局元素向量;仍缺失则调用 embedding API 并回写本地 cache |
source 元素向量 | 本地 cache/embeddings_{source_table}.ids.npy、cache/embeddings_{source_table}.vecs.npy;分类后新全局元素向量写 global_element_embedding |
| 距离矩阵 | 9 组 dedup 代表元素向量 | 计算 cosine distance,行存储 float16,增量追加 | 每组 source_type/source_table 的代表元素距离行和索引 | 本地 cache/dist_rows_{source_type}__{source_table}.bin、cache/dist_rows_{source_type}__{source_table}.idx.npz;旧格式兼容 cache/distance_matrix_{key}.npz |
| DBSCAN | 距离矩阵 | DBSCAN(metric='precomputed') 找相似元素簇 |
metadata、clusters[{cluster_id,size,member_ids}]、noise_elements;当前 cluster_on_demand.py 返回内存 dict |
旧/归档路径可写本地 cache/global_clusters_{source_type}_{source_table}_{timestamp}.json,但不是当前必经落地产物 |
| cluster batch | DBSCAN 内存结果或旧归档 JSON、element_dedup_group、element_classification_mapping、原始元素表 |
展开 dedup member_ids,过滤已在 mapping 中分类过的 source_element_id,再回原始表取元素名/描述 | 待分类 batch:representative_id、element_name、element_description、all_ids、cluster_id、source_table |
传给 classify agent;不直接写 DB |
| 分类 agent | cluster batch 或普通未分类 batch | agent tool 可查树、建分类、创建/复用全局元素、创建映射、刷新 post 分类状态 | 全局分类树、全局归一元素、原始元素到全局元素/分类的映射、执行日志、向量 | global_category、global_element、element_classification_mapping;辅助表 classify_execution、classify_batch、classify_execution_log、global_element_embedding、global_category_embedding、post_classification_status |
当前代码里还存在一个实现漂移,需要把“设计链路”和“当前可跑入口”分开看:ClusterBatchPreparer.cluster_all_elements() 同步矩阵时使用 source_type + source_table,但随后 load_or_create(source_type) 没带 source_table,与实际矩阵 key source_type__source_table 不一致;同文件 get_unclassified_from_cluster() 调用的 expand_dedup_groups 在 DedupManager 中实际方法名是 expand_members。因此当前更可信的聚类入口是 scripts/dedup_matrix/build_all_matrices.py 预构建 9 组矩阵,再由 scripts/dedup_matrix/cluster_on_demand.py 按 source_type__source_table 提取子矩阵做按需聚类;global_clusters_*.json 只能写作旧/归档式路径,不应写成当前必经产物。
聚类入口的原始元素表一共 3 张:
| 原始元素表 | 实测行数 | 聚类使用字段 | 进入哪些处理组合 |
|---|---|---|---|
post_decode_topic_point_element |
1,308,993 | id、post_id、element_type、element_name、element_description |
实质、形式、意图;topic 侧 感受 原始存在但当前 dedup/聚类组合未承接 |
post_script_element |
47,951 | id、post_id、element_type、name、element_description |
实质、形式 |
post_script_paragraph_field_element |
177,856 | id、paragraph_id、post_id、field_type、element_type、element_name、element_description |
实质、形式、作用、感受 |
element_dedup_group 仍为聚类前的关键缩减表。去重按 source_type + source_table + normalized_name 建组,代表元素用于 embedding 和距离矩阵。
| source_type | source_table | 去重组数 | 去重口径内出现行 | 最大组大小 | 平均组大小 |
|---|---|---|---|---|---|
| 作用 | post_script_paragraph_field_element |
8,422 | 28,895 | 1,326 | 3.43 |
| 实质 | post_decode_topic_point_element |
140,069 | 537,822 | 4,448 | 3.84 |
| 实质 | post_script_element |
12,562 | 31,872 | 292 | 2.54 |
| 实质 | post_script_paragraph_field_element |
30,830 | 81,906 | 1,155 | 2.66 |
| 形式 | post_decode_topic_point_element |
49,402 | 423,987 | 6,093 | 8.58 |
| 形式 | post_script_element |
9,053 | 16,079 | 211 | 1.78 |
| 形式 | post_script_paragraph_field_element |
9,151 | 38,519 | 1,437 | 4.21 |
| 意图 | post_decode_topic_point_element |
643 | 40,732 | 19,478 | 63.35 |
| 感受 | post_script_paragraph_field_element |
2,194 | 28,536 | 1,590 | 13.01 |
当前 topic 原始表已经增长,但 dedup 仍停在旧同步口径。例如 topic 原始 实质 是 681,856 行,而 dedup 中 实质 + post_decode_topic_point_element occurrence 仍是 537,822;topic 原始 感受 有 38,773 行,但 dedup 没有 感受 + post_decode_topic_point_element。
分类 agent 处理的是 cluster batch 或普通未分类元素 batch。DBSCAN 只提供“哪些元素相似”的候选簇,真正的全局归一和分类树写入发生在分类工具层:
| 写入表 | 写入内容 | 关键字段 |
|---|---|---|
global_category |
全局分类树节点,按 stable_id 维持逻辑稳定 ID,修改时用新行版本追踪 |
stable_id、name、description、parent_stable_id、source_type、classified_as、level、path、created_at_execution_id、retired_at_execution_id |
global_element |
全局归一后的标准元素;同名同分类可复用,复用时增加 occurrence_count |
id、name、description、belong_category_stable_id、source_type、element_sub_type、occurrence_count、created_at_execution_id、retired_at_execution_id |
element_classification_mapping |
原始 source 元素到全局元素和分类节点的映射 | source_table、source_element_id、post_id、element_name、element_type、global_element_id、global_category_stable_id、classification_path、classify_execution_id |
global_element_embedding |
新建或迁移后的全局元素向量,用于相似搜索和后续复用 | element_id、belong_category_stable_id、source_type、embedding_field、embedding_model、embedding、is_active |
global_category_embedding |
分类节点向量,用于分类树搜索、相似分类检索;分类名/描述变化时旧向量失活 | stable_id、source_type、embedding_field、embedding_model、embedding、is_active |
post_classification_status |
按 post/source_type/source_table 刷新分类完成度 | post_id、source_type、source_table、total_elements、classified_elements、is_completed |
“全局归一”的实际关系是:原始元素表中的一行或一个 dedup group member,最终通过 element_classification_mapping.source_table + source_element_id 指向一个 global_element.id;这个全局元素再通过 belong_category_stable_id 挂到 global_category.stable_id 对应的分类树节点。原始元素不被覆盖,映射表保存“原始元素 -> 全局标准元素 -> 分类路径”的关系。
统计口径:global_category.retired_at_execution_id IS NULL 和 global_element.retired_at_execution_id IS NULL。
| 分类树 | 活跃节点 | 根节点 | 叶子节点 | 最大层级 | 活跃 global_element | 映射行数 | 覆盖 post | 活跃 category embedding |
|---|---|---|---|---|---|---|---|---|
| 作用 | 185 | 2 | 140 | 8 | 4,753 | 25,298 | 1,907 | 362 |
| 实质 | 972 | 2 | 740 | 7 | 148,740 | 615,710 | 52,836 | 1,916 |
| 形式 | 624 | 2 | 458 | 6 | 60,384 | 470,315 | 52,710 | 1,248 |
| 意图 | 28 | 3 | 18 | 3 | 293 | 12,050 | 11,954 | 56 |
| 感受 | 46 | 2 | 36 | 3 | 0 | 0 | 0 | 92 |
感受 当前有分类节点和 embedding,但没有活跃 global_element / element_classification_mapping。这与脚本原始数据、dedup 和历史 pattern 快照中存在“感受”形成口径差异。
pattern_mining_execution 仍有 current 异常:#401 是 is_current=true 但 status=failed,#281 也是 current;#581 是最新成功执行但 is_current=false。API 如果只按 is_current 选 execution,可能会拿到失败快照。
| execution_id | snapshot_date | status | is_current | post_count | category_count | element_count | topic_itemset_count | topic_element_itemset_count | cross_itemset_count | paragraph_itemset_count | script_sequence_count |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 581 | 2026-05-09 | success | false | 13,265 | 1,932 | 290,467 | 35,406 | 18,491 | - | - | - |
| 541 | 2026-04-27 | running | false | 12,448 | 3,992 | 315,389 | - | 38,418 | - | - | - |
| 501 | 2026-04-27 | success | false | 12,448 | 3,992 | 315,389 | - | 26,070 | - | - | - |
| 421 | 2026-04-24 | success | false | 12,448 | 3,995 | 315,389 | 26,849 | 8,932 | - | - | - |
| 401 | 2026-04-23 | failed | true | 12,448 | 3,995 | 315,389 | - | - | 2,649 | 3,219 | 1,197 |
| 301 | 2026-04-21 | success | false | 11,760 | 3,955 | 199,366 | 928 | 388 | - | - | - |
| 281 | 2026-04-16 | success | true | 11,760 | 3,955 | 199,366 | 76,835 | 17,153 | 92,142 | 3,219 | 1,030 |
open_aigc_patternopen_aigc_pattern 是当前 topic/script build 工作台库,而不是当前 pattern v2 真相库。当前连接核验结论:
rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com:3306 会被本机/VPN Fake-IP 路径接管;本轮解析为 198.18.0.59,此前核验曾出现 198.18.0.47。该路径 TCP 可连,但收不到 MySQL greeting,PyMySQL 会报 OperationalError: (2013, 'Lost connection to MySQL server during query')。192.168.202.204:3306 只读实连成功,返回 MySQL 5.7.30-log;当前库实测 35 张表、332 个字段。表字段字典 已从 live information_schema 补齐此前缺失的 5 张表:account_constant、base_config、topic_build_strategy、topic_build_strategy_version、xhs_benchmark_account。2026-05-29 复核关键表规模:
| 表 | 2026-05-29 实测行数 | 角色 |
|---|---|---|
topic_build_record |
1,093 | 选题构建执行记录 |
topic_build_topic |
1,264 | 选题候选/结果 |
topic_build_composition_item |
22,579 | 选题组成元素 |
topic_build_item_source |
23,504 | 元素证据来源 |
topic_build_item_exploration_trace |
15,466 | item 探索轨迹 |
script_build_record |
269 | 脚本构建执行记录 |
script_build_paragraph |
945 | 脚本段落 |
script_build_element |
2,459 | 脚本元素 |
script_build_paragraph_element |
4,447 | 段落和元素关联 |
external_search_case_log |
12,043 | 外部搜索 case 缓存 |
prompt / prompt_version |
9 / 125 | prompt 当前版本和历史版本 |
build_strategy / build_strategy_version |
56 / 242 | 构建策略当前版本和历史版本 |
topic_pattern_itemset |
655,513 | 旧 topic pattern 本地 itemset |
topic_pattern_itemset_item |
3,007,048 | 旧 topic pattern item |
从 live schema、ORM 和业务工具看,保留这些 build 表组:
| 表组 | 主要表 | 用途 |
|---|---|---|
| 配置/输入缓存 | base_config、account_constant、topic_piaoquan_demand、xhs_benchmark_account、post |
默认 execution、批量配置、账号人设常量、票圈需求池、对标账号缓存和本地 post 元数据 |
| 选题构建 | topic_build_record、topic_build_topic、topic_build_composition_item、topic_build_item_source、topic_build_item_exploration_trace、topic_build_point*、topic_build_log |
记录需求、选题方向、构成 item、证据来源、探索轨迹、组合点和执行日志 |
| 脚本构建 | script_build_record、script_build_paragraph、script_build_element、script_build_paragraph_element、script_build_decision_trace、script_build_log |
记录脚本段落树、元素、支撑关系、决策 trace 和执行日志;script_build_provenance 为旧数据保留 |
| prompt/strategy | prompt、prompt_version、build_strategy、build_strategy_version |
复现构建策略和 prompt 版本 |
| 外部搜索缓存 | external_search_case_log |
保存 HTTP 外部搜索结果,用 channel_content_id 回查素材证据 |
| 兼容旧 pattern | topic_pattern_*、topic_pattern_account_itemset_cache |
旧本地 mining/兼容/展示兜底,不作为当前 pattern v2 主真相 |
当前 topic build 的 pattern/library 查询运行时默认转成 pattern_global_v2 HTTP debug API;script build 的创作 pattern 查询走 /api/pattern/creation-tools/debug。另有 library_data 通过 PostgreSQL open_aigc 直查 post / post_script_paragraph / post_script_element,用于参考脚本搜索。需要注意,topic_build_record.execution_id 不能简单理解为只指向 MySQL topic_pattern_execution.id:实测 build 记录中也出现 401、281、79 等远端/open_aigc pattern v2 execution 口径。
aigc-admin-prodaigc-admin-prod 当前在本项目中的代码用途很窄:
| 表 | 字段 | 用途 |
|---|---|---|
agent_channel_cookies |
cookies |
浏览器工具注入登录态,核验时未读取行值 |
agent_channel_cookies |
type |
渠道类型,例如 xhs/gzh/shp/github |
agent_channel_cookies |
profileId |
云浏览器 profile ID |
这张表服务的是内嵌 Agent SDK 的 browser helper,不是内容解构、分类、pattern 或 build 的主数据来源。外部搜索 case 不从该库读取;external_search_case 走 HTTP/crawler/aigc-channel/tophub/newrank 等外部接口,结果写入 open_aigc_pattern.external_search_case_log。
| 阶段 | 输入 | 关键处理 | 输出 | 下游 |
|---|---|---|---|---|
| 内容采集/外部输入 | crawler、ODPS、外部任务 API、本地 JSON | 采集或接收内容和解构结果 | 本地 JSON、post |
topic/script 导入 |
| 选题导入 | topic decode JSON | 写帖子、解构结果、topic point 和 element | post_decode_result、post_decode_topic_point、post_decode_topic_point_element |
dedup、分类、topic pattern |
| 脚本导入 | script split/decode JSON | 写段落、一级元素、字段元素 | post_script_paragraph*、post_script_element |
dedup、paragraph/sequence pattern |
| 去重 | 3 张原始元素表 | source_type + source_table + normalized_name 分组 |
element_dedup_group 1 张表内的 9 个组合 |
source embedding、距离矩阵、分类 batch |
| source embedding | dedup 代表元素、已有 global_element_embedding、embedding API |
复用或生成 source 元素向量 | 本地 cache/embeddings_{source_table}.*;分类后补写 global_element_embedding |
距离矩阵、相似搜索 |
| 距离矩阵 | 9 组 source embedding | 计算 cosine distance,行存储增量追加 | 本地 cache/dist_rows_{source_type}__{source_table}.bin/.idx.npz |
DBSCAN |
| 聚类 | 距离矩阵 | DBSCAN 聚相似元素,输出簇和噪音点 | 当前按需入口返回内存结果;旧/归档路径可写本地 cache/global_clusters_{source_type}_{source_table}_{timestamp}.json |
分类 agent/人工筛选 |
| 分类 | cluster batch 或未分类元素 batch | agent tool 创建/调整分类、元素、映射并刷新状态 | global_category、global_element、element_classification_mapping、classify_*、global_*_embedding、post_classification_status |
pattern snapshot/API |
| pattern 快照 | 当前分类树和映射 | 固化 execution 视角 | pattern_mining_execution/category/element/semantic_map |
挖掘算法 |
| 默认 pattern loop | pattern_mining_element topic 元素 |
topic_element FP-Growth |
pattern_itemset* |
visualization/build |
| 可选 pattern loop | topic/cross/paragraph/script 输入 | 按开关运行 FP-Growth/PrefixSpan | pattern_itemset*、pattern_script_sequence*、pattern_group_itemset* |
visualization/build |
| build 配置/输入 | open_aigc_pattern.base_config/prompt*/build_strategy*/account_constant/topic_piaoquan_demand/xhs_benchmark_account |
读取默认 execution、prompt、策略、账号常量、批量需求和对标账号缓存 | build 运行上下文 | topic/script build agent |
| 应用 build | pattern v2 HTTP API、open_aigc 帖子/脚本库、用户需求、策略/prompt、外部搜索 | 选题构建、脚本构建、证据追踪 | MySQL open_aigc_pattern 的 topic_build_*、script_build_*、external_search_case_log |
业务应用层 |
| 旧 pattern 兼容 | v2 export API 快照、本地 mining | 本地 topic pattern mining、详情页/脚本辅助兼容查询 | MySQL open_aigc_pattern.topic_pattern_* |
兼容展示和兜底,不替代 pattern v2 主事实 |
| 后台辅助 | aigc-admin-prod.agent_channel_cookies 字段元数据 |
提供 browser helper 登录态配置 | 浏览器工具运行态 | 外部网页/平台操作 |
pattern_mining_execution current 口径:只保留一条 current,且 API 查询 current 时增加 status='success' 保护。感受 的处理策略:当前 topic raw 有 感受,但 dedup/mapping/pattern active 口径没有承接。ClusterBatchPreparer 的矩阵 key 和 dedup 展开方法名与当前 manager 不一致,应统一到 source_type__source_table 和 expand_members,或明确只保留 build_all_matrices.py + cluster_on_demand.py 路径。cache/global_clusters_* 丢失后无法复盘哪次聚类辅助了哪批分类。open_aigc_pattern 域名 Fake-IP 路径:当前真实内网 IP 可读,但标准 RDS 域名仍会被 Fake-IP 接管并导致 MySQL 握手失败,建议在 VPN/代理规则中对该 RDS 域名走真实内网解析或直连路由。crawler/ODPS/上游解构 JSON/API
-> open_aigc.post + post_decode_* + post_script_* 原始解构仓
-> element_dedup_group + embedding cache + distance matrix 做元素归并和聚类辅助
-> global_category + global_element + element_classification_mapping 形成分类树和源元素映射
-> pattern_mining_execution + pattern_mining_category + pattern_mining_element 固化 pattern v2 快照
-> 默认 topic_element 及可配置 pattern loop 产出 pattern_itemset* / pattern_script_sequence* / pattern_group_itemset*
-> patter_from_global_and_build 消费 pattern v2、帖子库和外部搜索,生成选题/脚本并写 open_aigc_pattern。