Skip to content

feat: 主侧边栏新增组织共享案例库,支持教师编辑与知识检索 #187

Closed

Description

@lyyzka

目标

在主侧边栏新增“案例库”入口,以 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

  1. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    本轮集成协调:#121保持closed,范围调整由本issue跟踪。当前main最大迁移0043;#183预留0044,本项案例库迁移预留0045,由唯一合并/发布会话协调顺序及幂等验收,并与#184发布区UI合流。

  2. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    本轮已通过 发布 PR194 正常上线;发布工作流 成功,Komodo 已返回 Complete / success=true。生产实际镜像、Web/API 与 Worker readiness、版本及迁移均已核验,源码为 b76c4cc0,正式 LingxiOS 3.5.3。

    关闭依据:PR189 及 migration45 已交付独立组织案例库、教师维护/学生只读、冻结发布版本、跨课程同组织可见与跨组织隔离、图片/来源授权和当前版本检索;论坛范围收敛为作业与自由讨论。

    正式包验收通过 52 项 owning 集成、1 项真实 Notebook 合成 fixture、2 项案例浏览器、10 项论坛集成和 1 项论坛浏览器,均零跳过。覆盖发布/更新/下架、旧版本排除、读者集合授权、来源点击及导航/移动端;生产 migration44/45 与版本已核验。报告、实际 runtime 和截图。

    Notebook 链路使用合成 embedding,验证索引链路、授权与版本边界,不宣称真实语义排序质量。首轮零测试缓存错误和字体受限轮次已单独保留;最终浏览器验收使用正式包一致的物理依赖。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions