The extra-large accessibility rule forced .tools-grid to a single
column, which read as oversized full-width cards on WeChat. Keep the
2x2 grid at every font size; chip-row still degrades to one column.
Employee profile moves the growth summary to a compact five-metric
strip with a right-aligned detail pill, masks the phone number, adds
red-filled entry icons, keeps the three key evidence scores always
visible, and switches history rows to icon + inline score with a
view-all link. Supervisor profile masks the account phone as well.
The inline panel-title ran into the description text and the bordered
return button was compressed into an ugly two-line wrap; give the copy
column block layout and keep the action button on one line.
Bare npm run dev (including hosted preview sessions) has no portless
route, so the previous default target https://wygj-api.localhost was
unreachable and every API call failed with HTTP 500. scripts/dev.sh now
passes VITE_PROXY_TARGET explicitly, keeping the portless flow intact.
Rework the pending-review list with priority badges, filters and score
ordering, rebuild the review detail around a large-score header, score
bars, dialogue bubbles and a guided review form, and add a completion
page that summarizes the review outcome and the dispatched follow-up
assignment. All three pages resolve trainee display names through the
team snapshot so organization names replace raw app account labels.
The reviewDetail query referenced a.trainee_name without declaring the
table alias, which 500s whenever org-sync display fields are enabled,
and the mobile payload never exposed extPartyId, so the supervisor
review pages could not resolve organization member names.
- practice team members / exam targets: when person_name is empty, show
phone-masked label (员工·尾号XXXX) instead of a bare 员工
- POST /api/aihr/mobile/exams/supervisor/ai-generate: LLM-generated exam
questions grounded on SOP knowledge fragments, strict JSON sanitize,
scores rebalanced to 100; clear errors when model unavailable
- workbench metrics: red only when value > 0 (was always red, even zeros)
- stable alert renders as calm green strip, not a clickable pink alarm card
- quick-entry header: drop duplicated member count
- header subtitle shows today's date
- team: low-risk member cards use neutral grey left bar (was red for all)
- team: 'normal' risk count is green (was red)
- team: difficulty sort chips flex-centered
Replace line-height centering with flex + fixed heights, and swap
emoji/unicode glyphs (+ × ⌨ 🎤) for uni-icons vector icons so
alignment and rendering are consistent across platforms.