fix(03): resolve TypeScript type mismatches from merged plans
This commit is contained in:
parent
e2ac3b10aa
commit
021c82875e
4 changed files with 14 additions and 13 deletions
|
|
@ -14,7 +14,7 @@ const STATUS_COLOR: Record<string, string> = {
|
||||||
|
|
||||||
export function ItemRow({ item }: { item: InventoryItem }) {
|
export function ItemRow({ item }: { item: InventoryItem }) {
|
||||||
const netboxUrl = `http://netbox.local/dcim/devices/${item.id}/`
|
const netboxUrl = `http://netbox.local/dcim/devices/${item.id}/`
|
||||||
const dot = STATUS_COLOR[item.catalog_status] ?? 'bg-charcoal'
|
const dot = STATUS_COLOR[item.catalog_status ?? 'draft'] ?? 'bg-charcoal'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ const STATUS_LABELS: Record<string, string> = {
|
||||||
|
|
||||||
type BadgeVariant = 'default' | 'indexed' | 'draft' | 'needs_research' | 'researched' | 'complete' | 'destructive'
|
type BadgeVariant = 'default' | 'indexed' | 'draft' | 'needs_research' | 'researched' | 'complete' | 'destructive'
|
||||||
|
|
||||||
export function StatusBadge({ status }: { status: string }) {
|
export function StatusBadge({ status }: { status: string | null }) {
|
||||||
const variant = (status in STATUS_LABELS ? status : 'draft') as BadgeVariant
|
const key = status ?? 'draft'
|
||||||
return <Badge variant={variant}>{STATUS_LABELS[status] ?? status}</Badge>
|
const variant = (key in STATUS_LABELS ? key : 'draft') as BadgeVariant
|
||||||
|
return <Badge variant={variant}>{STATUS_LABELS[key] ?? key}</Badge>
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,19 +31,19 @@ export const fetchInventory = (): Promise<InventoryItem[]> =>
|
||||||
export const fetchInventoryItem = (id: number): Promise<InventoryItem> =>
|
export const fetchInventoryItem = (id: number): Promise<InventoryItem> =>
|
||||||
fetchJSON<InventoryItem>(`${BASE}/inventory/${id}`)
|
fetchJSON<InventoryItem>(`${BASE}/inventory/${id}`)
|
||||||
|
|
||||||
// Intake submission — added by Plan 03-04
|
// Intake submission — matches IntakeResult in store/intake.ts
|
||||||
export interface IntakeResponse {
|
export interface IntakeResponse {
|
||||||
hw_id: string
|
hw_id: string
|
||||||
device_id: number
|
|
||||||
catalog_status: string
|
|
||||||
confidence: number
|
|
||||||
name: string
|
|
||||||
manufacturer: string
|
|
||||||
model: string
|
model: string
|
||||||
serial_number: string
|
manufacturer: string
|
||||||
category: string
|
category: string
|
||||||
tags: string[]
|
specs: Record<string, string>
|
||||||
|
suggested_tags: string[]
|
||||||
ai_notes: string
|
ai_notes: string
|
||||||
|
confidence: number
|
||||||
|
catalog_status: string
|
||||||
|
netbox_id: number
|
||||||
|
queued: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function submitIntake(photos: File[], quickAdd = false): Promise<IntakeResponse> {
|
export async function submitIntake(photos: File[], quickAdd = false): Promise<IntakeResponse> {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
|
||||||
import { useInventoryItem } from '@/hooks/useInventory'
|
import { useInventoryItem } from '@/hooks/useInventory'
|
||||||
|
|
||||||
function FieldRow({ label, value }: { label: string; value?: string }) {
|
function FieldRow({ label, value }: { label: string; value?: string | null }) {
|
||||||
if (!value) return null
|
if (!value) return null
|
||||||
return (
|
return (
|
||||||
<div className="flex gap-3 py-2 border-b border-charcoal/40 last:border-0">
|
<div className="flex gap-3 py-2 border-b border-charcoal/40 last:border-0">
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue