= {
+ story: "STORY",
+ bug: "BUG",
+ spike: "SPIKE",
+ unknown: null,
+};
+
+function getWorkItemType(storyId: string): WorkItemType {
+ const match = storyId.match(/^\d+_([a-z]+)_/);
+ if (!match) return "unknown";
+ const segment = match[1];
+ if (segment === "story" || segment === "bug" || segment === "spike") {
+ return segment;
+ }
+ return "unknown";
+}
+
interface StagePanelProps {
title: string;
items: PipelineStageItem[];
@@ -137,13 +163,18 @@ export function StagePanel({
>
{items.map((item) => {
const itemNumber = item.story_id.match(/^(\d+)/)?.[1];
+ const itemType = getWorkItemType(item.story_id);
+ const borderColor = TYPE_COLORS[itemType];
+ const typeLabel = TYPE_LABELS[itemType];
return (
)}
+ {typeLabel && (
+
+ {typeLabel}
+
+ )}
{item.name ?? item.story_id}
{item.error && (