Skip to content

chore(deps): bump gorm.io/driver/postgres from 1.6.0 to 1.6.2 in /server/sync-service - #40

Closed
dependabot[bot] wants to merge 311 commits into
devfrom
dependabot/go_modules/server/sync-service/gorm.io/driver/postgres-1.6.2
Closed

dependabot[bot] wants to merge 311 commits into
devfrom
dependabot/go_modules/server/sync-service/gorm.io/driver/postgres-1.6.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 5, 2026

Copy link
Copy Markdown

Bumps gorm.io/driver/postgres from 1.6.0 to 1.6.2.

Commits
  • e269d69 Fix/preserve original error in translate (#335)
  • 35fa84d chore(deps): bump actions/setup-go from 5 to 7 (#347)
  • 6e6c866 feat: support PostgreSQL generated columns via the generated tag (#345)
  • d9b9fc6 chore(deps): bump gorm.io/gorm from 1.25.10 to 1.31.2 (#346)
  • 77dd2bd chore(deps): bump actions/checkout from 4 to 7 (#344)
  • 2a16690 Refactor SQL query for column type retrieval (#343)
  • ce8a605 chore(deps): bump github.com/jackc/pgx/v5 from 5.9.2 to 5.10.0 (#341)
  • 4d6a58d fix(Migrator): add schema qualification to GetIndexes, RenameIndex, DropIndex...
  • 65c4b89 fix(Migrator): prevent nil pointer dereference in AlterColumn (#339)
  • 92d2b78 chore(deps): bump github.com/jackc/pgx/v5 from 5.8.0 to 5.9.2 (#337)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Aparencia and others added 30 commits July 30, 2026 01:09
依据服务器实测结构(/opt/Entropydecrease/server 存放 compose 与 .env.production,
website 静态目录为 /opt/Entropydecrease/website,且该目录非 git 仓库)修正部署链路:

1) 路径大小写与层级:全部 /opt/entropydecrease → /opt/Entropydecrease,
   deploy-server 的 cd 目标补上 server 子目录。Linux 路径大小写敏感,
   原配置会让部署在第一步 cd 即失败。

2) 缺少 --env-file:原脚本裸跑 docker-compose,不加载 .env.production,
   导致 DB_PASSWORD/REDIS_PASSWORD 等被解析为空串(服务器实测已出现该 WARN)。
   现统一为 docker compose -f docker-compose.prod.yml --env-file .env.production。

3) 代码从未上传:原工作流仅 ssh 执行 pull+up,而 CI 内 docker build 产出的镜像
   从未 push 到任何 registry,服务器也不是 git 仓库——新代码永远无法上线。
   现改为 scp 上传 server/ 源码后 up -d --build 重新构建自建服务。
   scp 的 rm 保持 false:服务器上的 .env.production 为真实生产密钥且不在仓库内,
   删除目标目录会导致密钥永久丢失。

4) 假回滚命令:docker-compose rollback 并非有效子命令,健康检查失败时只会报
   unknown command 而不产生任何回滚。现改为输出容器日志便于定位,
   并将 sync-service 也纳入健康检查;真正回滚由 revert 提交重新触发部署完成。
CI 的 ruff 检查暴露出一个迁移引入的运行时缺陷(源项目 188 个 ruff 错误、
目标 204 个,该检查在源项目从来就是红的,掩盖了真问题):

1) routers/learning.py 缺失 3 个 schema 导入(F821 undefined-name)
   阶段 11 把内联模型抽到 learning_schemas.py 时,AnchorPointItem /
   PredictItem / RescueLevelItem 未列入导入清单。这三个名字只在函数体内
   被构造,import routers 与既有测试都不会触发,但一旦调用
   anchor-point / predict / rescue 端点即 NameError → 500。

2) tests/conftest.py fixture 名称不一致(存量,源项目同样)
   内部定义 fake_call,却 setattr/return fake_call_with_fallback,
   该 fixture 一旦被使用即 NameError。

3) tests/test_e2e_auth.py TestJWTDevMode 依赖外网(§7 测试隔离)
   fixture 只清空 jwt_secret,但 _jwt_verification_configured() 在
   ES256 下检查的是 supabase_jwks_url/supabase_url,导致用例走真实验证
   路径去拉 JWKS,离网必败。按同文件 TestJWTPassthrough 的既有范式补齐
   算法与端点隔离,令其真正进入被测的开发降级模式。

4) routers/balance.py 删除死变量 providers_state(F841)

新增 server/ai-gateway/ruff.toml 显式锁定规则集为 pyflakes + pycodestyle
错误级(E4/E7/E9/F):ruff 0.16 起默认集纳入 BLE/RUF/UP/DTZ 等风格规则,
不显式声明会让 CI 在依赖升级后突然变红。测试目录豁免 E402(须先
sys.path.insert 注入根目录)与 F401/F403/F405,兼容层 __init__ 豁免 F401。
风格类整治(66 处导入排序、45 处裸 except 等)登记技术债后续专项处理。

验证:ruff All checks passed;pytest 133 passed(此前 130/3,且 3 项依赖外网)。
CI 的 client job 卡在 Test 步骤超 10 分钟,本地复现并定位两处存量缺陷
(源项目同样存在,此前因未跑过完整 vitest 而被登记为技术债):

1) usePomodoroStore.test.ts 无限挂起(§7 测试隔离)
   store 直接导入 @/lib/audio/SoundPlayer 单例,相位切换时调用 play()。
   jsdom 无 AudioContext → play() 内部 preload() 发起
   fetch('/sounds/*.wav', AbortSignal.timeout(5000)),8 处音效调用叠加出
   大量悬挂异步任务,vitest 进程始终不退出。
   测试原已 mock usePomodoroPersistence 与 achievements/evaluator,
   唯独漏了 store 直接依赖的 soundPlayer——补齐 mock 即可,不改被测逻辑。
   效果:该文件 32 个测试 2.6s 通过(此前无限挂起)。

