239 lines
14 KiB
Python
239 lines
14 KiB
Python
# Generated by Django 5.2.16 on 2026-08-15 13:50
|
|
|
|
import django.db.models.deletion
|
|
import uuid
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('graph', '0004_unique_champion_graph_version'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='CompanyMandate',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('objective', models.TextField()),
|
|
('constraints', models.JSONField(blank=True, default=dict)),
|
|
('optimization_targets', models.JSONField(blank=True, default=list)),
|
|
('max_validation_capital', models.DecimalField(decimal_places=2, default=50, max_digits=10)),
|
|
('target_net_new_cash', models.DecimalField(decimal_places=2, default=500, max_digits=10)),
|
|
('target_window_days', models.PositiveIntegerField(default=30)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CompanyProposal',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('title', models.CharField(max_length=255)),
|
|
('description', models.TextField()),
|
|
('problem', models.TextField()),
|
|
('target_customer', models.TextField()),
|
|
('proposed_solution', models.TextField()),
|
|
('business_model', models.TextField()),
|
|
('pricing_hypothesis', models.TextField()),
|
|
('acquisition_strategy', models.TextField()),
|
|
('validation_plan', models.TextField()),
|
|
('capital_requested', models.DecimalField(decimal_places=2, default=0, max_digits=10)),
|
|
('time_to_first_dollar_estimate', models.CharField(max_length=120)),
|
|
('expected_margin', models.CharField(max_length=120)),
|
|
('build_complexity', models.CharField(max_length=80)),
|
|
('market_evidence', models.JSONField(blank=True, default=list)),
|
|
('differentiation', models.TextField()),
|
|
('major_risks', models.JSONField(blank=True, default=list)),
|
|
('confidence', models.FloatField(default=0.0)),
|
|
('status', models.CharField(choices=[('DRAFT', 'Draft'), ('SUBMITTED', 'Submitted'), ('UNDER_DILIGENCE', 'Under Diligence'), ('REVISE', 'Revise'), ('FUNDED_RECOMMENDED', 'Funded Recommended'), ('WATCHLIST', 'Watchlist'), ('REJECTED', 'Rejected')], default='DRAFT', max_length=32)),
|
|
('pitch', models.JSONField(blank=True, default=dict)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('mandate', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='company_proposals', to='ventures.companymandate')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CompanyCapabilityRequirement',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('category', models.CharField(max_length=120)),
|
|
('status', models.CharField(choices=[('AVAILABLE', 'Available'), ('PARTIAL', 'Partial'), ('MISSING', 'Missing')], max_length=32)),
|
|
('rationale', models.TextField(blank=True)),
|
|
('priority', models.CharField(choices=[('BEFORE_VALIDATION', 'Before Validation'), ('BEFORE_FIRST_CUSTOMER', 'Before First Customer'), ('BEFORE_SCALING', 'Before Scaling')], default='BEFORE_SCALING', max_length=32)),
|
|
('evidence', models.JSONField(blank=True, default=dict)),
|
|
('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='capability_requirements', to='ventures.companyproposal')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CompanyBoardReview',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('observations', models.JSONField(blank=True, default=dict)),
|
|
('strengths', models.JSONField(blank=True, default=list)),
|
|
('weaknesses', models.JSONField(blank=True, default=list)),
|
|
('key_assumptions', models.JSONField(blank=True, default=list)),
|
|
('required_revisions', models.JSONField(blank=True, default=list)),
|
|
('recommendation', models.CharField(max_length=80)),
|
|
('revised_pitch', models.JSONField(blank=True, default=dict)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='board_reviews', to='ventures.companyproposal')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ICDiligence',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('status', models.CharField(default='INITIAL_PITCH', max_length=32)),
|
|
('rounds', models.JSONField(blank=True, default=list)),
|
|
('red_team_challenge', models.JSONField(blank=True, default=dict)),
|
|
('final_response', models.JSONField(blank=True, default=dict)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ic_diligence', to='ventures.companyproposal')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ICDecision',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('decision', models.CharField(choices=[('FUND_RECOMMENDED', 'Fund Recommended'), ('CONDITIONAL_FUND', 'Conditional Fund'), ('REVISE_AND_RESUBMIT', 'Revise And Resubmit'), ('WATCHLIST', 'Watchlist'), ('PIVOT', 'Pivot'), ('REJECT', 'Reject')], max_length=32)),
|
|
('component_scores', models.JSONField(blank=True, default=dict)),
|
|
('composite_score', models.FloatField(default=0.0)),
|
|
('probability_500_within_30_days', models.FloatField(default=0.0)),
|
|
('initial_tranche', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
|
|
('validation_condition', models.TextField(blank=True)),
|
|
('evidence_required', models.JSONField(blank=True, default=list)),
|
|
('recommended_allocation', models.JSONField(blank=True, default=dict)),
|
|
('kill_criteria', models.JSONField(blank=True, default=list)),
|
|
('next_decision_point', models.TextField(blank=True)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('diligence', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='decision', to='ventures.icdiligence')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ICQuestion',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('question', models.TextField()),
|
|
('category', models.CharField(max_length=80)),
|
|
('evidence_required', models.BooleanField(default=True)),
|
|
('round_name', models.CharField(default='Diligence Round 1', max_length=80)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('diligence', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='questions', to='ventures.icdiligence')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ICResponse',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('answer', models.TextField()),
|
|
('evidence', models.JSONField(blank=True, default=list)),
|
|
('uncertainty', models.TextField(blank=True)),
|
|
('pitch_changes', models.JSONField(blank=True, default=dict)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='responses', to='ventures.icquestion')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PortfolioCapabilityGap',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('available', models.JSONField(blank=True, default=list)),
|
|
('partial', models.JSONField(blank=True, default=list)),
|
|
('missing', models.JSONField(blank=True, default=list)),
|
|
('ranked_missing', models.JSONField(blank=True, default=list)),
|
|
('report', models.TextField(blank=True)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('proposal', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='capability_gap_reports', to='ventures.companyproposal')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='VentureArtifact',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('artifact_type', models.CharField(max_length=80)),
|
|
('name', models.CharField(max_length=255)),
|
|
('content', models.JSONField(blank=True, default=dict)),
|
|
('readable', models.TextField(blank=True)),
|
|
('generated_by', models.CharField(blank=True, max_length=120)),
|
|
('graph_run', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='venture_artifacts', to='graph.graphrun')),
|
|
('mandate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='artifacts', to='ventures.companymandate')),
|
|
('proposal', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='artifacts', to='ventures.companyproposal')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='VentureThesis',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('title', models.CharField(max_length=255)),
|
|
('thesis', models.TextField()),
|
|
('similarity_fingerprint', models.CharField(blank=True, max_length=128)),
|
|
('related_theses', models.JSONField(blank=True, default=list)),
|
|
('competitive_theses', models.JSONField(blank=True, default=list)),
|
|
('portfolio_visibility', models.JSONField(blank=True, default=dict)),
|
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
('mandate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='theses', to='ventures.companymandate')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='companyproposal',
|
|
name='thesis',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='company_proposals', to='ventures.venturethesis'),
|
|
),
|
|
]
|