You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

5.2 KiB

Company Knowledge Specification

Purpose

定义公司知识配置、学生公司知识聚合和公开评价小样本保护行为。

Requirements

Requirement: 学生读取公司知识介绍

系统 SHALL 允许已登录 STUDENT 通过 GET /onboarding/companies/{companyId}/knowledge 读取公司知识介绍。响应 MUST 聚合企业基础资料、企业维护的知识内容以及公开评价摘要,并使用白名单 DTO 排除 ownerUserId 等内部字段。

Scenario: 企业已维护知识内容

  • WHEN STUDENT 请求存在企业且该企业已有知识内容
  • THEN 系统返回企业基础资料、文化、工作制度、入职指南和更新时间
  • AND knowledgeState 为 CONFIGURED
  • AND 不返回企业 ownerUserId、员工用户 ID、评价哈希或审核原因

Scenario: 企业未维护知识内容

  • WHEN STUDENT 请求存在企业且该企业没有知识内容记录
  • THEN 系统仍返回企业基础资料
  • AND knowledgeState 为 BASIC_ONLY
  • AND 知识内容字段为 null 或空集合,不返回 404

Scenario: 企业不存在

  • WHEN STUDENT 请求不存在的 companyId
  • THEN 系统返回 404 COMPANY_NOT_FOUND

Requirement: 公司知识评价摘要使用公开数据和小样本保护

系统 SHALL 聚合该企业全部岗位中状态为 PUBLISHED 且审核状态为 AUTO_APPROVED 或 APPROVED 的评价。公开评价少于 3 条时 MUST 返回 INSUFFICIENT 或 EMPTY,且不得返回平均分或维度均值。达到 3 条时 MAY 返回平均评分、评分分布、热门标签和八维均值。

Scenario: 无公开评价

  • WHEN 企业没有任何符合条件的公开评价
  • THEN reviewSummary.state 为 EMPTY
  • AND totalReviews 为 0
  • AND averageRating 与 dimensionSummary 为空

Scenario: 公开评价少于 3 条

  • WHEN 企业只有 1 或 2 条符合条件的公开评价
  • THEN reviewSummary.state 为 INSUFFICIENT
  • AND 系统返回真实 totalReviews
  • AND 不返回平均分、评分分布或维度均值

Scenario: 公开评价达到 3 条

  • WHEN 企业有至少 3 条符合条件的公开评价
  • THEN reviewSummary.state 为 SUFFICIENT
  • AND 系统返回平均评分、评分分布、热门标签和维度汇总
  • AND 每个维度返回样本数及是否达到小样本阈值

Requirement: 企业读取本企业知识配置

系统 SHALL 允许 COMPANY 通过 GET /onboarding/company/knowledge 读取本企业知识配置。无记录时 MUST 返回 configured=false 和空内容,而不是 404;有记录时 MUST 返回内容和当前版本。

Scenario: 尚未配置

  • WHEN COMPANY 请求本企业知识配置且尚未创建记录
  • THEN 系统返回 configured=false
  • AND 内容字段为空,版本为 0

Scenario: 已配置

  • WHEN COMPANY 请求本企业已有知识配置
  • THEN 系统返回文化、工作制度、入职指南、更新时间和当前版本
  • AND configured=true

Requirement: 企业 Upsert 公司知识内容

系统 SHALL 允许 COMPANY 通过 PUT /onboarding/company/knowledge 创建或更新本企业知识内容。字段 MUST 使用纯文本并受长度限制,不允许 HTML 富文本。更新已有记录时 MUST 使用乐观锁版本;版本冲突返回 409 ONBOARDING_KNOWLEDGE_CONCURRENT_UPDATE。

Scenario: 首次创建

  • WHEN COMPANY 首次提交合法的知识内容
  • THEN 系统创建绑定该企业的知识记录
  • AND 返回 configured=true 和版本 0

Scenario: 使用当前版本更新

  • WHEN COMPANY 使用当前版本提交新的文化、制度或入职指南
  • THEN 系统更新记录并递增版本
  • AND 返回最新内容

Scenario: 使用过期版本更新

  • WHEN COMPANY 使用过期版本提交知识内容
  • THEN 系统返回 409 ONBOARDING_KNOWLEDGE_CONCURRENT_UPDATE
  • AND 不覆盖数据库中的新内容

Scenario: 非法内容

  • WHEN 请求字段超出最大长度或包含不受支持的格式
  • THEN 系统返回 400 BAD_REQUEST
  • AND 不写入知识记录

Requirement: 公司知识权限与所有权隔离

学生读取接口 MUST 仅允许 STUDENT;企业配置接口 MUST 仅允许 COMPANY 且只操作当前用户拥有的企业。任何跨企业读取配置或修改操作 MUST 被拒绝。

Scenario: 企业访问本企业配置

  • WHEN COMPANY 读取或更新自己的知识记录
  • THEN 系统允许操作

Scenario: 非企业访问企业配置

  • WHEN STUDENT、ADMIN 或未登录用户访问企业知识配置接口
  • THEN 系统返回 401 或 403
  • AND 不读取或修改企业配置

Scenario: 不存在的企业

  • WHEN STUDENT 请求不存在的公司知识
  • THEN 系统返回 404 COMPANY_NOT_FOUND

Requirement: 不改变既有评价与企业接口语义

本变更 MUST 只读复用既有企业、岗位、评价和维度评分数据,不得修改既有表结构、响应字段或权限语义。

Scenario: 既有评价接口回归

  • WHEN 执行已有评价与企业模块测试
  • THEN 所有既有测试保持通过
  • AND OpenAPI 中既有路径的请求与响应语义不变