This commit is contained in:
Flatlogic Bot 2026-03-22 22:07:35 +00:00
parent 00fab55ca3
commit 9a8ca32792
10 changed files with 79 additions and 8 deletions

View File

@ -0,0 +1,28 @@
# Generated by Django 5.2.7 on 2026-03-22 22:06
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Relationship',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('relationship_type', models.CharField(choices=[('OWNED_BY', 'Owned By'), ('ASSOCIATED_WITH', 'Associated With'), ('COMMUNICATED_WITH', 'Communicated With')], max_length=20)),
('weight', models.FloatField(default=1.0)),
('created_at', models.DateTimeField(auto_now_add=True)),
('source_entity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='outbound_relationships', to='core.entity')),
('target_entity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inbound_relationships', to='core.entity')),
],
options={
'unique_together': {('source_entity', 'target_entity', 'relationship_type')},
},
),
]

View File

@ -27,4 +27,22 @@ class Entity(models.Model):
unique_together = ('entity_type', 'value', 'source') unique_together = ('entity_type', 'value', 'source')
def __str__(self): def __str__(self):
return f"{self.entity_type}: {self.value}" return f"{self.entity_type}: {self.value}"
class Relationship(models.Model):
RELATIONSHIP_TYPES = (
('OWNED_BY', 'Owned By'),
('ASSOCIATED_WITH', 'Associated With'),
('COMMUNICATED_WITH', 'Communicated With'),
)
source_entity = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name='outbound_relationships')
target_entity = models.ForeignKey(Entity, on_delete=models.CASCADE, related_name='inbound_relationships')
relationship_type = models.CharField(max_length=20, choices=RELATIONSHIP_TYPES)
weight = models.FloatField(default=1.0)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('source_entity', 'target_entity', 'relationship_type')
def __str__(self):
return f"{self.source_entity} -[{self.relationship_type}]-> {self.target_entity}"

Binary file not shown.

Binary file not shown.

View File

@ -1,7 +1,11 @@
from django.urls import path from django.urls import path
from .views import home from .views import home, ingest_data, resolve_entities
app_name = 'core'
urlpatterns = [ urlpatterns = [
path("", home, name="home"), path("", home, name="home"),
] path("api/ingest/", ingest_data, name="ingest_data"),
path("api/resolve/", resolve_entities, name="resolve_entities"),
]

View File

@ -1,10 +1,13 @@
import os import json
import platform from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django import get_version as django_version from core.services.ingestion import IngestionService
from core.services.resolution import EntityResolutionService
from django.shortcuts import render from django.shortcuts import render
from django.utils import timezone from django.utils import timezone
import os
import platform
from django import get_version as django_version
def home(request): def home(request):
"""Render the landing screen with loader and environment details.""" """Render the landing screen with loader and environment details."""
@ -23,3 +26,21 @@ def home(request):
"project_image_url": os.getenv("PROJECT_IMAGE_URL", ""), "project_image_url": os.getenv("PROJECT_IMAGE_URL", ""),
} }
return render(request, "core/index.html", context) return render(request, "core/index.html", context)
@csrf_exempt
def ingest_data(request):
if request.method == 'POST':
data = json.loads(request.body)
# Using IngestionService as a placeholder for actual processing
result = IngestionService.ingest(data)
return JsonResponse({'status': 'success', 'data': result})
return JsonResponse({'error': 'Invalid request'}, status=400)
@csrf_exempt
def resolve_entities(request):
if request.method == 'POST':
data = json.loads(request.body)
# Using EntityResolutionService as a placeholder for actual processing
result = EntityResolutionService.resolve(data)
return JsonResponse({'status': 'success', 'result': result})
return JsonResponse({'error': 'Invalid request'}, status=400)