# Transceiver Intelligence Platform (TIP)
## Das massivste Transceiver & Switch Database Projekt der Welt

**Version:** 1.0 — 2026-03-27
**Author:** Rene Fichtmueller / Context X
**Repository:** github.com/renefichtmueller/transceiver-db
**Integration:** EO Global Pulse (Flexoptix)

---

## 1. VISION

Eine lebendige Intelligence-Plattform die alles vereint:
- **159+ Transceiver** (bestehende npm DB) als Seed-Daten
- **500+ Switches & Router** von 30+ Herstellern (Cisco, Arista, Juniper, Nokia, Huawei, HPE, Dell, Extreme, Fortinet, MikroTik, Hirschmann, Moxa, Siemens, etc.)
- **40+ Whitebox-Switches** von 9 ODM-Herstellern (Edgecore, Celestica, UfiSpace, etc.)
- **~300 Flexoptix-unterstützte Vendors** kategorisiert (Network, Security, Industrial, Broadcast, Storage)
- **SONiC HCL Integration** — automatisierter Abgleich der SONiC Hardware Compatibility List
- **Echtzeit-Preisüberwachung** aller Wettbewerber weltweit
- **Lagerbestände live** von FS.com bis chinesischen OEMs
- **Switch↔Transceiver Kompatibilitäts-Matrix** — welcher Transceiver passt in welchen Switch?
- **Digitalisierte Handbücher** aller 300+ Switch-Hersteller per MCP durchsuchbar
- **Hype Cycle Engine** basierend auf Norton-Bass Multigenerational Diffusion Model
- **FAQ/Troubleshooting Knowledge Base** aus gescannten Vendor-FAQs
- **Automatische Blog-Generierung** aus Marktdaten und Trends
- **Freitext-Suche** für Sales ("Kunde hat Cisco Nexus 93180, braucht 10km Transceiver")
- **Template-Matching** (FlexBox Coding + Switch-Konfiguration)
- **News-Aggregation** von OFC, ECOC, CIOE, Photonics West
- **Fabrik-Monitoring** aller Transceiver-Hersteller weltweit

**Kein statisches Nachschlagewerk — eine sich selbst aktualisierende Competitive Intelligence Engine.**

---

## 2. ARCHITEKTUR

### 2.1 System-Übersicht

```
┌─────────────────────────────────────────────────────────────────────────┐
│                        CLOUDFLARE EDGE LAYER                            │
│                                                                         │
│  Workers          R2 Storage         KV Cache         Queues            │
│  ┌─────────┐     ┌──────────┐      ┌─────────┐     ┌──────────┐       │
│  │ API GW  │     │ PDFs     │      │ Hot     │     │ Scrape   │       │
│  │ MCP Srv │     │ Manuals  │      │ Product │     │ Jobs     │       │
│  │ FAQ Chat│     │ Images   │      │ Cache   │     │ OCR Pipe │       │
│  │ Blog API│     │ Exports  │      │ Prices  │     │ Alerts   │       │
│  └─────────┘     └──────────┘      └─────────┘     └──────────┘       │
│         │              │                  │               │             │
└─────────┼──────────────┼──────────────────┼───────────────┼─────────────┘
          │ Cloudflare Tunnel               │               │
┌─────────▼──────────────▼──────────────────▼───────────────▼─────────────┐
│                     ERIK SERVER (.82) — Core Engine                      │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │  PostgreSQL 17 + TimescaleDB + pgvector                          │  │
│  │                                                                   │  │
│  │  CORE TABLES:                                                     │  │
│  │  vendors · transceivers · switches · compatibility ·              │  │
│  │  documents · knowledge_base · standards · form_factors ·          │  │
│  │  templates · factories · news_articles · blog_drafts              │  │
│  │                                                                   │  │
│  │  TIME-SERIES (Hypertables):                                       │  │
│  │  price_observations · stock_observations · market_metrics         │  │
│  │                                                                   │  │
│  │  FULL-TEXT SEARCH:                                                │  │
│  │  tsvector auf allen durchsuchbaren Feldern                        │  │
│  └───────────────────────────────────────────────────────────────────┘  │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │  Qdrant (Docker, Port 6333) — Vector Search Engine               │  │
│  │                                                                   │  │
│  │  Collections:                                                     │  │
│  │  product_embeddings · datasheet_chunks · faq_embeddings ·         │  │
│  │  manual_chunks · troubleshooting_embeddings · news_embeddings     │  │
│  │                                                                   │  │
│  │  Payload Filtering: vendor, form_factor, speed, category, reach   │  │
│  └───────────────────────────────────────────────────────────────────┘  │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │  Scraper Orchestrator (Node.js + Crawlee + Playwright, PM2)      │  │
│  │                                                                   │  │
│  │  Job Scheduler: pg-boss (PostgreSQL-backed)                       │  │
│  │  Echtzeit: Preise + Stock (5-15 Min Intervall)                    │  │
│  │  Täglich: News, Messen, Blog-Feeds                                │  │
│  │  Wöchentlich: Handbücher, Datasheets, FAQs                       │  │
│  │  Monatlich: Factory-Updates, Vendor-Websites                      │  │
│  │  Change Detection: SHA-256 Content Hashing                        │  │
│  │  Adaptive Scheduling: Häufige Änderungen → kürzere Intervalle     │  │
│  └───────────────────────────────────────────────────────────────────┘  │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │  Hype Cycle Engine (TypeScript)                                   │  │
│  │                                                                   │  │
│  │  Norton-Bass Multigenerational Diffusion Model                    │  │
│  │  + Media Sentiment Analysis                                       │  │
│  │  + Phase Classification (5 Phasen)                                │  │
│  │  = Automatische Hype Cycle Berechnung pro Technologie             │  │
│  └───────────────────────────────────────────────────────────────────┘  │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │  OCR Pipeline: Docling → Chunk → Embed → Store                   │  │
│  │  Embeddings: Ollama nomic-embed-text auf .213 (zero cost)         │  │
│  └───────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐
│                     MAC STUDIO (.213) — AI Layer                        │
│  Ollama: nomic-embed-text (Embeddings), qwen2.5:14b (Blog/FAQ)         │
└─────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────┐
│                     EO GLOBAL PULSE — Frontend                          │
│  Transceiver LLM Chat · Sales Advisor · Hype Cycle Dashboard            │
│  Compatibility Checker · Price Comparison · Template Finder             │
└─────────────────────────────────────────────────────────────────────────┘
```

### 2.2 Warum diese Architektur

| Anforderung | Komponente | Begründung |
|---|---|---|
| Relationale Daten | PostgreSQL 17 | Bewährt, Team kennt es, FK-Constraints, ACID |
| Zeitreihen (Preise/Stock) | TimescaleDB Extension | Hypertable-Kompression (20x), Continuous Aggregates für Trends |
| Vektor-Suche mit Filtern | Qdrant | Payload-Filtering: "Zeige Transceiver WHERE vendor=Cisco AND form_factor=QSFP28 ORDER BY similarity" — pgvector kann das nicht effizient |
| Dokument-Storage | Cloudflare R2 | S3-kompatibel, keine Egress-Kosten, global verfügbar |
| Hot-Cache | Cloudflare KV | Sub-ms Reads für häufig abgefragte Produkte |
| API Layer | Cloudflare Workers | Global Edge, MCP-Server-Host, Multi-Tenant Routing |
| Scraping | Crawlee + Playwright auf Erik | Crawlee (18k+ Stars) — Request-Queuing, Auto-Retry, Anti-Bot, Session-Management out of the box |
| OCR | Docling v2.81 (bereits installiert) | Beste OSS-Option für technische PDFs mit Tabellen |
| Embeddings | Ollama nomic-embed-text auf .213 | 768 Dimensionen, 8192 Token Context, zero API-Kosten |
| Blog-Generierung | Ollama qwen2.5:14b auf .213 | Lokale LLM-Generierung, keine API-Kosten |

