Skip to content

feat(nav): each persona's own work first in navigation and default views (#2367) - #2377

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-4uu4yf
Oct 29, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-4uu4yf

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Irene · project thread
Fixes #2367
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么: 销售代表的侧边栏不再出现只含「知识库」的服务分组,知识库移到销售分组末尾(打开已发布文章);服务专员和服务经理不再看到总是空的「商机」「我的商机」。客户列表页签以「我的客户」「风险客户」开头,商机列表「我的进行中商机」紧跟「进行中商机」。SLA 日历只显示未结工单;营销活动甘特图默认按月、合同甘特图默认按季度;全部预测只分一层组。
  • 为什么改: QA: complete browser pass of HotCRM on @objectstack/* 18.2.0 — all 161 feature-inventory rows, Setup and Studio, in six tracks #2320 UX 走查第 3 张卡(导航与默认视图),Irene 已批准:每个角色自己的工作排在前面。
  • 风险与回滚: 低。只改导航 visible、视图顺序、过滤、缩放和分组;权限集、岗位、共享都没动,每个角色的落地页不变(测试与浏览器都核对过)。回滚即 revert 本 PR。
  • 先看: src/service/index.ts(知识库的两个入口与门控)、src/sales/apps/crm.app.ts(NOT_SERVICE_STAFF)、src/sales/views/forecast.view.ts(orderBy 单层分组)。
  • 两分钟验证: pnpm exec vitest run test/app-navigation-audience.test.ts test/app-navigation-shape.test.ts test/forecast-list-grouping.test.ts,预期全部通过;或以 na.rep 登录,侧边栏应为 Sales Home 之下直接是 Sales,末项为 Knowledge。
  • 需要你做的: 第 1 行「Sales 放在 Service 之上」与服务人员落地页在 18.2.0 上冲突,已在项目线程里请 Irene 选择;本 PR 实现推荐的 B(只修代表),选 A 则另起后续改动。

What changes

Each row of the card, measured first on origin/main 21664f7 with @objectstack 18.2.0, with its verdict:

# Row Verdict Where
1 Service above Sales; a rep's Service group holds only Knowledge Partly fixed; ordering needs a ruling A rep's Service group is gone: nav_knowledge asks NOT_A_SALES_REP, and the service module folds a rep's Knowledge into Sales as nav_knowledge_published (the Published view, rep only). Folded, not hidden: the console's search box sends GET /api/v1/search?objects=… with only the objects of the entries shown, so a rep with no Knowledge entry could not find an article (measured). Moving Sales above Service for everyone else would land the service agent and service manager on Leads instead of Service Overview: the console opens on the first entry shown, 18.2.0 has no landing key (homePageId is retired), and a contribution only appends to a group. Asked in the project thread; see Acceptance notes.
2 My Accounts and My Open Deals behind showcase views Fixed account.view.ts: My Accounts, At-Risk, Enterprise, then cards and map. opportunity.view.ts: My Open Deals right after Open Deals. At 1280px both were in the overflow; now both are on the strip.
3a SLA Calendar shows closed cases Fixed sla_calendar filters status not_in [resolved, closed], the cut My Open Cases uses (is_closed alone keeps resolved cases). The agent's calendar went from 23 records to 12.
3b Task Board's Completed lane is always empty Platform-only The lanes are the status options; 18.2.0's KanbanConfigSchema has no lane list or hide-empty key, and view filters are AND-only, so "open, or completed recently" cannot be written. Dropping the filter would fill the lane with every completed task ever. Unchanged.
4a Campaign gantt opens at Day Fixed campaign_gantt.gantt.viewMode: 'month'; also contract_gantt at 'quarter' (Revenue S16, same defect). A viewer's saved zoom still wins.
4b Gantt left column reads "Task Name" Platform-only The header is the fixed key gantt.column.taskName in the console's gantt plugin; no gantt config key sets it.
4c Renewal Calendar opens on an empty month Platform-only The calendar starts at new Date(); CalendarConfigSchema has no initial-date key.
5 Forecast list grouped twice Fixed One level: { field: 'period_label', order: 'desc', orderBy: 'period_start' } (orderBy, objectstack#25786, is in 18.2.0). Measured: one heading per period, newest first, Q4 2025 last.
6 Service personas see Opportunities and My Deals Fixed Both entries ask NOT_SERVICE_STAFF (position half only; object entries are pruned by read already), as #2268 did for the dashboards. No permission-set change, so the service_agent description is untouched.
7 Console home tile is magenta, app is orange Platform-only The tile colour is a hash of the app name into a fixed ten-gradient palette (from-pink-500 to-rose-600 for crm_enterprise); branding.primaryColor is not read there.
8 Manual sidebar "Hotcrm"; positions block highlights "Team" Already fixed Since #2355 the sidebar reads the book label (HotCRM User Manual / HotCRM Admin Manual), and the positions code block left crm_admin_access in #2329.
  • Translations: nav_knowledge_published in zh-CN, ja-JP and es-ES (same words as nav_knowledge). No file moved.
  • Docs site (en, zh-Hans, zh-Hant): quick tour (Sales row, the gating paragraph), Sales index (ten entries), Cases and SLA pages (SLA Calendar), Forecasting (one grouping).
  • In-app manual: Getting Started (en, zh): a rep's Knowledge is under Sales; service staff see no deal lists.
  • Changeset (minor).

Tests

Acceptance notes

  • Row 1 ordering: the decision card offers B (this PR), A (two persona-gated Service anchors, three service entries written twice, the Slim the nav: one exemplar per nav-item type, view variants return to in-page tabs (7 groups / 31 items → 6 / ~24) #1259 one-destination guard relaxed), or C (Sales first for all, service staff land on Leads). Landing pages before and after, measured in the console: na.rep → Sales Home, sales.manager and admin → Executive Overview, service.agent and service.manager → Service Overview, both before and after.
  • Screenshots (before/after per row, as the persona the row names) are in the project files under issue-2367/.
  • Platform findings for the seat to file: 3b kanban lane control (or OR filters), 4b gantt column title, 4c calendar initial date, 7 console tile colour from branding, and row 1's landing key.

Verification

pnpm verify at a6ed925
pnpm verify (validate && typecheck && lint --strict && hygiene && hygiene:tokens && build && test)
  Data: 20 Objects 375 Fields 5 Picklists · UI: 1 Apps 14 Views 6 Pages 5 Dashboards 10 Reports 38 Actions
  build: 8 author-time warnings, the same count as main
 Test Files  246 passed (246)
      Tests  4731 passed | 1 skipped (4732)
VERIFY_EXIT=0

CI runs coverage and e2e.

Ablations (on the committed tree; exact-anchor replace, anchor count 1 → 0, restored with git checkout HEAD, blob hash equal to HEAD after each)
A1 NOT_SERVICE_STAFF dropped from nav_opportunity   3 red (shape gate roster; service_agent / service_manager sidebar)
A2 NOT_A_SALES_REP dropped from nav_knowledge        7 red (reps see a Service group and two Knowledge entries)
A3 SALES_REP dropped from nav_knowledge_published    11 red (every non-rep persona sees two Knowledge entries)

🤖 Generated with Claude Code

https://claude.ai/code/session_01J8VVAn7qxFVwU44atutX9R

…ews (#2367)

Work in progress: account and opportunity tab order, SLA calendar on live
cases, gantt zoom, one forecast grouping, opportunity entries hidden from
service staff, Knowledge hidden from reps.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAn7qxFVwU44atutX9R
A rep's Knowledge entry moves into the Sales group as a Published view
entry instead of being hidden: the console's search box only searches the
objects of the entries a member is shown. Docs site and in-app manual pages
describe the changed surfaces in en and zh.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAn7qxFVwU44atutX9R
@vercel

vercel Bot commented Oct 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hotcrm Ignored Ignored Oct 29, 2026 4:38am UTC

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation ci/cd CI plumbing and the verification pipeline metadata Declarative metadata — schema, security posture, UI surfaces labels Oct 29, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

Verdict: ACCEPT · repo:hotcrm seat 1 · huangyiirene · session session_01J8VVAnPkgK6CWrJa6t7Fk5 · 2026-10-29T04:52Z · head a6ed925
Implemented-by: card thread session session_01J8VVAn7qxFVwU44atutX9R (report 6488113139 on #2367). Reviewed-by: the seat, against the 33-file diff and hotcrm origin/main 495bff5.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd CI plumbing and the verification pipeline documentation Improvements or additions to documentation metadata Declarative metadata — schema, security posture, UI surfaces

Projects

None yet

2 participants