ThearchyHelios
|
6dbe4ade17
|
合入数据目录闭环第一步:表助手(表详情页对话完善一张表,成批提出经校验的修改提案、拿不准的反过来问,只在开了数据剖析的源上经只读守卫跑查询、结果先遮,确认后一次保存并把依据另存为这一项的「确认时的依据」);审阅队列(按使用次数、风险、来源排序并写明理由,批量确认驳回逐表乐观锁,表被哪些运行用过,审阅进度);数据目录导出导入(先预览,确认和驳回的照带、冲突保留目标、推断只填空缺、对不上的跳过并写原因);起草时提议有效记录条件和去重规则(sqlglot 校验,开了剖析的源上核对排除比例);起草遗留:宽表逐段落进目录、停止和中断不丢、按比例止损、块进度、同步起草与任务双向互斥;剖析不改人确认过的外键关系的基数
|
2026-10-14 16:24:11 +08:00 |
|
ThearchyHelios
|
a2342c1459
|
合入数据目录闭环第一步验收后的修正:保存修改提案时确认的依据另存成每一项的 reason(不再拼进备注,改值、确认、撤销审阅各有去留,导出导入照带,表助手背景标明是以前确认时的依据);表助手分清起草要求和使用者原话;起草逐段写入各取当时的时间;审阅队列列表头计数跟着审阅更新;导入完成只数真正写入的表;提案落在驳回项上时改前写出驳回的原值;剖析不改人确认过的外键关系的基数;导入时推断项的依据在校验前去掉
|
2026-10-14 16:11:04 +08:00 |
|
ThearchyHelios
|
b149351960
|
导入目录:推断、有确证的项在校验之前去掉确认时的依据,手改过的文件里依据不合规也不再把整项跳过(照常只填空缺);已确认、已驳回的项依据不合规照旧跳过
|
2026-10-14 16:11:04 +08:00 |
|
ThearchyHelios
|
a88fd93376
|
剖析不改人确认过的外键关系的基数:值不变、保存即确认的外键关系来源仍是 fk,以前 _patch_fk 不看状态,数据核实出的基数不同就直接改写,确认时的依据还挂着,前后矛盾;现在同 _patch_confirmed,不改人定的基数、也不标用数据核实过,测量的说法照常写进备注
|
2026-10-14 16:11:04 +08:00 |
|
ThearchyHelios
|
085fcb7e81
|
助手流「建议更新数据目录」那一行展开的明细,改前改用和卡片同一个写法(patchBeforeText):提案落在已驳回的项上时写「已驳回:可累加 → 存量」,不再写成像是当前值的「可累加 → 存量」、和同一轮下面卡片的「已驳回:可累加」对不上;check-decode 补一条
|
2026-10-14 15:38:22 +08:00 |
|
ThearchyHelios
|
49f00c589a
|
目录修改提案的依据改存成目录项单独的字段 reason(界面上叫「确认时的依据」,最多 500 字,超了截成 499 字加「…」),不再拼进备注:拼进 note 之后,带依据保存的关联关系再剖析时测量的说法换不了新、和覆盖率那一栏对不上;改了值的关联关系旧依据叠在新依据后面、越存越长;值不变、保存即确认的项撤销审阅回到推断后「依据:使用者说……」还挂着,看起来像使用者确认过一条推断项。去留:值改了(关联关系也一样)换成这次的依据,没写就去掉旧的;值不变的确认换成这次的,不叠;单项确认、驳回留着,撤销审阅去掉;整份提交改了值的、状态改回推断的、双盲复算改写的去掉;剖析刷新关联关系的测量只动备注。校验认 reason(文字、最多 500 字),起草、剖析的合并不碰人工确认的项,导出导入时已确认、已驳回的项连依据一起带,推断、有确证的项不带。表助手背景里已有的依据写成「以前确认时的依据:……」,系统提示词和 propose_changes 的说明写清那不是这次对话里使用者说的话、引用时写「以前确认时的依据写着:……」,遮罩列的项不给。表详情里依据和说明分开写:表级的项在值下面另起一行,列的一格、关联关系另一个悬停图标(读屏念「确认时的依据:……」),状态弹层里也写,驳回的项只在弹层里写;check-catalog-loop 的假服务端照服务端记下依据,补依据和说明分开、弹层、驳回项的检查;README 表助手一行写上依据另存
|
2026-10-14 15:38:15 +08:00 |
|
ThearchyHelios
|
cdf5ed38ef
|
导入目录完成的提示只数真正写进去的表(有新增或更新的项、版本前进了),文件中的项这里都有了的表不算、逐表写「没有变化」;一张都没写进去时说清「没有需要写入的内容」,写入出错的表另外说明;导入之后只重新载入写进去的表;check-catalog-loop 补导入结果的检查
|
2026-10-14 14:07:15 +08:00 |
|
ThearchyHelios
|
6b94811bed
|
审阅队列成批审阅之后列表头的「N 项待确认」跟着变:总数减掉列表里已经不是推断的项(成批审阅、表详情里改过的),撤销审阅回到推断的、冲突的照算,和视图标签、按表筛选的计数同一个口径;载入下一页的偏移用同一个算法;check-catalog-loop 补纯函数和成批确认、撤销审阅、单项确认、刷新之后的计数检查
|
2026-10-14 14:07:15 +08:00 |
|
ThearchyHelios
|
a78affa2f1
|
目录修改提案落在已驳回的项上时,改前写出被驳回的原值:plan_patch 交回的 before 带上驳回的值、before_status 写 rejected(只改给人看的信息,算改后、算状态照旧按没有这一项,保存时照旧换成人工确认的新值);助手流的提案卡片、表助手的提案卡片和待保存的修改写「已驳回:<原值>」,和导入预览「目标里这一项已经驳回」一致;check-catalog-loop、check-stream 补对应检查
|
2026-10-14 14:07:15 +08:00 |
|
ThearchyHelios
|
eb8d73b6da
|
表助手不再把数据源的起草要求当成使用者的原话:交给模型的背景里起草要求标明「不是这次对话里使用者说的话」,系统提示词和 propose_changes 的说明写清 reason 里引用的原话只能是这次对话里使用者的消息,依据来自起草要求时写「起草要求写着:……」
|
2026-10-14 14:07:15 +08:00 |
|
ThearchyHelios
|
20bef14520
|
保存目录修改提案时依据随项保存:表助手、助手流里「建议更新数据目录」的提案经 /catalog/{table}/patch 保存,写了依据的项备注记成「依据:……」(超出目录文字项的上限 500 字截断),没写依据的照旧;值不变、保存即确认的项和沿用了测量备注的关联关系,依据写在原来的备注前面(关联关系的剖析备注再剖析时整段换掉,放在前面才留得住)。表详情里人工确认的项有备注时也看得到:表级的项写在值下面(同有效记录条件的说明),列的一格、关联关系悬停看;check-catalog-loop 的假服务端照服务端记下依据,补保存后看得到依据、人工确认项的说明两处检查
|
2026-10-14 14:07:14 +08:00 |
|
ThearchyHelios
|
fc25c6367c
|
起草任务写进目录的项,修改时间取那一次写入的时间:宽表逐段落盘的每一段、整张表收尾各取一次当时的时间,不再整个任务都记成开始的那一刻(以前只在任务开始时取一次、截到秒,比任务的开始时间还早,也看不出哪一段是什么时候写进去的);补一条用假时钟逐段核对的测试
|
2026-10-14 14:07:14 +08:00 |
|
ThearchyHelios
|
5880af465e
|
check-catalog、check-catalog-loop:关页面之前先撤掉拦截、忽略还在路上的那几条,取真实设置的拦截在页面关掉之后才回来时不再把检查进程带崩(满负荷并行时偶发「Request context disposed」)
|
2026-10-14 10:37:26 +08:00 |
|
ThearchyHelios
|
af0b0fa136
|
测试夹具:表助手和导入导出测试里虚构订单表的号码列改叫 buyer_phone(和仓库里其他虚构夹具一致)
|
2026-10-14 10:21:30 +08:00 |
|
ThearchyHelios
|
5b5b6d8df2
|
起草逐表行列出服务端记下的说明(task.log:没收下的有效记录条件和原因),check-catalog 补一项;README 数据目录一节补上防错事实的提议、审阅队列、表助手、导出与导入,模型起草一行写上逐段落盘、不设总时长上限与按比例止损、块进度、同步起草与任务互斥
|
2026-10-14 10:19:18 +08:00 |
|
ThearchyHelios
|
3d075e5432
|
合入数据目录闭环第一步(前端):表详情页的表助手面板(流式对话、只读查询、提案、待保存的修改一次保存)、用过这张表的运行、有效行过滤与去重规则的说明;审阅队列视图(排序、筛选、批量审阅、冲突、进度);导出、导入预览与导入;起草的块进度、已写进目录的段、停止后的留空提示;新检查 check-catalog-loop
|
2026-10-14 10:16:53 +08:00 |
|
ThearchyHelios
|
6baebe821a
|
合入数据目录闭环第一步(后端 B):表助手(表详情页对话,流式返回,成批提出经校验的修改提案,只在开了剖析的源上经只读守卫跑查询、结果先遮);审阅队列(按使用次数、风险、来源排序,批量确认驳回逐表乐观锁,表被哪些运行用过,审阅进度);数据目录导出导入(先预览,确认和驳回的照带、冲突保留目标、推断只填空缺、对不上的跳过并写原因);一次修改上限提到 200 项
|
2026-10-14 10:16:53 +08:00 |
|
ThearchyHelios
|
17a0ab53bf
|
合入数据目录闭环第一步(后端 A):宽表逐段落进目录、停止和中断不丢已写的段;止损按最近调用的失败比例、同表接连 3 段没写出来就跳过剩下的段;块进度;停止后保留留空提示;「已拆小重试」只说拆过的段;同步起草与后台任务双向互斥;起草时提议有效行过滤和去重规则(sqlglot 校验、开了剖析的源上核对排除比例、遮罩列的码值不给模型)
|
2026-10-14 10:16:52 +08:00 |
|
ThearchyHelios
|
1d59ba23dc
|
数据目录闭环(前端)复核修正(表助手):保存撞上 409 后只按预览重算交去保存的那几项,保存、重算期间回答里又到的提案原样留着、不再被当成不合法悄悄去掉,提案到了也不把正在进行的保存翻回可以点;交给助手的待保存的修改最多 200 项(服务端同一个上限,多了整个请求 422),超出时只交最近的 200 项;开场的留空列取那次起草记下的列名(从那次起草任务里这张表的 blank_sample 取),没写出来的列不再当成留空的列举例,「补上留空的 N 列」点名的正是这 N 列,记全了时只算还没补上的;拿不到(最近一次停止了、任务不在了、老服务端没有列名)时改说「目录里还有 M 列没有中文名和含义」,按钮上的数字就是点名的列数;只读查询后面还有行时写「取回前 50 行,后面还有」,不说成结果一共 50 行;check-catalog-loop 的假事件流照服务端夹 SSE 注释行(「: keep-alive」),提案带 source、table_label,出错码用 assistant_*,假服务端照服务端的上限回 422,补回答进行中保存撞上 409、留空列的三种出处、待保存超过 200 项接着问的检查
|
2026-10-14 10:10:38 +08:00 |
|
ThearchyHelios
|
299224acaf
|
数据目录闭环(前端)复核修正(审阅队列):每一项的位置按 path 说到列(「列 ticket_no 的度量类型」「表的有效记录条件」「指向 members 的关联关系」,同提案卡片),复选框的读屏名也写到列——服务端的 field_label 只是字段的叫法(「码值」「中文名」),列名另放在 column,列级的项只写它分不清是哪一列;审阅进度三行同一个口径:已确认 ÷(已确认 + 待确认),已驳回的、有确证的不计入,审完了就是 100%,悬停写明口径;常用表写实际几张(服务端只算被运行用过的),没有时写「还没有运行用过的表」,不再写死「常用 20 张表」;「用过这张表的运行」写「共 N 次运行」并说明和表头按查询算的使用次数不是一个数,队列里使用次数的悬停同表清单;check-catalog-loop 的队列、进度、导入预览夹具照服务端的真实形状(field_label 只写字段名、带 column,reasons 用服务端的说法,进度带 items_proposed,导入报告带 version、error、冲突的状态),补位置、进度口径的纯函数和页面检查
|
2026-10-14 10:10:07 +08:00 |
|
ThearchyHelios
|
dff53db165
|
数据目录闭环(前端)复核修正:停止、服务重启中断之后「只重试这些表」写明会重新起草整张表、已写进目录的内容不会丢,不再说「接着起草剩下的段」——服务端的重试不跳过已写进的段,宽表重试花的时间和额度和第一次差不多;check-catalog 的假服务端中断时照服务端写「已中断:已写进目录 N 段,剩下 M 段没起草」,补一条中断的宽表只写一遍已写进几段、提示写明会重新起草整张表
|
2026-10-14 10:06:42 +08:00 |
|
ThearchyHelios
|
d3bd80211a
|
数据目录闭环第一步(后端 A)复核修正:没收下的有效记录条件不算失败,在起草任务逐表的 log 里记一句,接口看得到(以前只进服务端日志)——没通过校验的写原因(「有效记录条件里不能有子查询,模型提议的这一条没有收下:……」),剖析核对排除 0% 或 100% 的写数到了多少行;只在请模型写表级的项的那段里记,一张表最多 10 句。CatalogDraftTask 加 log 列(存量任务回填 NULL,接口给空列表)
|
2026-10-14 10:00:10 +08:00 |
|
ThearchyHelios
|
7383877ee7
|
数据目录闭环第一步(后端 A)复核修正:模型提议的有效记录条件存整理过的写法——原文照旧(NOT IN、IS NOT NULL 不被改写),只把列换成表结构里的真名、不带表名、按数据源的方言要加引号的加引号,剖析核对的就是存下的这一条。以前存的是模型的原文,核对时却按真名加了引号:PostgreSQL 上混合大小写的列("OrderStatus")存成 orderstatus <> 'X',一跑就报列不存在,SQL 检查还会让模型照抄。列名先照原样对表结构,只差大小写的几列写不清是哪一列的不收;加了引号超过 500 字的不收(写进去会让整张表写入失败);不合规的说法用界面上的叫法「有效记录条件」
|
2026-10-14 09:59:52 +08:00 |
|
ThearchyHelios
|
9c30bf0307
|
数据目录闭环第一步(后端 A)复核修正:起草提示里「已确认的目录项」不再带遮罩列的码值,人工确认过的也不给(码值就是这一列的取值),开没开剖析都一样;这一列别的确认过的项照给。和新加的码值背景、表助手的背景、导入目录的口径一致
|
2026-10-14 09:59:35 +08:00 |
|
ThearchyHelios
|
a490365bcf
|
数据目录闭环第一步(后端 A)复核修正:按比例止损只看每次调用的最终结局。服务方嫌额度太大退回 8192、结构化输出不支持或回了说明文字改走纯文本、429 / 5xx 退避重试之前的那次照旧记进用量和提醒,不进止损的窗口——它不花额度,也说明不了模型写不出来;重试用完仍出错的那一次照常算。以前额度上限 8192、不支持 json_schema 的 OpenAI 兼容网关上,并发的头几次调用全是这种重来,第一次额度用完就凑满 10 次里 7 次,那一段直接记没写出来、不再拆小
|
2026-10-14 09:59:19 +08:00 |
|
ThearchyHelios
|
813522ec7b
|
表助手:待保存的修改不设上限、有效记录条件按起草的规矩核对。宽表上逐列补中文名、含义,几轮下来待保存的修改常常超过一次保存的 200 项,以前请求里超过 200 项就 422、对话用不了;现在交多少都收,背景里只列最近的 200 项(界面上新的提案接在后面)并写明另有几项,码值照全部待保存的修改合并。模型提的有效记录条件是 SQL:按 sqlcheck.valid_filter_problem 核对(一个条件、只用这张表的列、不能有子查询、聚合、窗口、分号,只能用几个函数),sqlcheck 里还没有这条规矩时至少核对用到的列都是这张表的、都在表结构里、没有子查询,不过的不交给界面、原因交回模型;系统提示里先写明这几条写法
|
2026-10-14 09:52:37 +08:00 |
|
ThearchyHelios
|
9b4663afa8
|
导入核对有效记录条件用到的列:有效记录条件是表级的一项、却写着列名,按列跳过的规矩拦不住它。按目标数据源的方言解析出条件里用到的列,不在目标的表结构里、是别的表的列、带子查询(没法核对子查询用到的表和列)、解析不了或不止一句的跳过并写原因;人工写的条件不限函数,列名大小写和目标不同、带本表表名(文件里的写法、目标的写法都认)的照带。核对用的 filter_columns_problem 放在 catalog_transfer,表助手在没有起草的校验规矩时也用它
|
2026-10-14 09:52:13 +08:00 |
|
ThearchyHelios
|
864e63dadd
|
审阅队列与进度按约定改:field_label 写给人看的完整位置(「表的有效记录条件」「列 status 的码值」「指向 members 的关联关系」,和表助手提案、导入冲突的说法同一个函数),列级的项另带 column;排在这里的原因写「被 N 次运行用到」,数的是运行(同「用过这张表的运行」的 total),同一次运行里查了几次、使用次数比运行次数多时两个都写(「被 2 次运行用到,使用 5 次」),table_usage 和优先级照旧按使用次数(同目录清单的「使用 N 次」和排序);进度里的常用 20 张表和起草的默认范围是同一批(使用次数从多到少,用到的不够 20 张时按表结构的顺序补齐),top 只给 tables、items_total、items_confirmed,all 只给约定的四项;表助手背景里写这张表被几次运行用到、查询几次
|
2026-10-14 09:51:49 +08:00 |
|
ThearchyHelios
|
cab1a10bdc
|
check-catalog-loop:表助手的输入框过输入法护栏——组字时的回车(isComposing、Safari 式 keyCode=229)不发送,组字时的 Esc 不关面板,草稿还在
|
2026-10-14 08:55:40 +08:00 |
|
ThearchyHelios
|
41012b1b83
|
数据目录闭环(前端)复查修正:导入预览里跳过的项写界面上的说法(「列 gate_code 的中文名」),关联关系照编号写;check-catalog-loop 切视图的那一条等清单真的换回来再断言
|
2026-10-14 08:54:04 +08:00 |
|
ThearchyHelios
|
bc4ea277e9
|
数据目录闭环(前端)复查修正:部分完成的宽表也写「已写进目录 N 段」(段进度都结束了,看不出写进了几段),服务端原因里已经写了的不重复;表助手「补上留空的列」超过 20 列时写明一共几列;流式回答每来一段只重画正在回答的那一轮;答完的一轮没有用量、没有查询时不再露出一个 0;check-catalog 补部分完成的那一条
|
2026-10-14 08:51:23 +08:00 |
|
ThearchyHelios
|
a6e5b857fe
|
数据目录闭环(前端):数据目录页左栏加「审阅队列」视图——照服务端的优先级列出推断项,每项写位置、所在表、值、说明、为什么排在这里、来源和状态、所在表的使用次数,按项(影响数字的项 / 名称和含义)和表筛选(记在地址里),多选成批确认、驳回、撤销审阅(逐表带读到的版本,逐条的结果原地标出、冲突的写明),顶上是审阅进度(常用 20 张表、全部表、影响数字的项),点开一项右栏是所在表的详情(滚到那一项、列出用过这张表的运行),详情里改过之后队列跟着换状态;页头加「导出目录」(下载服务端给的文件)和「导入目录」(选文件 → 预览对上的表、新增 / 更新 / 保留 / 冲突 / 跳过,冲突逐条列出 → 确认导入 → 逐表写入后的版本,起草任务进行中、文件格式不对时照原样写服务端那句话);新检查 check-catalog-loop(表助手、审阅队列、导出导入、防错事实的说明和纯函数,用 page.route 假接口),登记进 check-all
|
2026-10-14 08:44:49 +08:00 |
|
ThearchyHelios
|
1cc9fe1a3d
|
数据目录闭环(前端):表详情加「表助手」——顶部和上次起草的提示里都有「和助手一起完善」入口,对话流式显示、能停止,助手跑过的只读查询写 SQL 和前几行(默认收起),修改提案逐项写改前、改后、依据并能逐项去掉、加回,「待保存的修改」跨多轮累积(同一项以最后一次提案为准),一键保存(最多 200 项,409 时按最新内容重算后停下来再看一眼),没开数据剖析的源写明只能根据表结构和目录推断、不能查数据,有留空列时开场引导先问这几列,有待保存的修改时换表、关闭先问;表详情加「用过这张表的运行」、有效记录条件和去重规则的推断项在值下面写说明(剖析核对的排除比例或没核对的原因)、从审阅队列打开的那一项标出来;起草任务逐表显示块进度(段被拆小后看得出来)和已写进目录的段,停止后写明已写进几段、只重试时接着起草,清单和表详情在最近一次停止、中断又没有新写入时接着用再之前那次起草记下的留空列数提示;check-catalog 加一节按约定的新字段推进
|
2026-10-14 08:44:37 +08:00 |
|
ThearchyHelios
|
a9ffbcfa86
|
数据目录闭环(前端):类型、接口、文案和纯函数——起草任务的逐段落盘、块进度字段和清单的 blank_columns_from;审阅队列、成批审阅、审阅进度、用过这张表的运行;导出导入(下载文件、预览、导入);表助手的事件流(按行读 data: <JSON>,开流前被拒带状态码和机读码,能停止);表助手的对话怎么截(最多 40 条、每条 4000 字、从用户的话开始)、待保存的修改怎么累积(同一路径以最后一次提案为准、保存带最早那条提案的版本、409 后按预览重算);审阅视图的地址参数、成批结果和表详情改过之后的状态同步;文案进 lib/terms.ts
|
2026-10-14 08:44:14 +08:00 |
|
ThearchyHelios
|
87b6cb4090
|
数据目录闭环第一步(后端 A):宽表收尾那次写不进去时,写进目录的段数照库里逐段写进去的记
整张表收尾的写入一直撞上别人刚改过(写入冲突)时,最后一段没进目录:parts_written 不再按引擎写出来的段数虚报,留着逐段写入时记下的数
|
2026-10-14 08:35:44 +08:00 |
|
ThearchyHelios
|
4647fc9ff3
|
数据目录闭环第一步(后端 A):防错事实的提议——起草时提议有效行过滤和去重规则
- 提示词:表级的项多要两项,valid_filter(有效行过滤,condition 写一段 SQL 条件、只用这张表的列,函数只用 UPPER、LOWER、TRIM、COALESCE)和 dedup(去重规则,rule 写一句话),各附一句 reason;写清只在表结构、注释、码值能看出来时才写,拿不准、没有就不写;业务日期照旧。结构化输出的约定、纯文本那条路的格式说明、只写表级的项那一行都带上这两项
- catalog._from_model:两项记模型起草、推断,依据写进 note(「依据:……」);有效行过滤按数据源的方言解析(sqlcheck.parse_valid_filter),不过就丢掉、日志记一条,不算这张表失败;只写了一段文字的也认
- 起草引擎:表级那段写完核对有效行过滤。开了数据剖析的源经剖析的只读守卫数排除比例(catalog_profile.check_valid_filter),排除 0% 或 100% 的不收,收下的 note 写上「剖析核对:排除 3.2% 的行(共 12,345 行)」;没开剖析、连不上的照收,写明没有核对的原因;目录里人工确认、驳回过的不再查库
- 开了数据剖析的源:目录里记下的码值(剖析取过的取值和已知含义)交给模型做背景,要写表级的项的给全部列的、只写几列的给这几列的,遮罩的列、驳回的码值不给,已确认的不重复
- 测试核一遍 SQL 检查的规矩:起草来的有效行过滤是推断,漏了它只是提示;人工确认以后才是警告,驳回以后不报
|
2026-10-14 08:32:44 +08:00 |
|
ThearchyHelios
|
7c3484adba
|
数据目录闭环第一步(后端 A):起草遗留——宽表逐段落盘、按比例止损、块进度、停止后的说法、同步起草与任务互斥
- 宽表逐段落盘:每写出一段(表级那段、每个列分段)就把这张表到这时拿到的内容并入目录(catalog_jobs.write_part,这一次合并不删任何东西);整张表写完(ok、partial 都一样)再按完整覆盖的规则收尾一次,只删已经不在表结构里的列的模型项(write_draft 对 partial 也照删)。停止、服务重启时已经写进去的段留着;写过段的表照旧记 cancelled,model_error 写「已停止:已写进目录 N 段,剩下 M 段没起草」(中断写「已中断:…」)。新增、更新、删除的计数是各次写入的合计
- CatalogDraftTask 加 parts_written(已写进目录的段数)、chunks_total / chunks_done(这张表实际分成的块数和已结束的块数,段被缩小的上限分开、拆成两半后会变多;不用模型时为 null),升级时补列
- 止损按比例:这次起草最近 10 次调用有 7 次以上没写出来时,之后的段不再拆小、每块只问一次(不补问漏掉的列、截断后不再补剩下的、空壳不再原样再问,拆出来还没问的块也不再问),直到比例降下去;去掉会被偶尔一次成功清零的「连续 2 段」「接连超时」两条。结构化输出只给空壳的,这次起草还没换纯文本问过的照旧问一次;额度被拒、结构化输出不支持、网络错误这些通信上的重来照旧
- 同一张表接连 3 个原始段都一项没写出来:剩下没开始的段跳过不问,原因写「这张表接连 3 段都没写出来,剩下的 N 段已跳过,可以换一个起草模型后只重试这张表」
- 原因里「已拆小重试仍没写出」只跟在真拆过的那几段后面说:说到的段只有一部分拆过时写「其中第 3 段已拆小重试仍没写出」
- 目录清单的 last_draft 加 blank_columns_from(最近一次结束于 ok / partial 的用模型起草记下的留空列数;之后有起草写进了新内容时为 null)和 parts_written
- 同步起草和后台任务双向互斥:同步起草进行期间同一个源建任务、重试、导入(ensure_idle)、再开一次同步起草都 409 catalog_draft_busy(进程内登记)
|
2026-10-14 08:31:35 +08:00 |
|
ThearchyHelios
|
447c66649c
|
数据目录闭环第一步(后端 A):有效行过滤的校验和剖析核对
- sqlcheck.parse_valid_filter / valid_filter_problem:按数据源的方言用 sqlglot 把有效行过滤解析成一个条件,只能引用这张表的列(不带表名或带这张表的表名,不分大小写),不能有子查询、聚合、窗口函数、分号、注释、模板占位、参数占位、算术,只允许比较、IN(值的列表)、BETWEEN、LIKE、IS NULL、AND / OR / NOT 和 UPPER / LOWER / TRIM / COALESCE,不超过 500 字,至少用到一列;不认识的数据源类型不收
- sqlcheck.render_valid_filter:把条件按方言重新写出来,列换成表结构里的真名、按剖析查询的规矩加引号,拼进核对查询用
- catalog_profile.check_valid_filter:开了数据剖析的源经剖析的只读守卫(guard.check(readonly=True)、单条时限、查询次数上限)发一条查询,只取条件里的列、先取前 max(抽样键值数, 整表统计行数上限) 行,数出总行数和被排除的行数;排除 0% 或 100% 的不收,收下的写「剖析核对:排除 3.2% 的行(共 12,345 行)」,只数了前若干行的写明按前几行统计;没开剖析、数据源停用、条件里有遮罩的列、视图、取值拼不进查询、查询失败或超时照收,写明没有核对的原因
|
2026-10-14 08:30:14 +08:00 |
|
ThearchyHelios
|
8c270987bd
|
表助手:绑定工具出错(模型不支持工具调用之类)也在流里照实交一条错误事件,不让流半路断掉
|
2026-10-14 08:28:30 +08:00 |
|
ThearchyHelios
|
77ddbe96ea
|
表助手的背景在宽表上不至于太长:这张表的目录最多列 600 项(表级的项、关联关系在前),其余写明还有几项没列出;导入时界面直接交来的文件原文(JSON 文字)也认,不是 JSON 的 422;导入冲突说明里的状态用界面的叫法
|
2026-10-14 08:26:05 +08:00 |
|
ThearchyHelios
|
65369b8a6e
|
表助手:SDK 不再自己重试(同起草,网络错误、429、5xx 只由表助手在还没输出时重试,退避 3、10 秒);测试补上取模型的规格(起草设置、保留思考、额度 32768 / 8192、单次时限、不重试)和两个工具在 OpenAI 兼容、Anthropic 模型上都绑得上;query_snapshot_tables 不进 catalog 的 __all__(按模块属性取用,少和起草那边的改动撞在一起)
|
2026-10-14 08:23:08 +08:00 |
|
ThearchyHelios
|
a5d9ee0a16
|
表助手:表详情页里和使用者对话完善一张表的数据目录(POST /catalog/{table}/assistant,SSE:正文增量、只读查询、修改提案、完成、出错);交给模型表结构、目录现状(每项的来源和状态)、关联关系(含别的表指过来的)、剖析结论、起草要求、使用次数、最近一次起草留空的列和界面上待保存的修改,遮罩列只给列名;提案按 plan_patch 核对(公式不收、列名必须在表结构里、遮罩列不给码值、已确认的同值不提),待保存修改里的码值并进新提的码值,只交给界面不写目录;只读查询只在开了数据剖析的源上给,经剖析的只读守卫和单条时限、每次请求最多 5 条、50 行交给模型,结果和报错先遮再交;模型取法、说法同起草(用不了 409),保留思考、额度 32768 可退回 8192、单次时限同起草,还没输出时网络错误和 429、5xx 重试,等待时发 SSE 注释保活,停止时正在进行的调用跟着停;PATCH 一次最多 200 项(预览和保存)
|
2026-10-14 08:20:02 +08:00 |
|
ThearchyHelios
|
2298cf848a
|
数据目录导出导入:导出为「<数据源名>-数据目录.json」附件(全部状态的项、起草要求);导入先预览再写入,表名、列名按表结构的写法再忽略大小写对(带 schema 前缀的去掉前缀再对),关联关系两端换成目标的写法并重算编号;已确认、已驳回的项照带(来源、状态不变),目标里已确认、已驳回而不一样的保留目标的并记冲突,推断、有确证的只填空缺;表结构里没有的列、两端对不上的关系、目标遮罩列的码值、不合规的项跳过并写原因;逐表乐观锁、一张表写不进去不影响别的;有起草任务时 409,文件格式不对 422,没有表结构 409;起草要求只在勾选且目标还没有时写入
|
2026-10-14 08:06:45 +08:00 |
|
ThearchyHelios
|
adc56da6cf
|
数据目录审阅队列:推断的项按「使用次数权重 × 风险权重 × 来源权重」排好(有效记录条件、去重规则、业务日期、关联关系最高,模型起草、命名推断比库注释优先),带排在这里的理由,可按影响数字的项 / 名称和说明、按表筛选和分页;批量确认、驳回、撤销审阅逐表按版本乐观锁,同一张表的几条一次写入,一张表冲突不影响别的表;表被哪些运行用过(新的在前,取法同使用次数,抽出 query_snapshot_tables 共用);审阅进度(常用 20 张表、全部、影响数字的项)
|
2026-10-14 07:59:51 +08:00 |
|
ThearchyHelios
|
a87b935ebf
|
合入数据目录起草改造:用模型起草改成后台任务,逐表记状态和原因,写完一张就并入目录,可以停止、只重试失败的表,服务重启时没跑完的标中断、不自动续跑;保留模型思考,输出额度 32768(服务方不收时退回 8192);列分段均分、宽表先起草表级再分段起草列,额度用完或超时就拆小再问、段大小随之减半、每段调用次数封顶,接连没写出来时给提醒;重新起草不丢已有的模型起草项;模型拿不准而留空的列逐表记下并提示;数据源上的起草要求和本次补充说明交给模型(不能推翻只记数据事实的规矩);设置里单独的起草模型(数据目录和按配方导入的 AI 起草共用);库注释就是名字本身或标识符写法的不当中文名;旧的同步起草遇到进行中的任务回 409
|
2026-10-14 07:27:04 +08:00 |
|
ThearchyHelios
|
1130f22201
|
合入数据目录起草验收后修正(前端):进行中醒目显示接连没写出来的提醒、用量写没写出来和超时的次数并说明超时不计用量、段缩小的说明;逐表与汇总显示模型拿不准留空的列和办法(补充起草要求后重新起草,已有内容不会丢);清单轻提示与表详情的两个入口;表结构里已经没有的表不再给重新起草
|
2026-10-13 21:29:00 +08:00 |
|
ThearchyHelios
|
048501d03a
|
合入数据目录起草验收后修正(后端):重新起草不丢已有的模型起草项;列分段均分;拆不开的空壳段再问一次;超时改拆小;段大小随额度用完和超时减半;每个原始段最多 8 次调用;接连没写出来时给提醒;用量记超时和没写出来的次数;记下模型留空的列;按表的先后排队不插队;库注释就是名字本身或标识符写法的不当中文名;同步起草遇到进行中的任务回 409;原因写清第几段、哪几列
|
2026-10-13 21:29:00 +08:00 |
|
ThearchyHelios
|
f74744b29e
|
README:数据目录的模型起草照复核修正补上——超时的两半同时问、拆到每段 10 列仍接连超时就不再拆,每段连同它分开、拆小的各块最多 8 次,没写出来的原因写清第几段、哪几列,留空的列只记目录里还没有中文名和含义的,库注释就是名字本身或标识符写法的整条不记进目录
|
2026-10-13 21:26:07 +08:00 |
|
ThearchyHelios
|
7bc7fc685f
|
起草按复核修正:读回复出错也记进用量;补问时列出了、字段留空不算没写出来;留空的列看目录里已有的;一项都没写出来的宽表逐段写范围;提醒照约定的说法
- 读回复时出了意料之外的错:这次调用照样记进用量(算一次出错),再交给 _guarded 记这一块没写出来;以前 _take 抛异常
时这次调用不进 calls、token、failed_calls,也不进提醒的窗口。校验(catalog._from_model)里该是文字的地方写成了
数组、对象的(列名、表类型、业务日期的列、度量类型,columns 不是数组的)直接丢掉、不抛异常:实测列名写成数组时
抛 TypeError,整张表记「起草这张表时出错」。
- 补问时请写的列都列出来了、字段留空:表上算拿不准(记留空),用量和提醒里也不再算一次「只给空壳」没写出来;以前
提醒会因此劝人换模型,真正该做的是补充起草要求。
- 留空的列不算目录里已经有中文名或含义的(不论来源:以前模型起草、按「重新起草不丢内容」留下的,库注释,人工;驳回
的不算有);写入时(write_draft)再按并入目录之后的结果筛一遍,起草进行中有人填了的同样不算。以前照界面的建议补了
起草要求再起草,模型这次没再给的老列又被说成「拿不准、留空了」,提示一直消不掉。
- 一项都没写出来的宽表同样逐段写上列的范围:「这张表 95 列,分 4 段起草,第 1 段(表级的项)、第 2 段(c001 到
c032,共 32 列)……都没写出来:原因」;只有一段的表照旧只写原因(这一段就是整张表)。
- 提醒照约定写「建议在「设置 → 偏好设置」的「起草模型」换一个模型、缩小起草范围,或者停止这次起草」。
|
2026-10-13 21:25:59 +08:00 |
|
ThearchyHelios
|
84405977b6
|
起草引擎按复核修正:每个原始段连同分开的各块一共 8 次;一直超时的模型几轮就停;止损后纯文本不再原样再问
- 封顶管到原始段:段大小减半以后,新开始的段按上限分开的各块(窄表重新拼成的各组、单表均分的各块)共用这一段的
调用次数(_Budget 在 _work 里按原始段建,_start、_guarded 接过去),不再每块各有 8 次。以前上限缩到 10 列后一直
只给空壳,4 张窄表拼成的 40 列段调用 20 次,最坏是「段列数 / 上限 × 8」。止损的计数(连续几段没写出来)同样按
原始段数。
- 超时的两半同时问:带表级项的前一半不再先写完才问后一半(一次超时就是一个时限,40 → 20 → 10 串着问要好几个时限);
额度用完、只给空壳的照旧先写前一半、后一半拿它做背景。
- 超时另有一条止损:拆到每段 10 列(MODEL_MIN_PART_COLUMNS)的调用接连超时 2 次(MODEL_GIVE_UP_AFTER),超时就和
段大小无关了,后面超时的不再拆小,超时拆出来、等名额时还没问的块也不再问(次数退回);有一次调用写出来就恢复。
只管超时:额度用完、只给空壳照旧拆小。原因后面补「拆到每段 10 列仍然超时,已停止拆小重试,建议更换起草模型」。
用假模型量:每次都超时的 40 列表从 8 次调用、约 7 轮(420 秒时约 49 分钟)降到 6 次、3 轮;首轮同时起草的 3 段从
24 次、约 8 轮降到 12 次、4 轮;40、20 列超时而 10 列写得完的照旧拆到 10 列全部写出。
- 止损以后本来能拆小的段只给空壳:已经走纯文本的不再原样再问(约定只对拆不开的段再问一次);结构化输出的照旧换
纯文本问一次。
- resolve_draft_model 的说明照实写:超时不由引擎重试,当作这一段太大、拆小再问。
- 止损的说明改成文字(_Why.halted),两种止损各说一次。
|
2026-10-13 21:25:27 +08:00 |
|