## 目标 在主侧边栏新增“案例库”入口,以 Editorial Article Grid 展示组织共享的文章案例。组织内跨课程共享,教师维护、学生阅读;已发布案例纳入现有知识及向量检索,不同组织严格隔离。 关联课程论坛:#121。论坛范围收窄为作业与自由讨论,案例内容由本案例库独立承载。 ## 已确认的产品行为 ### 内容、入口与布局 - 案例包含标题、封面、摘要、图文正文、链接、分类和标签;首版不增加独立附件管理。 - 采用 Editorial Article Grid 杂志式文章网格:卡片展示封面、分类、标题和摘要,点击进入完整文章详情。 - 支持关键词搜索、分类筛选及移动端单列布局。 - 主侧边栏入口完整接入路由、深链接、刷新和浏览器前进后退;切换组织或课程时保持正确的可见范围。 - 沿用现有组件、设计 token、明暗主题、键盘操作、可见焦点、语义标签与减少动态效果规范。 ### 权限与发布 - 同一组织内所有教师均可创建、编辑、发布、下架任何案例;学生只能阅读已发布案例。 - 支持草稿、已发布、下架状态。编辑已发布案例时,明确点击“保存并发布”才更新公开内容;未发布修改不影响学生阅读或检索。 - 列表、详情、搜索、写入、图片访问和检索均由服务端校验组织及角色权限,不能仅隐藏编辑按钮。 - 案例由教师主动编写,不自动收录论坛帖子或学生提交;私密学生提交不得因此公开。 - 首版不增加审批流程。现有学生诊断/干预个案不是文章案例库,不能混用。 ### 知识与向量检索 - 复用现有知识摄取与向量检索链路,AI 自动检索当前用户及会话读者有权阅读的已发布案例,并提供可点击的案例来源。 - 发布及正文修改后同步索引;新版本生效后,旧版本不得继续作为检索依据。 - 草稿和下架案例不参与学生阅读与检索。下架立即退出可检索集合,底层向量清理可异步完成。 - 组织级案例检索需显式扩展现有课程级检索范围,保留个人资料、课程资料以及会话读者权限边界,不通过放宽原有过滤条件实现。 - 摄取或索引失败沿用现有失败处理与重试机制,不因旧向量残留返回已失效内容。 ## 实现约束与接入点 - 导航与页面:检查 `src/desktop/WorkspaceRail.tsx`、`src/features/learning/dashboard/navigation.ts`、`src/types.ts`、`src/lib/webNavigation.ts` 及 `src/desktop/DesktopApp.tsx`。 - 权限:`server/src/modules/access/policy.ts` 中普通知识资料允许学生写入,不能直接套用为案例管理权限;组织级教师维护权限需明确落实。 - 检索:复用 `server/src/modules/knowledge/application.ts`、`runtime.ts` 和 `retrieval-repository.ts`。当前正文更新不等同于已有标题编辑,必须补齐正文重新摄取和旧版本失效。 - 可评估复用现有资料组件与文档编辑能力,但不能将编辑器状态当作服务端授权。 - 产品状态由 PostgreSQL 管理;Web/API 与后台摄取 worker 分离;Open Notebook 保持自身 schema,不另建平行向量系统。 - 如需迁移,新增下一编号的事务性、向前兼容迁移,不修改基线,不在运行时执行 DDL。 ## 验收 1. 师生均可从主侧边栏进入案例库,同组织跨课程可读;不同组织无法通过页面、直接 URL、API、搜索、图片或检索访问彼此内容。 2. 学生不能创建、编辑、发布或下架案例,也无法读取草稿及下架内容;教师可以维护其他教师创建的案例。 3. 卡片、文章详情、关键词搜索、分类筛选、移动端单列和键盘操作可用;刷新及浏览器前进后退保持正确页面。 4. 草稿不会公开;编辑已发布案例时,未执行“保存并发布”不改变公开内容。 5. 发布后可检索并跳转案例来源;更新后不返回旧版本;下架后即使底层向量尚未清理也不返回。 6. 原有课程及个人资料权限不变,多人会话不泄露任何参与者无权阅读的内容。 7. 论坛仅保留作业与自由讨论,不再承担作品案例发布、官方案例、精选或独立资料聚合;已有资料库保持独立,讨论与作业的链接、附件及原有作业提交要求保留。 8. 不自动将论坛帖子、学生提交或学习干预个案转换为共享案例。 浏览器验证使用 `tester-army/e2e` 与官方 `@e2e-dev/web`,产出可重复运行的报告和截图,不直接运行 Playwright。复用受影响的导航、学习与知识链路覆盖,补充所属检索、权限及迁移集成覆盖;按实际变更范围执行所属检查。 ## 范围 实现上述组织共享案例库、教师维护、学生阅读、知识检索及与论坛的范围分工。本 issue 不授权生产部署。
Activity
lyyzka commentedon Oct 19, 2026
本轮集成协调:#121保持closed,范围调整由本issue跟踪。当前main最大迁移0043;#183预留0044,本项案例库迁移预留0045,由唯一合并/发布会话协调顺序及幂等验收,并与#184发布区UI合流。
feat: publish organization cases and focused course forums (#189) [sk…
lyyzka commentedon Oct 19, 2026
本轮已通过 发布 PR194 正常上线;发布工作流 成功,Komodo 已返回 Complete / success=true。生产实际镜像、Web/API 与 Worker readiness、版本及迁移均已核验,源码为
b76c4cc0,正式 LingxiOS3.5.3。关闭依据:PR189 及 migration45 已交付独立组织案例库、教师维护/学生只读、冻结发布版本、跨课程同组织可见与跨组织隔离、图片/来源授权和当前版本检索;论坛范围收敛为作业与自由讨论。
正式包验收通过 52 项 owning 集成、1 项真实 Notebook 合成 fixture、2 项案例浏览器、10 项论坛集成和 1 项论坛浏览器,均零跳过。覆盖发布/更新/下架、旧版本排除、读者集合授权、来源点击及导航/移动端;生产 migration44/45 与版本已核验。报告、实际 runtime 和截图。
Notebook 链路使用合成 embedding,验证索引链路、授权与版本边界,不宣称真实语义排序质量。首轮零测试缓存错误和字体受限轮次已单独保留;最终浏览器验收使用正式包一致的物理依赖。