Commit Graph
150 Commits
Author SHA1 Message Date
admin 3b034f6903 feat(aihr): report org sync quality in precheck 2026-07-09 21:54:12 +08:00
admin f38dfeeae0 feat(aihr): surface org snapshot data quality 2026-07-09 21:38:35 +08:00
admin f00f9045eb fix(aihr): keep old daily drills out of today 2026-07-09 21:24:53 +08:00
admin b650304ef1 chore(aihr): add phones to org seed 2026-07-09 21:14:12 +08:00
admin 89d8611ea1 fix(aihr): scope unknown mobile supervisors 2026-07-09 17:29:28 +08:00
admin 7fcea6ecd3 fix(mobile): isolate candidate study position 2026-07-09 17:21:08 +08:00
admin 505fbda8ee fix(mobile): add fallback for building page back 2026-07-09 17:18:14 +08:00
admin a9ed25108a fix(mobile): guard case uploads with employee position 2026-07-09 17:15:15 +08:00
admin 8f73cb0c84 fix(mobile): require employee position before user flow 2026-07-09 17:09:26 +08:00
admin 8b92a7e9ac fix(aihr): include org phones in supervisor team scope 2026-07-09 16:45:57 +08:00
admin f2a21099d5 fix(frontend): export promotion evidence csv 2026-07-09 16:32:27 +08:00
admin 7de6fa9969 fix(mobile): load supervisor review audio with auth 2026-07-09 16:19:11 +08:00
admin f1a975b5f6 fix(frontend): play review audio in calibration page 2026-07-09 16:13:29 +08:00
admin bba1e00425 fix(aihr): align growth path progress with criteria 2026-07-09 16:01:14 +08:00
admin f1fe0bdfaa fix(aihr): clean video asr snippets 2026-07-09 15:46:03 +08:00
admin 2ef3e39744 fix(aihr): trim sop evidence snippets 2026-07-09 15:37:01 +08:00
admin ba8c35904e fix(mobile): normalize sop answer step labels 2026-07-09 15:28:14 +08:00
admin 2b1f206ca0 fix(mobile): default missing level to unrated 2026-07-09 15:17:38 +08:00
admin aa547ef365 fix(mobile): avoid seeded empty competency 2026-07-09 15:15:14 +08:00
admin 25d3d1b8d5 test(demo): check mobile h5 shell 2026-07-09 14:56:31 +08:00
admin 54b2b0dbbc chore(dev): run mobile uni through portless 2026-07-09 14:52:34 +08:00
admin 1c47e250c4 fix(mobile): quiet h5 validation noise 2026-07-09 14:46:33 +08:00
admin 68c4b8547e fix(aihr): return pilot export as csv 2026-07-09 14:38:32 +08:00
admin 5e0a5c7af7 docs: align phase plan with uni mobile app 2026-07-09 14:24:51 +08:00
admin eae25e4a54 fix(mobile): tidy user page text layout 2026-07-09 14:22:32 +08:00
admin ac9f640f7f fix(mobile): constrain h5 shell width 2026-07-09 14:15:24 +08:00
admin e60520b7aa fix(mobile): proxy review audio downloads 2026-07-09 13:54:19 +08:00
admin 4ef388873b feat(mobile): add voice transcription to practice 2026-07-09 13:41:48 +08:00
admin 04405b5e11 fix(mobile): reset page scroll on route entry 2026-07-09 13:34:24 +08:00
admin f517cbd2b5 fix(mobile): carry today task into practice 2026-07-09 13:28:52 +08:00
admin dd13936ca9 fix(mobile): show real assignments on today page 2026-07-09 13:24:19 +08:00
admin 03d9c93ea4 fix(aihr): require candidate identity for materials 2026-07-09 13:13:40 +08:00
admin 0bff6bbfa6 fix(aihr): keep demo question verification read-only 2026-07-09 13:08:54 +08:00
admin b2ba54b2b3 fix(dev): verify demo questions via portless api 2026-07-09 13:02:09 +08:00
admin 801bc26de8 fix(dev): run demo check through portless 2026-07-09 12:58:29 +08:00
admin 5f92847c00 feat(aihr): map supervisor phone to org scope 2026-07-09 12:54:33 +08:00
admin 9bd567a72f feat(aihr): filter supervisor reviews by org scope 2026-07-09 12:43:16 +08:00
admin 45d06f56cd fix(dev): proxy admin through portless api 2026-07-09 12:33:30 +08:00
admin a83fb53ecd feat(aihr): scope supervisor practice data 2026-07-09 11:37:33 +08:00
admin 53698e7832 feat(aihr): clarify org snapshot field usage 2026-07-09 11:03:47 +08:00
admin 2f5fb853a2 fix(aihr): require assignee for practice assignments 2026-07-09 11:02:11 +08:00
admin 82f861542f fix(aihr): paginate org snapshot view 2026-07-09 10:50:19 +08:00
admin 678543e8a5 feat(aihr): complete uni-app role workflows 2026-07-09 10:42:20 +08:00
admin e4070c8b8c refactor(mobile): extract types, static data, utils, styles from App.vue
Pure moves only — zero behavior change, template untouched:
- types.ts (447), utils.ts (51), data/{auth,navigation,practice,mentor,
  home,supervisor,icons}.ts, styles/app.css (4690, still global non-scoped
  via <style src>)
