diff --git a/docs/test-reports/job-fair/2026-07-25/bugs/BUG-001-public-title-year-mismatch.md b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-001-public-title-year-mismatch.md new file mode 100644 index 0000000..9d0e806 --- /dev/null +++ b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-001-public-title-year-mismatch.md @@ -0,0 +1,63 @@ +# BUG-001:招聘会标题年份与举办日期不一致 + +- 严重级别:P2(数据展示不一致,可能误导求职者) +- 状态:历史数据待确认;代码处理结果见 [FIX-STATUS.md](./FIX-STATUS.md) +- 环境:test +- 角色:PC 求职者(未登录) +- 入口:`/shihezi/job-portal/job-fair` +- 发现时间:2026-07-25(页面响应时间为 2026-07-24 17:06:09 GMT) + +## 前置条件 + +使用测试环境公开求职者入口,当前日期为 2026-07-25,进入招聘会列表,保持默认“线上招聘会”和 2026 年 7 月视图。 + +## 复现步骤 + +1. 打开 `https://test.xjshzly.longbiosphere.com/shihezi`。 +2. 点击顶部“招聘会”。 +3. 在“本月招聘会”区域查看 07 月 31 日的第一条招聘会。 +4. 对照页面标题和页面展示的举办日期。 + +## 预期结果 + +招聘会标题中的年份、列表日期和详情中的举办日期应指向同一场次/同一年度;如果标题是业务名称,应至少不能与举办日期产生明确矛盾。 + +## 实际结果 + +页面展示标题为“2028年‘百日千万招聘专项行动’暨第五场人才夜市——退役军人(军属)专场招聘会”,但该条目接口字段 `jobFairStartTime` 和 `jobFairEndTime` 均为 `2026-07-31`。页面因此把“2028 年”标题放在 2026 年 7 月的招聘会安排中。 + +## 浏览器证据 + +- 页面截图:[JF-PO-001-public-list-baseline.png](../screenshots/JF-PO-001-public-list-baseline.png) +- `GET /api/shihezi/app/jobfair/public/jobfair/currentMonth`:HTTP 200 +- 响应中同一对象的关键字段: + +```json +{ + "jobFairId": "1032", + "jobFairTitle": "2028年“百日千万招聘专项行动”暨第五场人才夜市——退役军人(军属)专场招聘会", + "jobFairStartTime": "2026-07-31 20:00:00", + "jobFairEndTime": "2026-07-31 23:00:00" +} +``` + +- 页面“本月招聘会”同时显示“07月31日”和上述标题。 +- 控制台无 JavaScript 异常;该问题是业务数据/展示一致性问题,不是请求失败。 + +### 企业端户外列表的同类复现 + +在企业端户外招聘会列表中还观察到同类数据矛盾:`id=8` 的标题为“2028年石河子市文旅商贸户外招聘会”,但列表返回 `holdTime=2026-10-24 10:00:00`、`endTime=2026-10-24 17:00:00`。该记录通过 `GET /api/shihezi/cms/outdoor-fair/list?current=1&pageSize=20` 返回,页面在“开始时间/结束时间”列显示为 2026 年。 + +该观察扩大了问题影响范围:同类标题年度错误同时出现在公开线上招聘会和企业端户外招聘会数据中。 + +## 影响范围 + +公开求职者可能误以为活动发生在 2028 年,造成报名/参会时间判断错误;管理端、企业端若复用同一条数据,也可能出现同样的不一致。 + +## 初步定位 + +从浏览器响应看,标题和时间在服务端返回时已经不一致,优先检查测试环境招聘会 `1032` 的基础数据或管理端编辑保存逻辑;前端目前直接展示服务端标题,没有做年份一致性校验。 + +## 建议 + +核对该招聘会真实年度并修正数据;同时在管理端新增/编辑时增加标题年度与举办时间年度的校验或提示,避免再次产生矛盾。跨管理端、企业端和公开端复验同一 `jobFairId` 的标题与时间。 diff --git a/docs/test-reports/job-fair/2026-07-25/bugs/BUG-002-public-filter-field-accessibility.md b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-002-public-filter-field-accessibility.md new file mode 100644 index 0000000..ad0abe8 --- /dev/null +++ b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-002-public-filter-field-accessibility.md @@ -0,0 +1,38 @@ +# BUG-002:招聘会筛选表单字段缺少 id/name + +- 严重级别:P3(可访问性与自动填充兼容性问题) +- 状态:代码已修复,待测试环境浏览器复验 +- 环境:test +- 角色:PC 求职者(未登录) +- 入口:`/shihezi/job-portal/job-fair` +- 发现时间:2026-07-25 + +## 复现步骤 + +1. 打开测试环境 PC 求职者入口并进入“招聘会”。 +2. 保持默认“线上招聘会”页签。 +3. 查看招聘会筛选区域的搜索输入框和年月下拉字段。 +4. 在 Chrome DevTools 控制台消息中查看页面加载后的 Issue。 + +## 预期结果 + +表单控件应具备稳定的 `id` 或 `name`,并与可见标签/辅助文本建立关联,便于键盘用户、读屏软件和浏览器自动填充识别。 + +## 实际结果 + +Chrome DevTools 报告:`A form field element should have an id or name attribute (count: 1)`。招聘会页面的筛选区包含搜索框和年月选择控件,其中至少一个原生表单字段没有 `id` 或 `name`。 + +## 浏览器证据 + +- 页面截图:[JF-PO-001-public-list-baseline.png](../screenshots/JF-PO-001-public-list-baseline.png) +- 页面 accessibility snapshot 显示筛选区域包含“搜索招聘会名称”搜索框以及年月 combobox。 +- 控制台消息:`msgid=9 [issue] A form field element should have an id or name attribute (count: 1)`。 +- 相关接口均返回 HTTP 200;问题不影响本次数据请求,但影响表单语义和辅助技术。 + +## 影响范围 + +使用读屏、自动填充、浏览器表单识别或自动化测试的用户可能无法稳定定位该字段;也会降低招聘会页面的无障碍质量。 + +## 建议 + +为对应原生控件补充唯一 `id/name`,并使用 `label` 或 `aria-labelledby` 与可见字段名称关联;修复后重新运行 DevTools accessibility/issue 检查。 diff --git a/docs/test-reports/job-fair/2026-07-25/bugs/BUG-003-online-detail-host-unit-missing.md b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-003-online-detail-host-unit-missing.md new file mode 100644 index 0000000..1db5b05 --- /dev/null +++ b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-003-online-detail-host-unit-missing.md @@ -0,0 +1,46 @@ +# BUG-003:线上招聘会详情缺少列表已有的主办单位 + +- 严重级别:P2(同一业务对象页面信息不一致) +- 状态:后端契约已修复,待测试环境浏览器复验 +- 环境:test +- 角色:PC 求职者(未登录) +- 入口:`/shihezi/job-portal/job-fair` +- 招聘会:`jobFairId=1050` +- 发现时间:2026-07-25 + +## 复现步骤 + +1. 打开测试环境 PC 求职者端的“招聘会”页面。 +2. 在“线上招聘会”列表找到“2026年师市高校毕业生等青年就业服务专项行动直播带岗”。 +3. 观察列表卡片的主办/组织单位字段。 +4. 点击该场招聘会进入详情页。 +5. 对照详情页“主办单位”字段。 + +## 预期结果 + +同一 `jobFairId` 的列表和详情应展示一致的主办单位;详情接口应返回该字段,或前端使用列表上下文中的同值回填。 + +## 实际结果 + +列表展示“石河子人力资源产业园创新创业基地”,详情页展示“主办单位:暂未公布”。 + +## 浏览器证据 + +- 列表/详情截图:[JF-PO-004-online-detail.png](../screenshots/JF-PO-004-online-detail.png) +- 详情截图中“主办单位:暂未公布”。 +- `GET /api/shihezi/app/jobfair/public/jobfair/detail?jobFairId=1050`:HTTP 200,响应包含标题、地址、简介、起止时间、类型、经纬度、`isSignUp`,但没有 `jobFairHostUnit` 或 `jobFairOrganizeUnit`。 +- 列表接口 `GET /api/shihezi/app/jobfair/public/jobfair/page?pageNum=1&pageSize=9` 同一场次返回 `jobFairHostUnit` 与 `jobFairOrganizeUnit`。 +- `GET /api/shihezi/app/jobfair/public/jobfair/enterprises-with-jobs-by-job-fair-id?jobFairId=1050`:HTTP 200,岗位展示正常。 +- 控制台无 JavaScript 异常,仅有 CSS preload 警告。 + +## 影响范围 + +求职者从列表进入详情时会丢失重要的主办单位信息,降低可信度;管理端或分享深链接直接打开详情时同样可能出现信息缺失。 + +## 初步定位 + +前端详情组件优先读取 `jobFairHostUnit` / `jobFairOrganizeUnit`,但详情接口响应未提供这两个字段;列表接口字段完整。优先检查公共招聘会详情 DTO/查询 SQL 的字段映射和公开详情接口序列化。 + +## 建议 + +统一列表与详情返回模型;补齐详情接口主办单位字段,并用同一 `jobFairId` 验证列表、详情和管理端数据一致性。 diff --git a/docs/test-reports/job-fair/2026-07-25/bugs/BUG-004-enterprise-filter-accessibility.md b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-004-enterprise-filter-accessibility.md new file mode 100644 index 0000000..bd002e3 --- /dev/null +++ b/docs/test-reports/job-fair/2026-07-25/bugs/BUG-004-enterprise-filter-accessibility.md @@ -0,0 +1,48 @@ +# BUG-004:企业端线上招聘会筛选表单缺少字段语义关联 + +- 严重级别:P3(可访问性与自动填充兼容性问题) +- 状态:代码已修复,待测试环境浏览器复验 +- 环境:test +- 角色:PC 企业端(已登录测试企业角色) +- 入口:`/shihezi/jobfair/public-job-fair` +- 发现时间:2026-07-25 + +## 复现步骤 + +1. 使用测试企业角色进入企业管理端。 +2. 打开“招聘会管理 → 线上招聘会”。 +3. 保持默认查询条件,观察“时间范围”和“招聘会标题”筛选控件。 +4. 打开 Chrome DevTools 的 Issues/Console 信息,查看页面加载后的表单问题。 + +## 预期结果 + +筛选区的原生表单字段应具备稳定且唯一的 `id` 或 `name`,并与可见标签建立语义关联;读屏软件、键盘用户、浏览器自动填充和自动化测试应能明确识别“时间范围”和“招聘会标题”。 + +## 实际结果 + +Chrome DevTools 报告: + +- `No label associated with a form field (count: 1)` +- `A form field element should have an id or name attribute (count: 2)` + +页面可正常加载列表和查询接口,但至少两个筛选字段没有稳定的字段标识,且至少一个字段没有与标签关联。 + +## 浏览器证据 + +- 页面截图:[JF-EN-004-enterprise-filter-form.png](../screenshots/JF-EN-004-enterprise-filter-form.png) +- accessibility snapshot 显示筛选字段为“时间范围 :”文本框、“请选择”文本框和“招聘会标题 :”文本框,但未显示对应的稳定 `id/name` 语义信息。 +- 控制台 Issue:`msgid=26 [issue] No label associated with a form field (count: 1)`。 +- 控制台 Issue:`msgid=27 [issue] A form field element should have an id or name attribute (count: 2)`。 +- `GET /api/shihezi/cms/publicJobFair/list?pageNum=1&pageSize=20`:HTTP 200,列表返回 56 条数据;问题发生在页面表单 DOM 语义层,不是接口加载失败。 + +## 影响范围 + +使用读屏、浏览器自动填充、键盘辅助技术或表单自动化的企业用户可能无法稳定定位或理解筛选字段;也会使企业端招聘会页面无法通过基础无障碍检查。 + +## 初步定位 + +企业端线上招聘会列表页的筛选表单渲染了时间范围 DatePicker/Input 和招聘会标题 Input,但页面运行时没有为全部原生字段输出可识别的 `id/name`,且至少一个字段没有对应 `