Skip to content

console marketplace: facet filters (business function, industry, solution type) and a Beta badge replace the single category chip row — reads the spec taxonomy (objectstack#30904) #31011

Open

Description

@objectstack-fleet

repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2
Blocked-by: objectstack#30904

Filing gate: ④ coordination child of objectstack#30904. It is the console ui/ part of the maintainer's taxonomy ruling (ruling §6, recorded on #30904: 「关掉,Beta 并入分类方案」 and the three taxonomy decisions, all recommended). The ruling says the console part is filed as its own objectstack card. The readings below are the #30904 dev's (PR #30980, report 6690814417).

维护者速读

市场页现在只有一排「分类」小标签,用的是即将退役的旧分类。新方案按职能、行业、解决方案类型三个维度筛选,再加一个 Beta 徽标。这张卡把控制台的市场页和详情页改成按这三个维度筛选、显示 Beta,多语言词条也从规格里的枚举生成,不再另抄一份。

Readings (objectstack, at the #30904 dev's base)

  • ui/packages/app-shell/src/console/marketplace/MarketplacePage.tsx:
    • category state :363; chips built from it.category :555; client filter :571; render :710-722;
    • card badge pkg.category :965;
    • raw-value fallback :560-566;
    • listMarketplacePackages({ limit: 100 }) filters on the client :407.
  • MarketplacePackagePage.tsx: categoryLabel :1425-1426, badge :1542.
  • ui/packages/i18n/src/namespaces/marketplace/*.ts (9 locales): the category block (en.ts :223) copies the retired spec enum.

Expected

  1. Replace the category chip row with facet filters:

    • businessFunctions: multi-select, OR within the facet;
    • industries: hidden while no loaded listing carries one;
    • solutionType: a tab or segment.

    Facets combine with AND, with a count per value.

  2. Card badge: the primary business function (businessFunctions[0]), plus a Beta badge when maturity === 'beta'. The detail page shows every business function, the industries, the solution type and the Beta badge.

  3. i18n:

    • delete marketplace.category.*;
    • add marketplace.businessFunction.* (11), marketplace.industry.* (10), marketplace.solutionType.* (3) and marketplace.maturity.beta, keyed by iterating the spec schemas' .options from @objectstack/spec/marketplace;
    • a parity test, so no second list exists.
  4. Data: the cloud catalog rows' snake_case business_functions / industries / solution_type / maturity, once objectstack-ai/cloud#3661 lands. Until then every facet hides; drop the raw-value fallback.

  5. Server-side filtering and pagination (ruling §6 ui item 4): facets across hundreds of templates cannot filter 100 rows on the client. Do it in this card or name a sibling.

Acceptance

  • Tests: the filters combine as stated; Beta shows only for beta; facets hide with no data; the i18n parity test fails when a spec value has no label.

Serial: after objectstack#30904 (PR #30980) merges. Pairs with objectstack-ai/cloud#3661 for data.

Suggested-grade: p2 (inherits the taxonomy cards).

Activity

  1. added
    enhancementNew feature or request
    repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    domain:uiDomain lane — seat card indexed by label:pm:seat
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 kept · domain:ui · pm:blocked · 2026-11-06T17:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2

    Carried from #30980's contract review 6692597068 (should-fix) · 2026-11-06T18:46Z · packages/cloud-connection/src/marketplace-proxy-plugin.ts:437,466-480 filters R2 snapshot rows by ?category=. No in-repo caller sends it today; the console calls listMarketplacePackages({ limit: 100 }). It goes silently dead when objectstack-ai/cloud#3661 drops category. Replace it with the facet parameters, OR within a facet and AND across, as part of this card's server-side filtering (item 5), or retire it.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p2Medium: important, M3repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions