We worked on this during the offsite, but there are a couple of things that are still needed to productionize it:
1. move it to ee & release for all paid customers
2. product design: currently we just prepend the dashboardItem we came from, but dashboards can have layouts, which would get messed up if we did it this way. It would be great to be able to see where we came from (e.g. to know when the spike in the graph happened exactly that made me click on the dive link, but I don't know how to design it)
3. Code changes based on ^
4. Blog post (including a diving hedgehog @lottiecoxon) - I propose with the different user stories we used in our demo

cc @samwinslow @jamesefhawkins anything else I'm missing?

posthog/models/insight.py
import secrets
import string
from typing import Optional
from django.contrib.postgres.fields.array import ArrayField
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.utils import timezone
from django_deprecate_fields import deprecate_field
from posthog.models.dashboard import Dashboard
from posthog.models.filters.utils import get_filter
from posthog.utils import generate_cache_key
def generate_short_id():
    """Generate securely random 8 characters long alphanumeric ID."""
    return "".join(secrets.choice(string.ascii_letters + string.digits) for _ in range(8))
class Insight(models.Model):