### 2.3 Kosten (monatlich)

| Komponente | Hosting | Kosten |
|---|---|---|
| PostgreSQL + TimescaleDB + Qdrant | Erik (.82, existiert) | 0 EUR |
| Cloudflare Workers (API) | Workers Paid Plan | ~5 EUR |
| Cloudflare R2 (~100GB PDFs/Manuals) | R2 Storage | ~1.50 EUR |
| Cloudflare KV (Hot Cache) | KV Namespace | ~0.50 EUR |
| Residential Proxies (Scraping) | Bright Data / Geonode | 50-100 EUR |
| Ollama Embeddings + LLM | Mac Studio .213 (existiert) | 0 EUR (Strom) |
| **Gesamt** | | **~55-105 EUR/Monat** |

---

## 3. DATENBANK-SCHEMA

### 3.1 Core Tables (PostgreSQL)

```sql
-- ============================================================
-- VENDORS (Hersteller, Distributoren, Reseller, OEMs)
-- ============================================================
CREATE TABLE vendors (
    id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name            TEXT NOT NULL UNIQUE,
    slug            TEXT NOT NULL UNIQUE,        -- URL-safe identifier
    type            TEXT NOT NULL,               -- manufacturer|distributor|oem|reseller|compatible
    headquarters    TEXT,
    country         TEXT,
    website         TEXT,
    shop_url        TEXT,                        -- Webshop URL für Scraping
    api_available   BOOLEAN DEFAULT FALSE,
    api_endpoint    TEXT,
    logo_r2_key     TEXT,
    founded_year    INTEGER,
    revenue_usd     BIGINT,                     -- Letzte bekannte Jahresumsatz
    employee_count  INTEGER,
    market_position TEXT,                        -- "Top 3 Global", "Regional Leader", etc.
    specialties     TEXT[],                      -- ["400G", "Coherent", "CWDM"]
    scrape_config   JSONB,                      -- Scraper-spezifische Config (Selektoren, etc.)
    last_scraped    TIMESTAMPTZ,
    is_competitor   BOOLEAN DEFAULT FALSE,       -- Wettbewerber von Flexoptix
    is_factory      BOOLEAN DEFAULT FALSE,       -- Eigene Fertigung
    factory_locations TEXT[],                    -- ["Shenzhen", "Thailand", "Vietnam"]
    certifications  TEXT[],                      -- ["ISO 9001", "RoHS", "TAA"]
    created_at      TIMESTAMPTZ DEFAULT NOW(),
    updated_at      TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- TRANSCEIVERS (Haupttabelle — erweitert bestehende npm DB)
-- ============================================================
CREATE TABLE transceivers (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    vendor_id           UUID REFERENCES vendors(id),
    part_number         TEXT NOT NULL,
    standard            TEXT,                   -- IEEE/MSA Referenz
    form_factor         TEXT NOT NULL,          -- SFP, SFP+, QSFP28, QSFP-DD, OSFP...
    speed_gbps          NUMERIC NOT NULL,
    speed_label         TEXT,                   -- "100G", "400G", "800G"
    lanes               INTEGER,
    lane_rate_gbps      NUMERIC,
    modulation          TEXT,                   -- NRZ, PAM4, Coherent
    reach_meters        INTEGER NOT NULL,
    reach_label         TEXT,                   -- "SR", "LR", "ER", "ZR"
    fiber_type          TEXT,                   -- SMF, MMF, Copper
    wavelengths         TEXT,                   -- "850nm", "1310nm", "CWDM4"
    connector           TEXT,                   -- LC, SC, MPO-12, MPO-16, CS, SN
    power_consumption_w NUMERIC,
    temp_range          TEXT,                   -- COM (-0/70°C), IND (-40/85°C)
    category            TEXT,                   -- DataCenter, Metro, LongHaul, DCI, CWDM, DWDM...
    dom_support         BOOLEAN DEFAULT TRUE,
    digital_diagnostics TEXT,                   -- DDM, CMIS, SFF-8472, SFF-8636

    -- CWDM/DWDM spezifisch
    wdm_type            TEXT,                   -- CWDM, DWDM, null für non-WDM
    channel_count       INTEGER,                -- Anzahl Wellenlängen
    channel_spacing_ghz NUMERIC,                -- 100GHz, 50GHz für DWDM
    tunable             BOOLEAN DEFAULT FALSE,
    itu_grid            TEXT,                   -- ITU-T G.694.1/G.694.2

    -- Coherent spezifisch
    coherent            BOOLEAN DEFAULT FALSE,
    baud_rate_gbaud     NUMERIC,
    fec_type            TEXT,                   -- oFEC, cFEC, KP4, RS-FEC
    dsp_vendor          TEXT,                   -- Broadcom, Marvell, Inphi

    -- Lifecycle & Markt
    year_introduced     INTEGER,
    year_mainstream      INTEGER,               -- Wann Massenmarkt erreicht
    year_peak           INTEGER,                -- Peak-Shipments
    year_decline        INTEGER,                -- Beginn Rückgang
    market_status       TEXT,                   -- Mainstream, Growth, Emerging, Legacy, EOL
    hype_cycle_phase    TEXT,                   -- InnovationTrigger, Peak, Trough, Slope, Plateau
    generation          TEXT,                   -- "Gen1", "Gen2", "Next-Gen"

    -- Pricing
    price_tier          TEXT,                   -- Budget, Standard, Premium
    msrp_usd            NUMERIC,               -- Listenpreis
    street_price_usd    NUMERIC,               -- Aktueller Marktpreis (von Scraper)

    -- Technische Details
    operating_case_temp TEXT,
    max_link_length     TEXT,
    optical_budget_db   NUMERIC,
    tx_power_min_dbm    NUMERIC,
    tx_power_max_dbm    NUMERIC,
    rx_sensitivity_dbm  NUMERIC,
    extinction_ratio_db NUMERIC,

    -- Meta
    datasheet_r2_key    TEXT,                   -- PDF in R2
    image_r2_key        TEXT,
    tags                TEXT[],
    notes               TEXT,
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW(),

    UNIQUE(vendor_id, part_number)
);

-- ============================================================
-- SWITCHES (Alle Netzwerk-Switches aller Hersteller)
-- ============================================================
CREATE TABLE switches (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    vendor_id           UUID REFERENCES vendors(id),
    model               TEXT NOT NULL,
    series              TEXT,                   -- "Nexus 9000", "QFX5000", "7280R3"
    category            TEXT,                   -- DataCenter, Campus, Edge, Core, SP
    layer               TEXT,                   -- L2, L3, L2/L3
    managed             BOOLEAN DEFAULT TRUE,

    -- Port-Konfiguration
    ports_config        JSONB,                  -- {"48x10G SFP+": 48, "6x100G QSFP28": 6}
    total_ports         INTEGER,
    uplink_speed_gbps   NUMERIC,
    max_speed_gbps      NUMERIC,               -- Höchste Port-Geschwindigkeit

    -- Leistungsdaten
    switching_capacity_tbps NUMERIC,
    forwarding_rate_mpps    NUMERIC,
    latency_ns          NUMERIC,
    buffer_mb           NUMERIC,

    -- ASIC Info
    asic_vendor         TEXT,                   -- Broadcom, Marvell, Cisco, NVIDIA
    asic_model          TEXT,                   -- Tomahawk 4, Jericho2, Silicon One
    asic_generation     TEXT,

    -- Features
    poe_support         TEXT,                   -- None, PoE, PoE+, PoE++, UPoE
    stacking_support    BOOLEAN DEFAULT FALSE,
    vxlan_support       BOOLEAN DEFAULT FALSE,
    evpn_support        BOOLEAN DEFAULT FALSE,
    bgp_support         BOOLEAN DEFAULT FALSE,
    mpls_support        BOOLEAN DEFAULT FALSE,
    openconfig_support  BOOLEAN DEFAULT FALSE,
    sonic_compatible    BOOLEAN DEFAULT FALSE,
    macsec_support      BOOLEAN DEFAULT FALSE,

    -- Lifecycle
    release_date        DATE,
    eos_date            DATE,                   -- End of Sale
    eol_date            DATE,                   -- End of Life
    last_support_date   DATE,
    lifecycle_status     TEXT,                   -- Active, EoS Announced, EoL, Legacy
    successor_model     TEXT,

    -- Physisch
    rack_units          NUMERIC,
    max_power_w         NUMERIC,
    typical_power_w     NUMERIC,
    weight_kg           NUMERIC,
    airflow             TEXT,                   -- F2B, B2F

    -- Pricing
    msrp_usd            NUMERIC,
    street_price_usd    NUMERIC,

    -- Dokumentation
    manual_r2_key       TEXT,                   -- Digitalisiertes Handbuch in R2
    datasheet_r2_key    TEXT,
    config_guide_r2_key TEXT,
    compatibility_list_url TEXT,                -- Vendor Compatibility Matrix URL

    -- Meta
    tags                TEXT[],
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW(),

    UNIQUE(vendor_id, model)
);

-- ============================================================
-- COMPATIBILITY (Switch ↔ Transceiver Kompatibilität)
-- ============================================================
CREATE TABLE compatibility (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    switch_id           UUID REFERENCES switches(id),
    transceiver_id      UUID REFERENCES transceivers(id),
    verified_by         TEXT,                   -- "Flexoptix Lab", "Vendor Matrix", "Community"
    verification_date   DATE,
    verification_method TEXT,                   -- "tested", "vendor_matrix", "datasheet", "community"
    status              TEXT DEFAULT 'compatible',  -- compatible, incompatible, partial, unknown
    notes               TEXT,
    firmware_min        TEXT,                   -- Minimum Firmware für Kompatibilität
    known_issues        TEXT,
    source_url          TEXT,                   -- Link zur Quelle
    created_at          TIMESTAMPTZ DEFAULT NOW(),

    UNIQUE(switch_id, transceiver_id)
);

-- ============================================================
-- TEMPLATES (FlexBox Coding + Switch-Konfiguration)
-- ============================================================
CREATE TABLE templates (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    type                TEXT NOT NULL,          -- flexbox_coding | switch_config
    name                TEXT NOT NULL,
    description         TEXT,
    switch_vendor       TEXT,                   -- Für welchen Switch-Hersteller
    switch_series       TEXT,                   -- Für welche Switch-Serie
    transceiver_type    TEXT,                   -- Für welchen Transceiver-Typ
    speed_gbps          NUMERIC,
    technology          TEXT,                   -- CWDM, DWDM, SR, LR, ZR
    template_content    TEXT NOT NULL,          -- Der eigentliche Template-Code/Config
    variables           JSONB,                  -- Platzhalter-Variablen
    tags                TEXT[],
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- DOCUMENTS (PDFs, Handbücher, Datasheets in R2)
-- ============================================================
CREATE TABLE documents (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    entity_type         TEXT NOT NULL,          -- transceiver | switch | vendor | standard
    entity_id           UUID,
    doc_type            TEXT NOT NULL,          -- manual | datasheet | config_guide | compatibility_list | faq | whitepaper
    title               TEXT,
    filename            TEXT,
    r2_key              TEXT NOT NULL,          -- Pfad in R2
    source_url          TEXT,                   -- Original-Download-URL
    file_size_bytes     BIGINT,
    page_count          INTEGER,
    ocr_status          TEXT DEFAULT 'pending', -- pending | processing | completed | failed
    ocr_text            TEXT,                   -- Extrahierter Volltext
    language            TEXT DEFAULT 'en',
    content_hash        TEXT,                   -- SHA-256 für Change Detection
    last_checked        TIMESTAMPTZ,
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- KNOWLEDGE BASE (FAQs, Troubleshooting, Best Practices)
-- ============================================================
CREATE TABLE knowledge_base (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    category            TEXT NOT NULL,          -- troubleshooting | faq | best_practice | known_issue | compatibility_tip
    subcategory         TEXT,                   -- optical_power | link_flap | temperature | firmware | interop
    question            TEXT NOT NULL,
    answer              TEXT NOT NULL,
    source_vendor       TEXT,                   -- Von welchem Vendor-FAQ gescannt
    source_url          TEXT,
    applies_to_form_factors TEXT[],             -- ["QSFP28", "QSFP-DD"]
    applies_to_speeds   TEXT[],                 -- ["100G", "400G"]
    applies_to_vendors  TEXT[],                 -- ["Cisco", "Juniper"]
    severity            TEXT,                   -- critical | high | medium | low | info
    resolution_steps    JSONB,                  -- Strukturierte Lösungsschritte
    last_verified       TIMESTAMPTZ,
    helpful_count       INTEGER DEFAULT 0,      -- Upvotes von Nutzern
    tags                TEXT[],
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- STANDARDS (IEEE, OIF, MSA — erweitert bestehende npm DB)
-- ============================================================
CREATE TABLE standards (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name                TEXT NOT NULL UNIQUE,    -- "IEEE 802.3bs", "OIF 400ZR"
    body                TEXT,                    -- IEEE, OIF, MSA
    type                TEXT,                    -- ieee_amendment | oif_ia | msa | de_facto
    speed_gbps          NUMERIC,
    lanes               INTEGER,
    lane_rate_gbps      NUMERIC,
    modulation          TEXT,
    fiber_type          TEXT,
    wavelength          TEXT,
    max_reach_meters    INTEGER,
    fec_required        BOOLEAN,
    form_factors        TEXT[],
    year_draft          INTEGER,
    year_ratified       INTEGER,
    year_revised        INTEGER,
    status              TEXT,                    -- draft | ratified | revised | superseded
    superseded_by       TEXT,
    member_count        INTEGER,                 -- Für MSAs
    notes               TEXT,
    url                 TEXT,
    created_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- FACTORIES (Fertigungsstätten weltweit)
-- ============================================================
CREATE TABLE factories (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    vendor_id           UUID REFERENCES vendors(id),
    name                TEXT NOT NULL,
    country             TEXT NOT NULL,
    city                TEXT,
    factory_type        TEXT,                    -- manufacturing | assembly | r_and_d | headquarters
    products            TEXT[],                  -- ["SFP+", "QSFP28", "Coherent"]
    capacity_units_month INTEGER,                -- Geschätzte Monatskapazität
    employee_count      INTEGER,
    certifications      TEXT[],
    expansion_planned   BOOLEAN DEFAULT FALSE,
    expansion_details   TEXT,
    source_url          TEXT,
    last_verified       TIMESTAMPTZ,
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- NEWS (Aggregierte Nachrichten von Messen, Trade Press)
-- ============================================================
CREATE TABLE news_articles (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    title               TEXT NOT NULL,
    source              TEXT NOT NULL,           -- "Lightwave", "Light Reading", "OFC 2026"
    source_url          TEXT NOT NULL UNIQUE,
    published_at        TIMESTAMPTZ,
    author              TEXT,
    summary             TEXT,
    full_text           TEXT,
    category            TEXT,                    -- product_launch | market_report | standard | m_and_a | factory | event
    event               TEXT,                    -- OFC, ECOC, CIOE, Photonics West
    mentioned_vendors   TEXT[],
    mentioned_products  TEXT[],
    mentioned_standards TEXT[],
    sentiment_score     NUMERIC,                 -- -1.0 bis +1.0
    relevance_score     NUMERIC,                 -- 0-100
    content_hash        TEXT,
    tags                TEXT[],
    created_at          TIMESTAMPTZ DEFAULT NOW()
);

-- ============================================================
-- BLOG DRAFTS (Auto-generierte Entwürfe)
-- ============================================================
CREATE TABLE blog_drafts (
    id                  UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    title               TEXT NOT NULL,
    topic               TEXT,                    -- hype_cycle | price_trend | new_product | comparison | tutorial
    target_audience     TEXT,                    -- sales | technical | customer | seo
    outline             JSONB,
    draft_content       TEXT,
    data_sources        JSONB,                   -- Welche DB-Queries haben den Draft gefüttert
    status              TEXT DEFAULT 'draft',     -- draft | review | approved | published
    generated_by        TEXT,                    -- "hype_cycle_engine" | "price_alert" | "news_digest"
    word_count          INTEGER,
    seo_keywords        TEXT[],
    created_at          TIMESTAMPTZ DEFAULT NOW(),
    updated_at          TIMESTAMPTZ DEFAULT NOW()
);
```

### 3.2 TimescaleDB Hypertables (Echtzeit-Zeitreihen)

```sql
-- ============================================================
-- PRICE OBSERVATIONS (Echtzeit-Preise aller Wettbewerber)
-- ============================================================
CREATE TABLE price_observations (
    time                TIMESTAMPTZ NOT NULL,
    transceiver_id      UUID NOT NULL,
    source_vendor_id    UUID NOT NULL,           -- Von welchem Shop/Vendor
    price               NUMERIC NOT NULL,
    currency            TEXT DEFAULT 'USD',
    stock_level         TEXT,                    -- "in_stock", "low_stock", "out_of_stock", "on_request"
    quantity_available  INTEGER,
    lead_time_days      INTEGER,
    min_order_qty       INTEGER,
    url                 TEXT,                    -- Direkt-Link zum Produkt
    content_hash        TEXT                     -- Change Detection
);

SELECT create_hypertable('price_observations', 'time',
    chunk_time_interval => INTERVAL '1 day');

-- Continuous Aggregate für tägliche Durchschnitte
CREATE MATERIALIZED VIEW price_daily
WITH (timescaledb.continuous) AS
SELECT
    time_bucket('1 day', time) AS bucket,
    transceiver_id,
    source_vendor_id,
    AVG(price) AS avg_price,
    MIN(price) AS min_price,
    MAX(price) AS max_price,
    last(stock_level, time) AS latest_stock,
    COUNT(*) AS observation_count
FROM price_observations
GROUP BY bucket, transceiver_id, source_vendor_id;

-- Retention Policy: Rohdaten 90 Tage, Aggregates 5 Jahre
SELECT add_retention_policy('price_observations', INTERVAL '90 days');

-- ============================================================
-- MARKET METRICS (Hype Cycle Input-Daten)
-- ============================================================
CREATE TABLE market_metrics (
    time                TIMESTAMPTZ NOT NULL,
    technology          TEXT NOT NULL,           -- "800G OSFP", "400G QSFP-DD", "CPO"
    metric_type         TEXT NOT NULL,           -- vendor_count | shipment_share | asp_decline_rate | media_hype_index | patent_filings
    value               NUMERIC NOT NULL,
    source              TEXT,                    -- "LightCounting", "Crehan Research", "Google Trends"
    notes               TEXT
);

SELECT create_hypertable('market_metrics', 'time',
    chunk_time_interval => INTERVAL '30 days');
```

### 3.3 Qdrant Vector Collections

```
Collection: product_embeddings
  - vector: 768 dim (nomic-embed-text)
  - payload: {product_id, vendor, form_factor, speed_gbps, category, fiber_type, reach_label}
  - Use: Freitext-Suche ("10km Transceiver für Cisco Nexus")

Collection: datasheet_chunks
  - vector: 768 dim
  - payload: {document_id, entity_type, entity_id, page, section, chunk_text_preview}
  - Use: "Was ist der Tx-Power Range des QSFP-DD 400G LR4?"

Collection: manual_chunks
  - vector: 768 dim
  - payload: {document_id, switch_vendor, switch_model, section, topic}
  - Use: "Wie konfiguriere ich DWDM auf Juniper MX?"

Collection: faq_embeddings
  - vector: 768 dim
  - payload: {kb_id, category, subcategory, question_preview, severity}
  - Use: "Transceiver zeigt niedrige Rx Power, was tun?"

Collection: news_embeddings
  - vector: 768 dim
  - payload: {article_id, source, published_at, category, event}
  - Use: "Was wurde auf der OFC 2026 über 1.6T vorgestellt?"
```

---

## 4. DATENQUELLEN & CRAWLER-STRATEGIE

### 4.1 Echtzeit-Preise & Stock (5-15 Min Intervalle)

| Quelle | Typ | Methode | Preise | Stock | Besonderheiten |
|--------|-----|---------|--------|-------|----------------|
| **FS.com** | Reseller | Web Scraping (Crawlee/Playwright) | Öffentlich | Öffentlich | Größter Wettbewerber, transparenteste Preise |
| **Optcore** | Reseller | Web Scraping | Öffentlich (ab $5.50) | Öffentlich | Sehr transparente Preisgestaltung |
| **QSFPTEK** | Reseller | Web Scraping | Öffentlich | Öffentlich | Chinesischer Reseller |
| **10Gtek** | Reseller/Mfr | Web Scraping | Öffentlich | Öffentlich | Eigene Fertigung in China |
| **Edgeium** | Reseller | Web Scraping (Optics Finder) | Öffentlich | Öffentlich | Optics Finder Tool durchsuchbar |
| **Hummingbird Networks** | Reseller | Web Scraping | Öffentlich | Öffentlich | US-Reseller |
| **EDGE Optical** | Reseller | Web Scraping | Öffentlich | Öffentlich | |
| **ProLabs** | Compatible | Web Scraping | Quote-based | Begrenzt | Legrand-Tochter |
| **Champion ONE** | Compatible | Web Scraping | Quote-based | Begrenzt | Legrand-Tochter |
| **Smartoptics** | Reseller | Web Scraping | Quote-based | Auf Anfrage | Fokus DWDM |
| **NADDOD** | Reseller | Web Scraping | Öffentlich | Öffentlich | Chinesischer Reseller |
| **Solid Optics** | Compatible | Web Scraping | Öffentlich | Begrenzt | |
| **AddOn Networks** | Compatible | Web Scraping | Öffentlich | Begrenzt | |
| **Worldwide Supply** | Refurbished | Web Scraping | Quote-based | Auf Anfrage | Refurbished OEM-Optics |
| **Nexar/Octopart API** | Aggregator | GraphQL API | Ja (317 Distributoren) | Ja | Einzige echte API, aber optische Module evtl. begrenzt |

### 4.2 OEM-Kompatibilitätstools (Wöchentlich)

| Quelle | URL / Tool | Methode |
|--------|-----------|---------|
| **Cisco TMG Matrix** | tmgmatrix.cisco.com | Web Scraping — durchsuchbar nach Device/Transceiver/Speed/Reach |
| **Juniper HCT** | apps.juniper.net/hct | Web Scraping — durchsuchbar nach Produkt/Kategorie |
| **Arista** | arista.com (PDF Guides) | PDF Download → Docling OCR |
| **HPE/Aruba** | support.hpe.com | Web Scraping — QuickSpecs Portal |
| **Dell** | dell.com/support | Web Scraping |
| **Nokia** | Behind Customer Portal | Begrenzt — öffentliche Specs scrapen |
| **Extreme Networks** | extremenetworks.com | Web Scraping |
| **Huawei** | support.huawei.com | Web Scraping — Compatibility Matrix |

### 4.3 Transceiver-Hersteller weltweit (Monatlich)

**Top-Tier (Revenue > $500M):**
| Hersteller | Land | Methode | Fokus |
|-----------|------|---------|-------|
| InnoLight | China | Website + Press Releases | #1 weltweit, $3.3B Revenue, 114% Wachstum |
| Coherent (II-VI/Finisar) | USA | Investor Relations + Website | Kohärente Optik, VCSEL |
| Lumentum | USA/Thailand | Investor Relations + Website | Laser, 3D-Sensing, AI DC |
| Eoptolink | China | Website | #3 weltweit, $1.2B, 175% Wachstum |
| Broadcom (ex-Avago) | USA | Website | Embedded Optics, ASIC |
| Cisco (Acacia) | USA | Website + TMG Matrix | Kohärente Optik nach Acacia-Übernahme |
| Zhongji Innolight | China | Website | Cloud-fokussiert |

**Mid-Tier ($50M - $500M):**
| Hersteller | Land | Methode |
|-----------|------|---------|
| Source Photonics | China | Website |
| Accelink | China | Website |
| HGGenuine | China | Website — einziger vertikal integrierter chinesischer Hersteller |
| Gigalight | China | Website |
| ATOP Technology | China/Malaysia | Website |
| Wolontek | China | Website |
| ETU-Link | China | Website |
| Skylane Optics | Belgien | Website |
| Smartoptics | Norwegen | Website |
| EFFECT Photonics | Niederlande | Website — Silicon Photonics |
| Sicoya/Marvell | Deutschland/USA | Website — Silicon Photonics |

**SE-Asien Fabriken (Vierteljährlich):**
| Land | Fabriken | Output |
|------|----------|--------|
| Thailand | Lumentum (6000+ MA), Fabrinet, InnoLight/Terahop, Eoptolink | >800k units/Monat |
| Vietnam | Coherent (Primary non-China Hub) | >400k units/Monat |
| Malaysia | Coherent (R&D), ATOP (Manufacturing) | >300k units/Monat |

### 4.4 News & Messen (Täglich)

| Quelle | Typ | Methode | Update |
|--------|-----|---------|--------|
| **Lightwave** | Trade Press | RSS + Scraping | Täglich |
| **Light Reading** | Trade Press | RSS + Scraping | Täglich |
| **Fibre Systems** | Trade Press | RSS + Scraping | Täglich |
| **Laser Focus World** | Trade Press | RSS + Scraping | Täglich |
| **optics.org** | Trade Press | RSS + Scraping | Täglich |
| **Data Center Dynamics** | Trade Press | RSS + Scraping | Täglich |
| **SDxCentral** | Trade Press | RSS + Scraping | Täglich |
| **OFC** | Leitmesse | Post-Event Scraping | Jährlich (März) |
| **ECOC** | Leitmesse | Post-Event Scraping | Jährlich (September) |
| **CIOE** | Leitmesse (China) | Post-Event Scraping | Jährlich (September) |
| **Photonics West** | Leitmesse | Post-Event Scraping | Jährlich (Januar) |
| **Google Trends** | Hype Tracking | API | Wöchentlich |

### 4.5 FAQ/Troubleshooting-Quellen (Wöchentlich)

| Quelle | URL | Content |
|--------|-----|---------|
| FS.com Knowledge Center | community.fs.com | Troubleshooting Guides, Best Practices |
| FS.com Transceiver Manual | resource.fs.com (PDF) | 1G/10G/25G/40G/100G Troubleshooting, DDM |
| FluxLight Blog | blog.fluxlight.com | Transceiver Troubleshooting |
| Cisco Support Forums | community.cisco.com | Transceiver-Probleme, Kompatibilität |
| Juniper Knowledge Base | kb.juniper.net | Transceiver Issues |
| Arista Docs | arista.com/docs | Optics Support |
| Wolontek Guides | wolontek.com | OTDR Testing, Power Meter Guides |
| Reddit r/networking | reddit.com/r/networking | Community-Wissen, Erfahrungsberichte |
| NetworkEngineering SE | networkengineering.stackexchange.com | Q&A |

### 4.6 Switch & Router Database — Alle Flexoptix-unterstützten Hersteller

**Gesamtabdeckung: 500+ Modelle von 30+ Herstellern in 5 Kategorien**

#### 4.6.1 Core Network OEMs (DataCenter, Campus, SP)

| Hersteller | Modelle | Serien | Kategorie |
|-----------|---------|--------|-----------|
| **Cisco Systems** | ~120 | Nexus 9000/3000, Catalyst 9000, NCS 5500, Cisco 8000, ASR, ISR | DC/Campus/SP |
| **Arista Networks** | ~40 | 7800R4, 7060X6/X5, 7050X4, 7280R3, 7020R, 750 | DC/Campus |
| **Juniper Networks** | ~60 | QFX5000, QFX10000, EX2000-9000, MX, PTX, ACX, SRX | DC/Campus/SP |
| **Nokia** | ~58 | SR Linux 7220/7250, 7750 SR, OmniSwitch 6000/9000, 7210 SAS | DC/SP |
| **Huawei** | ~46 | CloudEngine 16800-5800, S-Series, NetEngine 8000/5000 | DC/Campus/SP |
| **HPE / Aruba** | ~48 | CX 10000/9300/8400/6400/4100, FlexFabric, FlexNetwork | DC/Campus |
| **Dell** | ~38 | PowerSwitch S5200/Z-Series/S4100/N-Series/E-Series | DC/Campus |
| **Extreme Networks** | ~48 | X435-X870, SLX 9000, VDX, 5320-5720 | DC/Campus |
| **NVIDIA Networking** | ~10 | Spectrum-4 SN5600, Spectrum-3 SN4000, Spectrum SN2000 | DC |

#### 4.6.2 Whitebox ODM/OEM (Open Networking)

| Hersteller | Land | ASIC Fokus | SONiC | OCP |
|-----------|------|-----------|-------|-----|
| **Edgecore Networks** (Accton) | Taiwan | Broadcom TH/Trident | ✅ | ✅ Accepted |
| **Celestica** | Kanada | Broadcom TH/Jericho | ✅ | ✅ Accepted |
| **Delta Networks** | Taiwan | Broadcom TH/Trident | ✅ | ✅ |
| **Quanta Cloud Technology (QCT)** | Taiwan | Broadcom TH/Trident | ✅ | ✅ |
| **UfiSpace** | Taiwan | Broadcom/Jericho | ✅ | ✅ |
| **Inventec** | Taiwan | Broadcom TH/Trident | ✅ | ✅ |
| **Asterfusion** | China | **Marvell Teralynx** | ✅ | ❌ |
| **Netberg** | Taiwan | Broadcom TH | ✅ | ❌ |
| **Ragile Networks** | China | Broadcom | ✅ | ❌ |

#### 4.6.3 Security Vendors (NGFW/Firewalls mit SFP-Ports)

| Hersteller | Modelle | Relevante Serien |
|-----------|---------|-----------------|
| **Fortinet** | ~25 | FortiSwitch 100-3000, FortiGate 100F-4400F |
| **Palo Alto Networks** | ~10 | PA-3400, PA-5400, PA-7000 |
| **Check Point** | ~8 | Quantum 6000-28000 |

#### 4.6.4 Industrial Networking (mit SFP für Transceiver)

| Hersteller | Modelle | Relevante Serien |
|-----------|---------|-----------------|
| **Hirschmann / Belden** | ~15 | MACH4000, RSP, GREYHOUND, DRAGON |
| **Moxa** | ~20 | IKS-G6824, ICS-G7826, EDS-G4014, EDS-500E |
| **Siemens** | ~15 | SCALANCE XR500, XM400, XC200, XR300 |
| **Phoenix Contact** | ~8 | FL SWITCH 4800, FL SWITCH 7500 |
| **Westermo** | ~6 | Redfox, Lynx, Viper |

#### 4.6.5 Weitere Vendors (Campus/SMB/LB mit SFP)

| Hersteller | Modelle | Relevante Serien |
|-----------|---------|-----------------|
| **MikroTik** | ~15 | CRS305-CRS518, CCR2216 |
| **Ubiquiti** | ~8 | UniFi Pro Max, Enterprise, Aggregation |
| **Netgear** | ~10 | M4300, M4350, M4500 |
| **Allied Telesis** | ~12 | x950, x530, x530L |
| **F5 Networks** | ~6 | BIG-IP i5800-i15800 |
| **TP-Link** | ~5 | JetStream SX/SG |
| **Zyxel** | ~5 | XGS4600, XS3800 |

#### 4.6.6 Product Assets Pipeline (Bilder, Datasheets, Handbücher)

