qnop 能做的一切。

完整参考——社区版今天提供什么,以及少数已决定但仍在路上的能力。

评审精度

  • 行级、区域级精确批注

    在渲染后的 PDF 上标注精确的行和区域——而不是页面级的便签。

  • 带回应的 Markdown 讨论串

    每条批注都有自己的讨论,用 Markdown 书写,支持回应表情。

  • 多层锚定

    每条批注都保存文字引用、位置和版面,让它始终指向想表达的内容。

  • 跨版本重新锚定

    新的文档版本通过模糊匹配重新挂接既有批注,而不是让它们失去着落。

  • 版本间差异

    对比视图精确展示两个版本之间发生了什么变化。

  • 明确的决定

    接受或拒绝记录在批注本身上——不由沉默来暗示。

  • 定稿闸门

    只有零未决批注时评审才能定稿。没有事项掉出清单。

文档与版本

  • PDF 评审

    上传 PDF,通过规范的摄取与渲染流水线在浏览器中评审。

  • DOCX 与 Markdown 已规划

    已决定,基于同一条摄取流水线——尚未交付。

  • 不可变的版本历史

    内容变更创建新版本;旧版本从不被改写,始终完整可读。

  • 持久的后台处理

    抽取与重锚定作为持久任务运行在 PostgreSQL 上——崩溃不会丢失任何工作。

  • 对象存储中的文档

    二进制文件存放在任意兼容 S3 的存储中,绝不进数据库。

人员与团队

  • 团队与角色

    全局的管理员、成员和审计员角色,加上按团队的负责人。

  • 匿名评审

    流程需要时,评审可以在评审者匿名的情况下进行。

  • 通知与仪表盘

    评审事件送达相关的人;仪表盘展示哪里还有未决事项。

  • 把评审当作竞技

    连续纪录、成就、玩家卡片和团队段位让评审吞吐量可见。

信任与运维

  • 完整的审计日志

    每个相关操作都被记录,可由专设的审计员角色查阅。

  • 企业级登录

    OIDC 单点登录或带邮箱验证的本地账户;JWT 会话配合轮换刷新令牌,认证端点有速率限制。

  • 没有不安全的默认配置

    只要缺少必需的密钥或密钥仍是占位符,服务器就拒绝启动。

  • 运行时管理

    租户品牌、SMTP 和邮件模板都在管理后台配置,而不是在构建时。

  • 简单的拓扑

    一个容器包含 API 与 Web 界面,加上 PostgreSQL 和任意兼容 S3 的对象存储。

平台与可扩展性

  • 带版本的 REST API

    位于 /api/v1 的 OpenAPI 优先契约,附带明确的弃用策略。

  • 公开的插件契约

    qnop-spi 构件定义扩展点——目前是存储与文档抽取。

  • 开源

    AGPL-3.0,在 GitHub 上公开开发。