2) sm2.ts goldenErrorMultiplier=0 边界(断言与实现矛盾)
   实现用 multiplier > 0 排除 0,把它当无效值静默忽略 → 间隔保持 25;
   测试期望 0 表示"最大程度缩短",收敛到最小间隔 1 天。
   该选项全仓无生产调用方(仅 sm2.ts 定义 + sm2.test.ts 使用),属未接入的
   预留 API,改实现对线上行为零影响。按测试即规格将下界改为 >= 0:
   传 0 经 Math.max 收敛到 1,避免调用方意图被静默反转成"不缩短"。
   上界仍为 < 1(1.0 的语义就是不调整);0.5→13、undefined→不应用,行为不变。

验证:vitest 23 文件 295 测试全过(12.9s,此前挂起);
      tsc app 与 electron 双 0 错。
feat: 熵减 Entropydecrease 品牌迁移与全仓规范化重构
v0.25.0 发版失败根因:semantic-release 已完成版本计算与 CHANGELOG 生成,
但其自动创建的 chore(release) 提交 body 由 release notes 生成,天然含超长
commit URL 行,被我们刚启用的 commitlint body-max-line-length(100) 规则
经 husky commit-msg 钩子拦截(@semantic-release/git 插件执行 git commit 失败)。

处置:禁用 body-max-line-length 与 footer-max-line-length。该两条规则在
本仓库场景只会拦截合法提交(发布提交与人工贴链接),header 结构、type 枚举
等核心 Conventional Commits 校验全部保留。

验证:用实际失败的发版提交信息(含 140+ 字符 URL 行)过 commitlint,exit 0。
fix(ci): 放开 commitlint 行长限制修复发版自拦截
前两次 Version & Release 均失败于 GH013:main 的 ruleset 强制
"Changes must be made through a pull request",把 semantic-release
自身的发版推送(chore(release) 提交 + CHANGELOG + tag → HEAD:main)
一并拦截。

修复:checkout 与 semantic-release 环境改用 secrets.RELEASE_TOKEN
(细粒度 PAT,Contents:RW,持有者为仓库 admin),配合 ruleset
Bypass list(Repository admin)实现发版链路的受控绕过;
未配置该 secret 时回退内置 token,行为与现状一致(不劣化)。

