跳到主要内容

首页

控制台的首页,分为三个标签页。Overview 读取进来多少数据、什么在变化、什么需要人来处理,每个数字都以最近十四天对比之前的十四天。Reviews 保存着等待第二双眼睛的功能开关变更。Needs you 把失败和等待中的工作流运行与需要关注的功能开关放在一起,每项一张卡片,侧边栏的 Home 条目会计数这两个标签页所持有的数量。

The Home screen in the Live environment
The Home screen, Live environment.
The Home screen in the Live environment, dark theme
The Home screen, Live environment.

Three tabs

Overview 是今天的首页:指标带、Top movers、Event volume 和 Anomalies。Reviews 是曾经独立成页的审核收件箱:项目的功能开关变更请求,按状态筛选、可搜索,每一项在网格旁打开它的请求,旧地址 /reviews 会转到这里。Needs you 把每一件需要人来处理的事列成一张卡片。标签页行在 Reviews 和 Needs you 上带有计数,侧边栏的 Home 条目带有两者之和,所以在打开页面之前导轨就能说出有多少在等待。地址以 ?tab= 携带标签页,所以链接会落在它所指的标签页上。

The metrics band

Two totals for the last fourteen days: events received and the people they came from. A project with nothing in the window shows an explanation rather than zeros, and a failed load says it failed rather than reading as a quiet account.

Needs you

每一件需要人来处理的事,各一张卡片:失败的工作流运行、等待信号的运行、最近没有被任何东西求值过的功能开关,以及超过其意图所声明寿命的功能开关。失败的运行带有错误色调;另外三种是对读者的召唤,而不是故障。每张卡片在标签上标出类型,用一行写出事实,并带有自己的出路:打开它所指的运行或功能开关,再次触发工作流,发送等待中的运行所期待的信号,或归档已经完成的功能开关。标签页上的计数是整个列表,所以滚动的列表仍能说出它持有多少。一个界限被越过的被监视洞察是第五种,阈值:卡片写出洞察、界限和每日检查读到的值,并带着它越过的那条带打开洞察。

Top movers

The events whose counts moved most against the preceding window of equal length: the last fourteen days against the fourteen before them. Each row shows the current count and a signed delta, so a spike and a collapse are equally visible.

Event volume

Ingest volume across the window as a chart, with empty days drawn as empty rather than skipped: a project that went quiet for a week looks quiet, not compressed.

Anomalies

One event at a time, chosen in the panel's picker and opening on the project's busiest: a bar per day across the fourteen-day window, so the baseline is visible rather than asserted. A day whose count left that baseline is tinted and dated, and a row beneath marks it ▲ or ▼ and names the count against the baseline it left. A fortnight that held its line still draws the band and says so.

The account menu

The account menu open from the sidebar foot: the company group over the accounts group
The account menu: companies first, then accounts.
The account menu open from the sidebar foot: the company group over the accounts group, dark theme
The account menu: companies first, then accounts.

Your avatar at the foot of the sidebar opens the account menu. Under your name and email, the first group is your companies: every prodantix company this sign-in belongs to, the name over your role in it (Owner, Admin, Billing or Member), with a check on the one the console is scoped to. Choose another and the row shows a spinner while the console asks your sign-in to scope to that company, then reloads: the re-drawn console is the confirmation, and there is no toast. A switch that failed says so under the row, with Retry. When your sign-in is too old to switch with, the row reads Your sign-in is out of date and offers Sign in again, which signs you in afresh and brings you back to the page you were on. One company held still draws its row with the check, so you can see which company scopes everything the menu names below it. The group offers no create and no manage row: you join an existing company by invitation (User management), never from here. On the wire the group is myCompanies (GraphQL reference); a switch is a session call that carries your own sign-in, so it is not part of the GraphQL API.

A sign-in whose token names no prodantix company, which happens when the Bomdisoft ID joined another product's company first, does not land in an empty console. The page body is replaced by one card, Choose a company, with the sidebar staying in place around it. The card lists the same rows as the menu with every gutter empty, since nothing is active yet, and nothing is chosen on your behalf: a member of one company still sees one row and picks it. Choosing scopes the sign-in to that company and reloads the console. A card whose list could not be read draws Retry where the rows would be.

A sign-in that belongs to no prodantix company at all meets Set up your company in the same place, with the sidebar faded around it and a note in the sidebar saying that projects, analytics and messages live in a company. When you own an organisation in another Bomdisoft product, a switch offers Use one you own, which turns the organisation you pick into your prodantix company, or Create a new one. Using one brings only you in: nobody else in that organisation joins prodantix. With nothing to use, the card asks for a Company name straight away. Either way you name the company's first project under First project name and press Create once; the console shows that project's keys, and Continue opens Home in the new company. When your organisations could not be checked, the switch stays with Use one you own unavailable and Create a new one selected, over the line Could not check for organisations you already own. and a Try again. A company that was made but is not ready yet says so and finishes on the next Create, and an organisation that already has a prodantix company asks you to get an invitation from its owner. Joining somebody else's company is still by invitation, and the card says so under Create.

Below the divider, the accounts group: the prodantix accounts this sign-in holds, each by its name, or numbered and marked unnamed when it has none, with the current one checked. Picking another switches the same way, a spinner on the row and the console reloading on that account, with the reason inline and Retry if it failed. A suspended account carries a Suspended chip and cannot be opened.

The rows after the groups leave the console: Manage account opens your Bomdisoft account in a new tab, where profile, security and devices live for every Bomdisoft product; Billing opens the shared billing site the same way; Sign out ends the session.

Where this meets the API

The concept behind the numbers is the Analytics pillar. On the wire, every panel is a read: the metrics band, movers and volume are runQuery aggregations, the anomalies strip pairs runQuery with aiInsights (a z-score over the same daily counts, no model call), Needs you joins flags with workflow runs, and the Reviews tab reads flagChangeRequests, answered through approveFlagChange and rejectFlagChange, or taken back by the requester through withdrawFlagChange (GraphQL reference). The events being counted arrive through the ingest edge (Ingestion), and Needs you stays current between reloads by listening to flag and workflow run changes (Realtime events).