**Für jeden Switch/Router in der DB werden automatisch gesammelt:**

| Asset-Typ | Format | Speicher | Zweck |
|-----------|--------|----------|-------|
| **Produktbild** | PNG/JPG | `assets/images/switches/{vendor}/` | UI/Dashboard, MCP-Antworten |
| **Datasheet PDF** | PDF | `assets/datasheets/switches/{vendor}/` | Docling-Indexierung, Specs |
| **Handbuch/Config Guide** | PDF/HTML | `assets/manuals/switches/{vendor}/` | Knowledge Base, FAQ |
| **Quick Start Guide** | PDF | `assets/manuals/switches/{vendor}/` | Installations-Referenz |
| **CLI Reference** | PDF/HTML | `assets/manuals/switches/{vendor}/` | Konfigurations-Hilfe |
| **Release Notes** | PDF/HTML | — (nur Link) | Change Tracking |
| **EoL Notices** | HTML | — (nur Link) | Lifecycle Management |

**Scraper-Architektur für Assets:**

```
tsx src/index.ts --switch-assets              # Alle Vendor-Assets scrapen
tsx src/index.ts --switch-assets --vendor=cisco   # Nur Cisco
```

**SQL: product_documents Tabelle (Migration 008)**
- Referenz auf `switch_id` oder `transceiver_id`
- `doc_type`: datasheet, manual, quick_start, cli_reference, release_notes, etc.
- `content_hash` für Deduplizierung
- `extracted_text` für Volltextsuche (via Docling)

**API-Endpunkte:**
- `GET /api/switches/:id` — enthält `image_url`, `datasheet_url`, `product_page_url`
- `GET /api/switches/:id/documents` — alle zugehörigen PDFs/Manuals
- `GET /api/health` — Statistiken inkl. Switches mit Bildern/Datasheets

**Vendor Documentation Portale (12 konfiguriert):**
Cisco, Arista, Juniper, Nokia, Fortinet, MikroTik, Hirschmann, HPE/Aruba, Dell, Extreme, Moxa, Siemens

**Open Networking OS Kompatibilitätsquellen:**

| Quelle | URL | Datenformat | Priorität |
|--------|-----|-------------|-----------|
| **SONiC HCL** (GitHub Wiki) | github.com/sonic-net/SONiC/wiki | Markdown-Tabelle | 🔴 HOCH — umfassendste HCL |
| **SONiC platform.json** | github.com/sonic-net/sonic-buildimage/device/ | JSON (Port-Mappings) | 🔴 HOCH — Transceiver-FF |
| **ONL Platforms** | github.com/opencomputeproject/ONL | Verzeichnisstruktur | 🟡 MITTEL |
| **Cumulus HCL** | nvidia.com/networking/hcl | HTML-Tabelle | 🟡 MITTEL |
| **DENT Supported** | dent.dev/supported-platforms | HTML-Liste | 🟢 NIEDRIG |
| **OCP Produkt-DB** | opencompute.org/products | HTML/JS | 🟡 MITTEL |

**Scraper-Architektur für Switches & Router:**

```
tsx src/index.ts --switches        # Seed Core OEMs (Cisco, Arista, Juniper, Nokia, etc.)
tsx src/index.ts --switches-ext    # Seed Extended (Fortinet, MikroTik, Industrial, LB, etc.)
tsx src/index.ts --whitebox        # Seed 40+ Whitebox-Modelle (9 ODM-Hersteller)
tsx src/index.ts --flexoptix-vendors  # Seed alle ~300 Flexoptix-unterstützten Vendors
tsx src/index.ts --sonic-hcl       # SONiC HCL aus GitHub Wiki + device/ JSON
tsx src/index.ts --edgecore        # Edgecore Produktkatalog (Crawlee/Cheerio)
tsx src/index.ts --ufispace        # UfiSpace Produktkatalog (Crawlee/Cheerio)
```

**Warum eine vollständige Switch-Datenbank für TIP entscheidend ist:**

1. **Transceiver-Kompatibilität**: Jeder Switch definiert über seine Port-Konfiguration, welche Transceiver kompatibel sind. Ein 32x400G QSFP-DD Switch = kompatibel mit allen QSFP-DD 400G Transceiver in der DB.
2. **Sales Use Case**: "Kunde hat Cisco Catalyst 9300, welche SFP+ Transceiver empfehlen wir?" → Direkte Abfrage über API.
3. **Marktabdeckung**: ~300 Flexoptix-unterstützte Vendors mit allen Switch/Router-Produktlinien = vollständige Marktübersicht.
4. **SONiC-Ökosystem**: SONiC ist der de-facto Standard für Whitebox-Switches. Die `platform.json` Files enthalten exakte Port-Mappings.
5. **Cross-Selling**: Industrial Switches (Hirschmann, Moxa, Siemens) nutzen spezielle SFP-Module → Nischenmarkt mit hohen Margen.
6. **Security Appliances**: FortiGate, Palo Alto PA-Serie, Check Point Quantum — alle nutzen SFP/QSFP Transceiver.

**Erweiterte switches-Tabelle (Migration 006):**
- `is_whitebox`, `is_ocp_accepted`, `ocp_status`
- `supported_nos[]` (SONiC, ONL, Cumulus, DENT, FBOSS)
- `cpu`, `cpu_cores`, `ram_gb`, `storage_gb` (Hardware-Details)
- `sonic_hwsku`, `onie_support`
- `transceiver_form_factors[]` (abgeleitete Suchfelder)
- `catalog_url`, `last_scraped`, `scrape_source`

### 4.7 Change Detection Strategie

```
Für JEDEN Scrape-Zyklus:
1. HTTP Request mit If-None-Match / If-Modified-Since Headers
2. Wenn 304 Not Modified → Skip (kein Bandwidth-Kosten)
3. Wenn 200 → Extrahiere Preis/Stock → SHA-256 Hash berechnen
4. Hash vergleichen mit gespeichertem Hash
5. Wenn Hash geändert → Write to TimescaleDB + Trigger Alert
6. Wenn Hash unverändert → Nur last_checked Timestamp updaten

Adaptive Scheduling:
- Produkte mit häufigen Änderungen → 5 Min Intervall
- Produkte stabil seit 7+ Tagen → 30 Min Intervall
- Produkte stabil seit 30+ Tagen → 2 Std Intervall
→ Reduziert DB-Writes um 80-90%
```

---

## 5. HYPE CYCLE ENGINE

### 5.1 Mathematisches Modell: Norton-Bass Multigenerational Diffusion

Das Norton-Bass Model (1987, Management Science) ist die quantitative Basis, weil es sukzessive Generationen (1G → 10G → 40G → 100G → 400G → 800G → 1.6T) nativ modelliert.

**Kern-Gleichung:**
```
S(t) = L / (1 + e^(-k(t - t0)))

Wobei:
- L = Marktpotenzial (Total Addressable Port Shipments)
- k = Wachstumsrate
- t0 = Inflection Point
- S(t) = Kumulative Adoption zum Zeitpunkt t
```

**Bass Diffusion Parameter:**
```
f(t) / [1 - F(t)] = p + q * F(t)

p = Innovationskoeffizient (~0.03 für Netzwerk-Hardware)
q = Imitationskoeffizient (~0.3-0.5)
m = Gesamtmarktpotenzial
```

### 5.2 Phase Classification Engine

**Composite Score Formel:**
```
Phase_Score = 0.30 × Normalize(PortShipment_share)
            + 0.20 × Normalize(ASP_decline_rate)
            + 0.15 × Normalize(Standards_maturity)
            + 0.15 × Normalize(InteropValidation_level)
            + 0.10 × Normalize(VendorCount_trajectory)
            + 0.10 × Normalize(MediaSentiment_score)
```

