Spaces:
Build error
Build error
Hetansh Waghela commited on
Commit ·
3ed7a65
1
Parent(s): a595195
tryna fix things
Browse files- backend/app/models.py +15 -15
backend/app/models.py
CHANGED
|
@@ -132,7 +132,7 @@ class Report(Base):
|
|
| 132 |
category = Column(String(50), nullable=True, index=True) # lab/dental/mri/xray/prescription/sleep
|
| 133 |
doc_type = Column(String(50), nullable=True, index=True) # blood_panel/lipid_panel/checkup/etc.
|
| 134 |
classification_confidence = Column(Float, nullable=True) # 0-1
|
| 135 |
-
classification_rules_matched = Column(JSONB, nullable=True) # List of rules that matched
|
| 136 |
|
| 137 |
# Extraction results
|
| 138 |
raw_text = Column(Text, nullable=True) # Full OCR text
|
|
@@ -341,7 +341,7 @@ class ProfileAnswer(Base):
|
|
| 341 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 342 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 343 |
question_id = Column(String(100), nullable=False, index=True)
|
| 344 |
-
answer_data = Column(JSONB, nullable=False) # { "value": any, "unit": str?, "unknown": bool, "skipped": bool }
|
| 345 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 346 |
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
|
| 347 |
|
|
@@ -475,7 +475,7 @@ class DerivedFeature(Base):
|
|
| 475 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 476 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 477 |
feature_name = Column(String(100), nullable=False, index=True)
|
| 478 |
-
feature_value = Column(JSONB, nullable=False)
|
| 479 |
computed_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 480 |
valid_until = Column(DateTime, nullable=True)
|
| 481 |
|
|
@@ -494,7 +494,7 @@ class ProfileRecommendation(Base):
|
|
| 494 |
title = Column(String(500), nullable=False)
|
| 495 |
description = Column(Text, nullable=True)
|
| 496 |
priority = Column(Integer, default=5) # 1-10, 1 being highest
|
| 497 |
-
evidence_jsonb = Column(JSONB, nullable=True)
|
| 498 |
is_active = Column(Boolean, default=True)
|
| 499 |
dismissed_at = Column(DateTime, nullable=True)
|
| 500 |
completed_at = Column(DateTime, nullable=True)
|
|
@@ -552,7 +552,7 @@ class DocumentOCR(Base):
|
|
| 552 |
document_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, unique=True, index=True)
|
| 553 |
|
| 554 |
ocr_text = Column(Text, nullable=True) # Full extracted text
|
| 555 |
-
ocr_json = Column(JSONB, nullable=True) # Page stats, confidence per page, method used
|
| 556 |
extraction_method = Column(String(20), nullable=True) # text/ocr/hybrid
|
| 557 |
total_chars = Column(Integer, nullable=True)
|
| 558 |
total_pages = Column(Integer, nullable=True)
|
|
@@ -594,8 +594,8 @@ class HealthIndexSnapshot(Base):
|
|
| 594 |
|
| 595 |
score = Column(Float, nullable=False) # 0-100
|
| 596 |
confidence = Column(Float, nullable=True) # 0-1
|
| 597 |
-
contributions = Column(JSONB, nullable=True) # Factor breakdown {"sleep": 0.25, "glucose": 0.18}
|
| 598 |
-
missing_inputs = Column(JSONB, nullable=True) # What data was missing ["hba1c", "ldl"]
|
| 599 |
|
| 600 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 601 |
|
|
@@ -615,7 +615,7 @@ class ReportAISummary(Base):
|
|
| 615 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 616 |
report_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 617 |
|
| 618 |
-
summary_json = Column(JSONB, nullable=False) # AI summary output
|
| 619 |
model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
|
| 620 |
source_hash = Column(String(64), nullable=False, index=True) # Hash of source text for cache invalidation
|
| 621 |
|
|
@@ -634,8 +634,8 @@ class ReportAIComparison(Base):
|
|
| 634 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 635 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 636 |
|
| 637 |
-
report_ids_json = Column(JSONB, nullable=False) # List of report IDs being compared
|
| 638 |
-
comparison_json = Column(JSONB, nullable=False) # AI comparison output
|
| 639 |
model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
|
| 640 |
source_hash = Column(String(64), nullable=False, index=True) # Hash of combined source texts
|
| 641 |
|
|
@@ -678,7 +678,7 @@ class UserSavedMedicine(Base):
|
|
| 678 |
strength = Column(String(100), nullable=False)
|
| 679 |
form = Column(String(100), nullable=False)
|
| 680 |
release_type = Column(String(50), nullable=True)
|
| 681 |
-
schedule_json = Column(JSONB, nullable=True)
|
| 682 |
notes = Column(Text, nullable=True)
|
| 683 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 684 |
|
|
@@ -692,8 +692,8 @@ class SubstituteQuery(Base):
|
|
| 692 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 693 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 694 |
query_raw = Column(Text, nullable=False)
|
| 695 |
-
normalized_json = Column(JSONB, nullable=True)
|
| 696 |
-
results_json = Column(JSONB, nullable=True)
|
| 697 |
results_count = Column(Integer, default=0)
|
| 698 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 699 |
|
|
@@ -774,7 +774,7 @@ class Reminder(Base):
|
|
| 774 |
|
| 775 |
# Schedule configuration
|
| 776 |
schedule_type = Column(String(30), nullable=False) # fixed_times|interval|cron
|
| 777 |
-
schedule_json = Column(JSONB, nullable=False)
|
| 778 |
# schedule_json examples:
|
| 779 |
# fixed_times: {"times": ["08:00", "14:00", "20:00"]}
|
| 780 |
# interval: {"interval_minutes": 120, "start_time": "08:00", "end_time": "22:00"}
|
|
@@ -819,7 +819,7 @@ class ReminderEvent(Base):
|
|
| 819 |
sent_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 820 |
status = Column(String(20), nullable=False) # sent|failed|mocked|skipped
|
| 821 |
provider = Column(String(30), nullable=False) # twilio|mock|in_app
|
| 822 |
-
provider_response = Column(JSONB, nullable=True)
|
| 823 |
|
| 824 |
# Message content (for audit)
|
| 825 |
message_sent = Column(Text, nullable=True)
|
|
|
|
| 132 |
category = Column(String(50), nullable=True, index=True) # lab/dental/mri/xray/prescription/sleep
|
| 133 |
doc_type = Column(String(50), nullable=True, index=True) # blood_panel/lipid_panel/checkup/etc.
|
| 134 |
classification_confidence = Column(Float, nullable=True) # 0-1
|
| 135 |
+
classification_rules_matched = Column(JSONB(), nullable=True) # List of rules that matched
|
| 136 |
|
| 137 |
# Extraction results
|
| 138 |
raw_text = Column(Text, nullable=True) # Full OCR text
|
|
|
|
| 341 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 342 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 343 |
question_id = Column(String(100), nullable=False, index=True)
|
| 344 |
+
answer_data = Column(JSONB(), nullable=False) # { "value": any, "unit": str?, "unknown": bool, "skipped": bool }
|
| 345 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 346 |
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
|
| 347 |
|
|
|
|
| 475 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 476 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 477 |
feature_name = Column(String(100), nullable=False, index=True)
|
| 478 |
+
feature_value = Column(JSONB(), nullable=False)
|
| 479 |
computed_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 480 |
valid_until = Column(DateTime, nullable=True)
|
| 481 |
|
|
|
|
| 494 |
title = Column(String(500), nullable=False)
|
| 495 |
description = Column(Text, nullable=True)
|
| 496 |
priority = Column(Integer, default=5) # 1-10, 1 being highest
|
| 497 |
+
evidence_jsonb = Column(JSONB(), nullable=True)
|
| 498 |
is_active = Column(Boolean, default=True)
|
| 499 |
dismissed_at = Column(DateTime, nullable=True)
|
| 500 |
completed_at = Column(DateTime, nullable=True)
|
|
|
|
| 552 |
document_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, unique=True, index=True)
|
| 553 |
|
| 554 |
ocr_text = Column(Text, nullable=True) # Full extracted text
|
| 555 |
+
ocr_json = Column(JSONB(), nullable=True) # Page stats, confidence per page, method used
|
| 556 |
extraction_method = Column(String(20), nullable=True) # text/ocr/hybrid
|
| 557 |
total_chars = Column(Integer, nullable=True)
|
| 558 |
total_pages = Column(Integer, nullable=True)
|
|
|
|
| 594 |
|
| 595 |
score = Column(Float, nullable=False) # 0-100
|
| 596 |
confidence = Column(Float, nullable=True) # 0-1
|
| 597 |
+
contributions = Column(JSONB(), nullable=True) # Factor breakdown {"sleep": 0.25, "glucose": 0.18}
|
| 598 |
+
missing_inputs = Column(JSONB(), nullable=True) # What data was missing ["hba1c", "ldl"]
|
| 599 |
|
| 600 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 601 |
|
|
|
|
| 615 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 616 |
report_id = Column(UUID(as_uuid=True), ForeignKey("reports.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 617 |
|
| 618 |
+
summary_json = Column(JSONB(), nullable=False) # AI summary output
|
| 619 |
model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
|
| 620 |
source_hash = Column(String(64), nullable=False, index=True) # Hash of source text for cache invalidation
|
| 621 |
|
|
|
|
| 634 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 635 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 636 |
|
| 637 |
+
report_ids_json = Column(JSONB(), nullable=False) # List of report IDs being compared
|
| 638 |
+
comparison_json = Column(JSONB(), nullable=False) # AI comparison output
|
| 639 |
model_name = Column(String(100), nullable=False) # e.g., "grok-beta"
|
| 640 |
source_hash = Column(String(64), nullable=False, index=True) # Hash of combined source texts
|
| 641 |
|
|
|
|
| 678 |
strength = Column(String(100), nullable=False)
|
| 679 |
form = Column(String(100), nullable=False)
|
| 680 |
release_type = Column(String(50), nullable=True)
|
| 681 |
+
schedule_json = Column(JSONB(), nullable=True)
|
| 682 |
notes = Column(Text, nullable=True)
|
| 683 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 684 |
|
|
|
|
| 692 |
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
| 693 |
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True)
|
| 694 |
query_raw = Column(Text, nullable=False)
|
| 695 |
+
normalized_json = Column(JSONB(), nullable=True)
|
| 696 |
+
results_json = Column(JSONB(), nullable=True)
|
| 697 |
results_count = Column(Integer, default=0)
|
| 698 |
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 699 |
|
|
|
|
| 774 |
|
| 775 |
# Schedule configuration
|
| 776 |
schedule_type = Column(String(30), nullable=False) # fixed_times|interval|cron
|
| 777 |
+
schedule_json = Column(JSONB(), nullable=False)
|
| 778 |
# schedule_json examples:
|
| 779 |
# fixed_times: {"times": ["08:00", "14:00", "20:00"]}
|
| 780 |
# interval: {"interval_minutes": 120, "start_time": "08:00", "end_time": "22:00"}
|
|
|
|
| 819 |
sent_at = Column(DateTime, default=datetime.utcnow, nullable=False)
|
| 820 |
status = Column(String(20), nullable=False) # sent|failed|mocked|skipped
|
| 821 |
provider = Column(String(30), nullable=False) # twilio|mock|in_app
|
| 822 |
+
provider_response = Column(JSONB(), nullable=True)
|
| 823 |
|
| 824 |
# Message content (for audit)
|
| 825 |
message_sent = Column(Text, nullable=True)
|