- App.vue 9006 → 3559 lines; 98 moved declarations verbatim except
  export/import syntax
- Built CSS hash identical to pre-refactor (byte-equal styles); reactive
  state, computed, watchers, lifecycle and templates all stay in App.vue
- Component-level split deferred to phase two after 2026-07-10 Alpha
2026-07-08 21:07:45 +08:00
admin 15cd789da6 feat(aihr): add SOP answer thumbs up/down feedback loop
- New aihr_knowledge_answer_feedback table; unique (tenant, query_norm,
  fragment_id) pair keeps submissions idempotent
- POST /api/knowledge/answer-feedback (fragmentIds array), GET pending-review
  list, POST /{id}/review — all under existing auth scope
- Down-voted (question, fragment) pairs are filtered from dbSearch fusion
  results; if filtering empties the hit list the original results are kept
  with an explanatory caution (never degrade to no-answer)
- Feedback table missing/unreachable → filter silently skipped, search
  behavior unchanged (degradation chain preserved)
- SnippetResponse gains optional trailing fragmentId (db hits only; seed
  fallback stays null); mobile sopPanel adds 👍/👎 with locked state after
  submit, up votes auto-marked reviewed to keep the review queue clean
2026-07-08 15:09:27 +08:00
admin 8d78bc69d1 feat(aihr): bind SOP direct-answer digest to sop_answer prompt template
- Seed aihr_prompt_template with code=sop_answer (conclusion-first + numbered
  steps + citations appended), matching the built-in prompt
- Digest prefers the enabled sop_answer template, falls back to the built-in
  constant, and logs prompt_version; answer/keyPoints/cautions contract unchanged
2026-07-08 14:52:02 +08:00
admin 7fd61b6ca3 feat(aihr): add coach-hint style regeneration buttons to practice turn
- /turn accepts optional regenerate+style (serious/gentle/detailed/professional);
  regenerate short-circuits before rememberTraineeReply — no round advance,
  no trainee reply write, no scoring impact; only same-round coachHint evidence
  is overwritten
- Style instruction injected into existing LLM turn prompt; LLM missing/failed
  returns original hint with explicit message (no fake data)
- Mobile practice page renders 再严肃/再温柔/更细致/更专业 pills under coach
  hints; success replaces text with a style note, failure toasts and keeps
  original; old clients unaffected (fields appended)
2026-07-08 14:52:02 +08:00
admin f40d2fcc6e docs: archive MVP design-qa record and refresh doc indexes
- Move root design-qa.md → docs/archive/2026-07-mvp-delivery/ (MVP-phase
  screenshot QA, concluded passed; register in archive README)
- Rename 20260708 UUID screenshot to descriptive name
- Index the 2026-07-08 integration plan in README, docs/README, AGENTS.md
2026-07-08 12:23:03 +08:00
admin 13c7bdc082 docs: adopt 2026-07-08 product decisions — 学练问报 integration plan
- Add docs/20260708/: integration plan v1.2 (product definition vs launch
  demo split into four parts), meeting notes, customer 'third edition' docx,
  WeChat follow-up screenshot
- Decisions: directed mentorship rejected → open question board; 学 module
  upgraded to courses/no-fast-forward video/min reading time/irregular exams;
  direct-answer SOP format; credit-gated offline promotion exam
- Customer replies on three open items: multi-app jump deferred (D6 stays),
  leaderboard kept as opt-in switch (default off), manager evaluation gated
  by org-structure permissions
- Master plan → v0.3 (§4.4 open question board + permission-gated evaluation,
  §4.5 learning module, §8 resolved items); practice plan → v0.8 (sop_answer
  template, style-regen buttons, answer thumbs up/down, credit rules in M4)
2026-07-08 12:22:47 +08:00
admin e8d90609c1 fix(mobile): harden stored auth credentials and login response validation
- Treat 'undefined'/'null' localStorage values as absent; clear incomplete
  token/clientId pairs and prompt re-login instead of sending broken headers
- Gate authenticated UI on both token and clientId via isAuthenticated
- Reject login responses missing access_token or client_id
2026-07-08 12:22:33 +08:00