**Phase-Determination (Pseudocode):**
```typescript
function determinePhase(technology: string): HypeCyclePhase {
    const shipmentShare = getPortShipmentShare(technology);
    const aspDecline = getASPDeclineRate(technology);
    const vendorTrend = getVendorCountTrend(technology);
    const standardsStatus = getStandardsStatus(technology);
    const mediaHype = getMediaHypeIndex(technology);
    const interopLevel = getInteropLevel(technology);

    if (shipmentShare < 0.01 && standardsStatus === 'draft')
        return 'INNOVATION_TRIGGER';

    if (shipmentShare < 0.05 && mediaHype > 70 && vendorTrend === 'increasing')
        return 'PEAK_OF_INFLATED_EXPECTATIONS';

    if (aspDecline > 30 && vendorTrend === 'decreasing' && mediaHype < 40)
        return 'TROUGH_OF_DISILLUSIONMENT';

    if (shipmentShare >= 0.05 && shipmentShare <= 0.30
        && aspDecline >= 10 && aspDecline <= 25
        && vendorTrend === 'stable')
        return 'SLOPE_OF_ENLIGHTENMENT';

    if (shipmentShare > 0.30 && aspDecline < 10)
        return 'PLATEAU_OF_PRODUCTIVITY';

    return calculateNearestPhase(compositeScore);
}
```

### 5.3 Aktuelle Hype Cycle Positionen (März 2026)

| Technologie | Phase | Evidenz |
|---|---|---|
| 10G SFP+ | Plateau (Declining) | Commodity, sinkende Shipments, wird verdrängt |
| 40G QSFP+ | Late Plateau / Legacy | Kaum noch neue Deployments |
| 100G QSFP28 | Plateau of Productivity | >30% Marktanteil, Commodity-Preise |
| 400G QSFP-DD | Slope → Plateau Übergang | Breite Adoption, ~33% Revenue mit 800G |
| 800G OSFP/QSFP-DD800 | Peak → Slope Übergang | Explosives Wachstum (3x in Q2'25), AI-getrieben |
| 1.6T | Innovation Trigger | Standards in Entwicklung, erste OFC-Demos |
| CPO (Co-Packaged Optics) | Peak of Inflated Expectations | Viel Presse, wenige Deployments |
| LPO (Linear Pluggable Optics) | Slope of Enlightenment | Erste Produktions-Deployments 2025-26 |
| 400ZR Coherent | Plateau of Productivity | Erfolgreichste kohärente Technologie |
| 800ZR Coherent | Innovation Trigger → Peak | OIF IA veröffentlicht Okt 2024 |

---

## 6. MCP SERVER — TOOL DEFINITIONS

Der MCP Server macht die gesamte Plattform für LLMs (EO Global Pulse, FAQ Chat) zugänglich:

```typescript
// Tool Definitions für den MCP Server

tools: [
    {
        name: "search_transceivers",
        description: "Suche Transceiver nach Freitext, Specs oder Kompatibilität",
        parameters: {
            query: "string — Freitext ('10km für Cisco Nexus')",
            form_factor: "optional — SFP+, QSFP28, etc.",
            speed_gbps: "optional — 10, 100, 400, 800",
            reach_label: "optional — SR, LR, ER, ZR",
            fiber_type: "optional — SMF, MMF",
            wdm_type: "optional — CWDM, DWDM",
            vendor: "optional — Vendor-Filter",
            max_results: "optional — Default 10"
        }
    },
    {
        name: "check_compatibility",
        description: "Prüfe Kompatibilität: Switch + Transceiver",
        parameters: {
            switch_model: "string — z.B. 'Cisco Nexus 93180YC-FX3'",
            transceiver_query: "optional — Transceiver Part Number oder Beschreibung",
            speed_gbps: "optional",
            reach: "optional"
        }
    },
    {
        name: "get_pricing",
        description: "Aktuelle Preise + Verfügbarkeit über alle Quellen",
        parameters: {
            part_number: "string",
            vendor: "optional — nur bestimmten Vendor zeigen",
            include_history: "optional — Preis-History über Zeit"
        }
    },
    {
        name: "compare_prices",
        description: "Preisvergleich: Flexoptix vs. Wettbewerber",
        parameters: {
            transceiver_query: "string",
            competitors: "optional — Liste spezifischer Wettbewerber"
        }
    },
    {
        name: "get_hype_cycle",
        description: "Hype Cycle Status für Technologie/Produkt",
        parameters: {
            technology: "string — z.B. '800G OSFP', 'CPO', '400ZR'",
            include_forecast: "optional — Norton-Bass Prognose"
        }
    },
    {
        name: "search_knowledge_base",
        description: "Troubleshooting, FAQs, Best Practices durchsuchen",
        parameters: {
            query: "string — z.B. 'niedrige Rx Power bei QSFP28'",
            category: "optional — troubleshooting, faq, best_practice",
            severity: "optional — critical, high, medium, low"
        }
    },
    {
        name: "search_manuals",
        description: "Switch-Handbücher und Konfig-Anleitungen durchsuchen",
        parameters: {
            query: "string — z.B. 'DWDM Konfiguration Juniper MX'",
            vendor: "optional",
            doc_type: "optional — manual, config_guide, compatibility_list"
        }
    },
    {
        name: "get_templates",
        description: "FlexBox Coding Templates oder Switch-Konfig-Templates finden",
        parameters: {
            type: "flexbox_coding | switch_config",
            switch_vendor: "optional",
            transceiver_type: "optional",
            technology: "optional — CWDM, DWDM, SR, LR"
        }
    },
    {
        name: "suggest_alternatives",
        description: "Alternative Transceiver vorschlagen (ähnliche Specs, anderer Vendor/Preis)",
        parameters: {
            part_number: "string",
            optimize_for: "optional — price, availability, performance"
        }
    },
    {
        name: "get_competitor_stock",
        description: "Live-Lagerbestand eines Wettbewerbers",
        parameters: {
            competitor: "string — z.B. 'FS.com'",
            product_query: "optional — Filter",
            out_of_stock_only: "optional — nur fehlende Produkte (Sales-Chance!)"
        }
    },
    {
        name: "get_market_news",
        description: "Aktuelle News und Messe-Berichte",
        parameters: {
            query: "optional",
            event: "optional — OFC, ECOC, CIOE",
            days_back: "optional — Default 30"
        }
    },
    {
        name: "generate_blog_draft",
        description: "Blog-Entwurf aus Marktdaten generieren",
        parameters: {
            topic: "hype_cycle | price_trend | new_product | comparison | tutorial",
            technology: "optional — z.B. '800G'",
            target_audience: "sales | technical | customer | seo"
        }
    }
]
```

---

## 7. ANWENDUNGSFÄLLE

### 7.1 Sales Advisor (Freitext-Suche)

**User:** "Kunde hat Cisco Nexus 93180YC-FX3 und braucht einen Transceiver für 10km Singlemode"

**System:**
1. Vector-Suche in `product_embeddings` → Top-5 passende Transceiver
2. `compatibility` Check → Verifiziert für diesen Switch
3. `price_observations` → Aktueller Preis bei Flexoptix + Wettbewerber
4. `knowledge_base` → Bekannte Issues mit diesem Switch/Transceiver

**Antwort:** "Für den Nexus 93180YC-FX3 empfehle ich den 10G-SFP-LR (10km, SMF, LC). Verifiziert kompatibel. Unser Preis: 39 EUR. FS.com: $12.50. Hinweis: Firmware 10.2(3) oder höher erforderlich."

### 7.2 Hype Cycle Dashboard

- Interaktive Visualisierung aller Technologien auf der Gartner-Kurve
- Norton-Bass Prognose: Wann erreicht 800G den Plateau? → ~2029
- Klickbar: Details pro Technologie (Vendor Count, ASP Trend, Shipment Share)
- Export als Blog-Post oder Präsentation

### 7.3 Competitor Alert System

**Trigger:** FS.com Out-of-Stock bei 100G QSFP28 LR4
**Alert:** "FS.com hat 100G-QSFP28-LR4 nicht auf Lager (seit 2 Stunden). Lead Time: 14 Tage. → Sales-Chance: 47 Kunden haben dieses Produkt in den letzten 90 Tagen bei FS.com gekauft."

### 7.4 Blog-Generierung

**Input:** `generate_blog_draft(topic="hype_cycle", technology="800G")`

**System:**
1. Holt aktuelle Hype Cycle Daten aus `market_metrics`
2. Holt Preis-Trends aus `price_observations`
3. Holt News aus `news_articles`
4. Generiert Draft via Ollama qwen2.5:14b auf .213
5. Speichert in `blog_drafts` zur Review

### 7.5 Template Finder

**User:** "Welchen FlexBox Code brauche ich für einen CWDM 10G auf Juniper EX4300?"

**System:**
1. `templates` WHERE type='flexbox_coding' AND switch_vendor='Juniper' AND technology='CWDM'
2. `compatibility` Check → Verifiziert
3. `knowledge_base` → Best Practices für CWDM auf Juniper

---

## 8. IMPLEMENTIERUNGS-ROADMAP

### Phase 0: Foundation (Woche 1-2)
- [ ] PostgreSQL 17 + TimescaleDB auf Erik (.82) installieren
- [ ] Qdrant Docker Container auf Erik starten
- [ ] Schema deployen (alle Core Tables + Hypertables)
- [ ] Bestehende npm DB (159 Transceiver) als Seed-Daten importieren
- [ ] Basis-API (Node.js/Express/PM2) mit CRUD-Endpoints
- [ ] Cloudflare Tunnel einrichten (transceiver-db.context-x.org)

### Phase 1: Data Ingestion (Woche 3-5)
- [ ] Crawlee Scraper Framework auf Erik einrichten
- [ ] Erster Scraper: FS.com (Preise + Stock + Produkte)
- [ ] Scraper 2-5: Optcore, QSFPTEK, 10Gtek, Edgeium
- [ ] Cisco TMG Matrix Scraper
- [ ] Juniper HCT Scraper
- [ ] Change Detection mit Content Hashing
- [ ] pg-boss Job Scheduler konfigurieren
- [ ] Adaptive Scheduling implementieren

### Phase 2: Intelligence Layer (Woche 6-8)
- [ ] OCR Pipeline: Docling → Chunk → Embed → Qdrant
- [ ] Erste Transceiver-Datasheets verarbeiten (Top 50)
- [ ] Erste Switch-Handbücher verarbeiten (Cisco, Juniper, Arista)
- [ ] Vector Search Endpoints mit Payload Filtering
- [ ] Full-Text Search via PostgreSQL tsvector
- [ ] Knowledge Base: FAQ-Scraping starten (FS.com, Cisco, FluxLight)
- [ ] MCP Server (Basis-Tools)

### Phase 3: Hype Cycle Engine (Woche 9-10)
- [ ] Norton-Bass Model implementieren
- [ ] Historische Daten laden (Port Shipments, ASP, Vendor Count)
- [ ] Phase Classification Engine
- [ ] Media Sentiment Tracking (Google Trends + News)
- [ ] Hype Cycle Visualisierung
- [ ] Erste Prognosen generieren

### Phase 4: Scale Crawlers (Woche 11-14)
- [ ] Alle 60+ identifizierten Quellen anbinden
- [ ] Chinesische Hersteller-Websites (InnoLight, Eoptolink, HGGenuine...)
- [ ] SE-Asien Factory Monitoring
- [ ] News Aggregation (Lightwave, Light Reading, optics.org...)
- [ ] Messe-Coverage (OFC, ECOC Archive)
- [ ] Proxy-Rotation einrichten (Bright Data / Geonode)
- [ ] Alert System implementieren

### Phase 5: Customer-Facing (Woche 15-18)
- [ ] Cloudflare Workers API Gateway
- [ ] FAQ Chatbot (RAG über Knowledge Base)
- [ ] EO Global Pulse Integration
- [ ] Sales Advisor Tool
- [ ] Template Finder
- [ ] Price Comparison Dashboard
- [ ] Blog Draft Generator
- [ ] Multi-Tenant Access Control

### Phase 6: Domination (Woche 19+)
- [ ] Alle 400+ Switch-Hersteller (Flexoptix Vendor Page) als Daten
- [ ] Alle Datasheets aller Transceiver verarbeitet
- [ ] Alle Switch-Handbücher digitalisiert
- [ ] Vollständige Kompatibilitätsmatrix
- [ ] Automatische Blog-Veröffentlichung
- [ ] API für externe Partner
- [ ] Mobile App (EO Global Pulse)

---

## 9. KRITISCHE ERFOLGSFAKTOREN

### 9.1 Rechtliche Aspekte Scraping
- `robots.txt` immer respektieren
- Rate-Limiting: Max 1-2 Requests/Sekunde pro Domain
- Legitimer User-Agent
- Kein Scraping hinter Authentication (ohne Account)
- Aggressiv cachen — keine unveränderten Seiten erneut abfragen
- Offizielle APIs bevorzugen wo verfügbar (Nexar/Octopart, Mouser, DigiKey)

### 9.2 Datenqualität
- Jeder Datenpunkt braucht `source_url` und `last_verified`
- Automatische Anomalie-Detection bei Preissprüngen (>50% Änderung → Review)
- Community-Verifizierung für Kompatibilität
- Regelmäßige Stichproben durch Flexoptix-Team

### 9.3 Markt-Chance
**Es gibt KEINEN Octopart/FindChips-Äquivalent für optische Transceiver-Module.**
Kein Preisvergleichs-Aggregator. Keine öffentliche API die mehrere Optical-Transceiver-Vendor abdeckt.

**TIP könnte dieses Vakuum füllen.**

---

## 10. BESTEHENDE DATEN-INTEGRATION

Das aktuelle npm Package `transceiver-db` (159 Transceiver, 39 Standards, 16 Form Factors) wird als **Seed-Daten** importiert:

```typescript
// Migration: npm DB → PostgreSQL
import { getAllTransceivers, getAllStandards } from 'transceiver-db';

const transceivers = getAllTransceivers();
const standards = getAllStandards();

// Insert into PostgreSQL with vendor_id mapping
for (const t of transceivers) {
    await db.query(`
        INSERT INTO transceivers (part_number, standard, form_factor, speed_gbps, ...)
        VALUES ($1, $2, $3, $4, ...)
    `, [t.id, t.standard, t.formFactor, t.speedGbps, ...]);
}
```

Das npm Package bleibt als **Open-Source Lightweight-Version** auf GitHub bestehen.
TIP wird die **Enterprise Intelligence Layer** darüber.

---

## ZUSAMMENFASSUNG

| Dimension | Scope |
|-----------|-------|
| **Transceiver** | Alle Generationen (1G SFP → 1.6T), CWDM, DWDM, Coherent, AOC, DAC, Breakout |
| **Switches** | 400+ Hersteller, alle Serien, Specs, Lifecycle, ASIC Info |
| **Kompatibilität** | Switch ↔ Transceiver Matrix, verifiziert + Community |
| **Preise** | Echtzeit von 60+ Quellen weltweit |
| **Stock** | Live-Lagerbestände aller Wettbewerber |
| **Handbücher** | Auto-Crawl, OCR, MCP-durchsuchbar |
| **Datasheets** | Alle technischen Specs aller Transceiver |
| **FAQs** | Gescannt von allen Vendor-Portalen |
| **Templates** | FlexBox Coding + Switch-Konfiguration |
| **Hype Cycle** | Norton-Bass basiert, automatisch aktualisiert |
| **News** | OFC, ECOC, CIOE, Photonics West, Trade Press |
| **Fabriken** | Alle Fertigungsstätten weltweit |
| **Blog** | Auto-generiert aus Marktdaten |
| **Alerts** | Out-of-Stock, Preisänderungen, neue Produkte |

**Es gibt nichts Vergleichbares auf dem Markt. Das wird das Referenzwerk der Optical Networking Industrie.**