需要仓库侧配套(手工步骤):
1) 创建细粒度 PAT(仅 Entropydecrease 仓库,Contents: Read and write)
2) 仓库 Settings → Secrets → Actions 新建 RELEASE_TOKEN
3) main-protection ruleset → Bypass list 添加 Repository admin
fix(ci): 发版工作流改用 RELEASE_TOKEN 以绕过 main 分支保护
## [0.25.0](v0.24.0...v0.25.0) (2026-07-30)

### ✨ 新功能

* 熵减 Entropydecrease 品牌迁移与全仓规范化重构 ([baae5e7](baae5e7))

### 🐛 缺陷修复

* **ai-gateway:** 修复 learning 端点运行时 NameError 并使 ruff/pytest 全绿 ([ea1c43b](ea1c43b))
* **ci:** 发版工作流改用 RELEASE_TOKEN 以绕过 main 分支保护 ([75c6fe9](75c6fe9))
* **ci:** 放开 commitlint body/footer 行长限制,修复发版提交被自拦截 ([b1583c4](b1583c4))
* **ci:** 部署工作流对齐真实服务器结构并修复三处失效缺陷 ([3b71f35](3b71f35))
* **client:** 修复测试挂起与 sm2 边界,客户端测试首次全绿 ([168e99e](168e99e))
* 补齐迁移遗漏的客户端资产与 nginx ASR 路由代理 ([c15c8ac](c15c8ac))
deploy-server / deploy-website 仅在 main 的 server/**、website/** 路径
变更时触发,且无手动入口——PR #2 修复后的新部署配置(scp 上传、
--env-file、真实服务器路径)至今从未实际执行过。

补 workflow_dispatch 后可手动触发做部署链路首跑验证,也可用于
紧急重部署(不依赖路径变更)。
ci: 部署工作流补 workflow_dispatch 手动触发入口
FallbackProvider.transcribe 缺少 **kwargs,call_with_fallback 透传的
_feature 撞到签名抛 TypeError,导致降级链末端失败、ASR 请求返回 503
而非友好降级响应(已补两条回归测试锁定)。

get_cache 以无参构造 RedisCache,忽略 REDIS_URL 环境变量,容器部署下
恒连 localhost 失败,限流与响应缓存自部署起从未生效;main.py 原先无论
成败都打印'连接已建立'掩盖了该故障。

其余:transcribe 限流路径由 /api/v1/ai/ 更正为 /api/v1/asr/,配额
30->600 并豁免全局每日总量(段级高频调用);开启 Qwen ASR 的 ITN;
上游 429 不再误报为本地配额耗尽。
窗口源(方案A)在 Windows 上 getUserMedia 可能成功但返回纯静音轨,不抛错
故异常降级永不触发。新增 useAudioRecovery:静音检测驱动自动回退系统环回、
输出设备不匹配提示、设备变更自动重启捕获。

仅音频模式此前仍启动截图采集且帧 watchdog 会保底重启,导致'帧'计数持续
增长;现按 mode 跳过截图并清空重启回调。

其余:VAD 在 loopback 源跳过无意义的背景噪声校准(数字信号无底噪,不再
显示'正在校准音频阈值'),静音断句 1500ms->800ms 并新增 28s 强制分段以
兼容 GLM-ASR 段长上限;网关健康探测 HEAD->GET 消除 405 误报。
fix: 修复课堂 ASR 链路故障(降级链断裂 / Redis 未连接 / 音频静音无回退)
## [0.26.0](v0.25.0...v0.26.0) (2026-07-30)

### ✨ 新功能

* **classroom:** 增强课堂会话分析管线(关键帧存储/帧去重/多模态优化) ([8733c87](8733c87))

### 🐛 缺陷修复

* **ai-gateway:** 修复 ASR 降级链断裂与 Redis 配置未生效 ([f7ddf96](f7ddf96))
* **classroom:** 修复音频捕获静音无回退与仅音频模式误截图 ([dd996ba](dd996ba))
- 重构 useClassroomAudio/useAudioRecovery 音频恢复逻辑
- 新增 displayMediaHandler 处理显示媒体请求
- 调整 audioCapture 与主进程音频初始化
- 双阶段左栏:配置态一屏不滚 + 运行态声呐仪表盘
- 右侧空态改为当前配置说明书,随路径/模式切换
- 智能路径置顶并设为默认采集路径
- 窗口选择两级过滤:推荐窗口 + 可展开全部窗口手动自选
- 拆分 ClassroomPage 为装配层,新增 7 组件 + constants
- 新增 docs/Foresight 课程预设头脑风暴
呼吸容器架构、主题化生命体、引导音、光尘转场、火种、自适应编排+A/B、记忆回响、语音目标、AI回顾小问;修复 reduced-motion 冻结入场动画致内容不可见
feat(dashboard): 学习启动仪式体验重塑
## [0.27.0](v0.26.0...v0.27.0) (2026-07-30)

### ✨ 新功能

* **classroom:** 回声定位页面布局优化与窗口选择增强 ([aca2166](aca2166))
* **dashboard:** 学习启动仪式体验重塑 v0.26.0 ([b91bd17](b91bd17))

### 🐛 缺陷修复

* **classroom:** 优化音频捕获回退与显示媒体处理 ([61d16e8](61d16e8))
- nginx 新增 /downloads/ 静态托管(单连接限速 2MB/s + 单 IP 4 并发,yml/json 禁缓存)
- docker-compose.prod.yml 挂载 /opt/Entropydecrease/downloads(独立于 website 目录)
- deploy.sh 预创建静态资源目录,保证 CI 用户可写
- release.yml 发版后同步安装包至服务器:先传 exe/blockmap 后传元数据消除更新 404 窗口期,生成 latest.json 供官网消费,仅保留最近 3 版
- electron-builder 双 publish:generic(自建服务器)为自动更新源,GitHub 保留为灾备源;artifactName 去除空格
- 下载页新增 DownloadCta 组件:latest.json 动态版本 + 服务器直链,失败回退 GitHub 备用源
- 修复 lint-staged 的 website eslint 命令:ESLint 9 需显式 --config 指向 website/eslint.config.mjs
## [0.28.0](v0.27.0...v0.28.0) (2026-07-30)

### ✨ 新功能

* **release:** 安装包自建服务器托管——下载页直链与自动更新双源 ([9bb9061](9bb9061))
macOS 无有效构建目标(electron-builder 仅定义 win target),必然报
ERR_ELECTRON_BUILDER_CANNOT_EXECUTE,且默认 fail-fast 连带取消 Windows
构建,导致 release job 的 GitHub 上传与服务器同步步骤从未执行(v0.27.0/
v0.28.0 Release 资产为空)。本产品为 Windows-only,matrix 仅保留
windows-latest,CI 转绿后安装包方可正常构建、上传并同步至服务器 /downloads。
## [0.28.1](v0.28.0...v0.28.1) (2026-07-30)

### 🐛 缺陷修复

* **release:** 移除 macOS 构建腿以解除发版阻塞 ([afd0af7](afd0af7))
CI Windows runner 上 Defender 实时扫描锁住刚生成的 Electron exe,导致
app-builder rcedit(写版本号/图标,无论是否签名都会执行)拿不到写句柄,
报 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE。npm ci 前排除 workspace 解除锁;
并加 --publish never,发布统一由 release job 负责,避免 electron-builder
因检测到 tag 自行尝试发布(无 GH_TOKEN 会报错)。
Aparencia and others added 20 commits August 4, 2026 23:31
- 收入方案设计:docs/product/temporary-revenue-implementation.md
- 数据库层:schema.ts 新增 beta_profile/licenses/invite_codes 三表,SCHEMA_VERSION=10
- 类型系统:client/src/types/beta.ts — UserTier/TIER_RANK/TIER_PERKS 权益矩阵
- 状态管理:betaStore.ts — Zustand persist 持久化 tier/激活码/邀请码
- UI组件:BetaProfile(身份卡片)、InviteCodeSection(邀请码管理)、
  LicenseActivation(激活码输入+服务端验证)、UpgradePrompt(非阻断升级引导)
- 权限Hook:useTierAccess(tier-based 功能访问控制)、useBetaProfile(metadata加载)
- SettingsPage 集成:ProfileSettings 后插入 BetaProfile 区域
- AI网关集成:rate_limit.py TIER_LIMITS 分级配额 + providers.py TIER_MODEL_ACCESS 分级路由
- 新增路由:routers/license.py(激活码验证) + routers/beta.py(邀请码API)
- 管理工具:scripts/license-gen.mjs(激活码离线生成,支持 PRO/LIFE/SND1/THM1)
- 代码审查修复:修复 recalcEffectiveTier 排序、激活码大小写、tier 参数传递、
  服务端验证缺失、v10迁移、邀请码数量逻辑、cohort 类型转换、import re 延迟导入等30个问题
- 路由注册:main.py 和 __init__.py 注册 license_router 和 beta_router
Phase 1-4 实施 78 项创新功能(对照 docs/Foresight/innovation-features-catalog.md):
- Phase 1 快速闭环 16 项缺口补全:课堂实时弹幕 PredictionOverlay、录制自动锚点、
  清醒期重放引导、费曼录音 AI 自评、笔记→费曼引导、合书测试入口、睡前仪式完整版、
  蔡格尼克悬念、成长叙事 GrowthStory、SOP 流程图视图、认知负荷仪表盘、
  雷达图多层级钻取、好奇心通知改写、课前预习课表触发
- Phase 2 AI 生成式内容 10 项:7 新 Chain(debate/counterintuitive/personify/mnemonic/
  podcast/learning_coach/infographic)+ socratic mirror/student 双模式 + 客户端 9 hook/组件
- Phase 3 感知沉浸游戏化 18 项:4 新 Chain(freshness/embodied/learning_narrative/haiku)、
  专注花园、知识料理书、自适应挑战阶梯、知识折纸、专注守护灵、数字养生、心流音乐引擎、
  具身休息引导、自适应排版、多感官复习 5 模式、声音记忆锚点、知识时光胶囊、E-Ink 副窗口
- Phase 4 社交生态与可视化 10 项:Go sync-service 房间/接力/匿名镜像/自习室协议 +
  compile/micro_card 2 Chain + 三维脑图/地铁图/进化树/记忆宫殿/星座大厅 + 社交 UI

审查修复(逻辑/交互/安全与性能):
- 服务端:Phase2 七功能补登记 MODEL_ROUTING/fallback/limits(此前永远走降级链)、
  13 新路由注册限流、全部 chain 非 dict JSON 防护(防 500)、socratic 模式感知字段校验、
  compile 输入总长截断、router 响应枚举纵深防御
- Go:relay 待接受/活跃配对 TTL 清理 + 结束配对端点、每用户房间上限 + 活跃房间最长存活、
  社交端点滑动窗口限流中间件、topicHash 服务端加盐轮换 + 低计数模糊、partnerUserId
  白名单校验、taskSummary trim
- 客户端:7 HIGH 修复(数字养生 5 分钟锁定失效、PodcastPlayer 轮询竞态、speaker cast
  崩溃、辩论双击分数重复累加、心流检测器休息不重置、gardenStore 持久化损坏、flowMusic
  依赖不稳定)+ 19 MEDIUM 修复(社交镜像明文标签隐私、getSession 未捕获拒绝、课堂书签
  回归、sessionId 校验、预测 in-flight 去重、缓存 key 截断、专注守护灵误报、事件重复发射、
  设置开关实时生效、录音流泄漏、useBlocker 导航确认 UI 等)

验证:client tsc(含 electron) 0 错误 + oxlint 0 errors + 973 测试通过 + vite build 通过;
AI 网关 pytest 273 通过;sync-service go build/vet/test 通过
部署失败根因(服务器 python:3.12-slim vs 本地 Python 3.14):
- routers/error_pattern.py 使用 `Any` 但未导入 `from typing import Any`——
  本地 3.14(PEP 649 延迟注解求值)import 正常,服务器 3.12 在函数定义时
  立即求值注解 → NameError → gunicorn worker 崩溃 → 健康检查失败
- 22 个 chains 文件带 UTF-8 BOM(此前 PowerShell 批量替换遗留),
  3.12 tokenizer 可跳过但属隐患,统一清理为无 BOM UTF-8
- 7 个 routers 未使用的 `from fastapi import HTTPException`(F401)由 ruff --fix 清理

验证:
- 全量 AST 扫描确认无其他"注解引用未导入 typing 名字"问题
- typing.get_type_hints 强制求值 88 个模块全部注解(等价 3.12 定义时语义)0 失败
- ruff check chains/ routers/ 全部通过
- pytest tests/ 273 通过
Bumps [gorm.io/driver/postgres](https://github.com/go-gorm/postgres) from 1.6.0 to 1.6.2.
- [Commits](go-gorm/postgres@v1.6.0...v1.6.2)

---
updated-dependencies:
- dependency-name: gorm.io/driver/postgres
  dependency-version: 1.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file go Pull requests that update go code labels Aug 5, 2026
@Aparencia Aparencia closed this Aug 21, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 21, 2026

Copy link
Copy Markdown
Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/go_modules/server/sync-service/gorm.io/driver/postgres-1.6.2 branch August 21, 2026 03:19
Aparencia added a commit that referenced this pull request Sep 13, 2026
§9 的补 UI 名单里,T18/T19 已交付 4 条(update_note_tags / set_tag_color /
reset_tag_color / video_profile_for_spec —— 本单元已用探针独立复核,各 ≥1 生产调用点)。
本提交做剩下的 6 条(§C9.1 的「6 条独立面」),每条 = 展示面 + 生产调用点 + 判据:

#34 analyze_session_command ⇒ components/session-detail/SessionAnalysisPanel.tsx(新,115 行)
    入口 = 会话详情头「🔄 重新分析」;结果面板渲染后端三段(章节/重点/术语)。
    装配:SessionDetailHeader.tsx(176→179,本件在 buttonMigration 的 35 文件名单内 ⇒
    按钮留在新件、宿主零新增 <Button>,不需要同步形状表 §C9.8)。载荷 { id }。
#37 delete_session_images_all ⇒ components/session-detail/GalleryBulkDelete.tsx(新,70 行)
    入口 = 图集区「🗑 删除本场全部图片」+ ConfirmDialog 二次确认(列明保留项)。
    装配:ImageGallery.tsx(123→127,同属 35 文件名单 ⇒ 同上)。载荷 { sessionId };取消不调 IPC。
#39 finish_session ⇒ components/StaleSessionRecoveryBar.tsx(新,86 行)
    触发 = 机器可判:手里有会话 id ∧ live_session_status.active === false(查询失败不出入口)。
    装配:ClassroomCapturePanel.tsx(297→299,净增 +2,余 1)。载荷 { id }。
#40 get_decision ⇒ components/session-detail/DecisionDetailPanel.tsx(新,68 行)
    入口 = 决策日志行点击展开;详情走命令取数(不预填列表对象,保证「接上了」可测)。
    装配:KnowledgeDecisionLog.tsx(116→120)。载荷 { id }。
#42 refine_session ⇒ session-detail/SessionRefineSection.tsx(66→96)
    入口 = 「🛠 手动精修」,与既有 auto 版(🔬 课后精修 = auto_refine_session)并列不替换;
    本件原生 <button> 已满 3/3 ⇒ 新入口走 Button 原语。sessionId 经 SessionViewHost 透传
    (SessionViewHost.tsx 141→145 + SessionDetailPanel.tsx 222→223)。载荷 { sessionId }。
#47 update_knowledge_system ⇒ components/KnowledgeSystemEditPanel.tsx(新,96 行)
    入口 = 体系详情「✎ 编辑体系」⇒ 名称/核心问题/状态三字段;未改字段传 null(不产生伪写)。
    装配:KnowledgeDetailPanel.tsx(298→300,净增 +2,余 0 —— 已登记为贴边件)。
    载荷 { id, name, coreQuestion, status }。

判据:components/batch7UiWiring.test.tsx(新,217 行)19 用例 —— 每条命令两条独立判据:
  ① 行为(入口 ⇒ 交互 ⇒ invoke 命令名与载荷逐字正确;失败走 StatusLine;确认框先于 IPC);
  ② 源码(先剥注释 ⇒ 该命令在生产侧恰 ≥1 调用点;负控 0 命中 + 正控 list_decisions 命中)。
冻结键(C9.12):5 个新件在六棘轮全 0 命中;KnowledgeDetailPanel 300/300 与
  ClassroomCapturePanel 299/300 的逐键读数均未抬高(nativeButton/border/radius/shadow/gray/oob)。
同批读数:tsc 0 错 · 14 个守卫件 159 用例全绿 · line-limits --full exit 0 · registry 311/311/0。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file go Pull requests that update go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants