Spaces:
Sleeping
Sleeping
Feed tables data into databse table
Browse files- Dockerfile +1 -0
- alembic/versions/273997959ba7_add_6_models_in_database.py +0 -32
- alembic/versions/5d05c77fab33_generate_6_tables.py +550 -0
- feed_data.py +161 -0
- poetry.lock +131 -2
- pyproject.toml +4 -1
- src/entities/__init__.py +6 -0
- src/entities/apparatus/_model.py +3 -2
- src/entities/auv_incidentapparatus/_model.py +19 -19
- src/entities/auv_incidentpersonnel/_model.py +4 -1
- src/entities/incident/_model.py +15 -14
- src/entities/personnel/_model.py +3 -3
Dockerfile
CHANGED
|
@@ -29,6 +29,7 @@ COPY --chown=user main.py /app/
|
|
| 29 |
COPY --chown=user src /app/src
|
| 30 |
COPY --chown=user alembic.ini /app/
|
| 31 |
COPY --chown=user seed_vector_data.py /app/
|
|
|
|
| 32 |
|
| 33 |
EXPOSE 7860
|
| 34 |
|
|
|
|
| 29 |
COPY --chown=user src /app/src
|
| 30 |
COPY --chown=user alembic.ini /app/
|
| 31 |
COPY --chown=user seed_vector_data.py /app/
|
| 32 |
+
COPY --chown=user feed_data.py /app/
|
| 33 |
|
| 34 |
EXPOSE 7860
|
| 35 |
|
alembic/versions/273997959ba7_add_6_models_in_database.py
DELETED
|
@@ -1,32 +0,0 @@
|
|
| 1 |
-
"""Add 6 models in database
|
| 2 |
-
|
| 3 |
-
Revision ID: 273997959ba7
|
| 4 |
-
Revises:
|
| 5 |
-
Create Date: 2026-03-13 11:51:55.126289
|
| 6 |
-
|
| 7 |
-
"""
|
| 8 |
-
from typing import Sequence, Union
|
| 9 |
-
|
| 10 |
-
from alembic import op
|
| 11 |
-
import sqlalchemy as sa
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
# revision identifiers, used by Alembic.
|
| 15 |
-
revision: str = '273997959ba7'
|
| 16 |
-
down_revision: Union[str, Sequence[str], None] = None
|
| 17 |
-
branch_labels: Union[str, Sequence[str], None] = None
|
| 18 |
-
depends_on: Union[str, Sequence[str], None] = None
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
def upgrade() -> None:
|
| 22 |
-
"""Upgrade schema."""
|
| 23 |
-
# ### commands auto generated by Alembic - please adjust! ###
|
| 24 |
-
pass
|
| 25 |
-
# ### end Alembic commands ###
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
def downgrade() -> None:
|
| 29 |
-
"""Downgrade schema."""
|
| 30 |
-
# ### commands auto generated by Alembic - please adjust! ###
|
| 31 |
-
pass
|
| 32 |
-
# ### end Alembic commands ###
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alembic/versions/5d05c77fab33_generate_6_tables.py
ADDED
|
@@ -0,0 +1,550 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""generate 6 tables
|
| 2 |
+
|
| 3 |
+
Revision ID: 5d05c77fab33
|
| 4 |
+
Revises:
|
| 5 |
+
Create Date: 2026-03-13 15:26:40.120103
|
| 6 |
+
|
| 7 |
+
"""
|
| 8 |
+
from typing import Sequence, Union
|
| 9 |
+
|
| 10 |
+
from alembic import op
|
| 11 |
+
import sqlalchemy as sa
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
# revision identifiers, used by Alembic.
|
| 15 |
+
revision: str = '5d05c77fab33'
|
| 16 |
+
down_revision: Union[str, Sequence[str], None] = None
|
| 17 |
+
branch_labels: Union[str, Sequence[str], None] = None
|
| 18 |
+
depends_on: Union[str, Sequence[str], None] = None
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def upgrade() -> None:
|
| 22 |
+
"""Upgrade schema."""
|
| 23 |
+
# ### commands auto generated by Alembic - please adjust! ###
|
| 24 |
+
op.create_table('auv_incidentbase',
|
| 25 |
+
sa.Column('incidentkey', sa.String(length=14), nullable=False),
|
| 26 |
+
sa.Column('IncidentNumber', sa.String(length=20), nullable=True),
|
| 27 |
+
sa.Column('IncidentExposureNumber', sa.String(length=5), nullable=True),
|
| 28 |
+
sa.Column('CompletedReportCode', sa.String(length=2), nullable=True),
|
| 29 |
+
sa.Column('CompletedReportDescrip', sa.String(length=50), nullable=True),
|
| 30 |
+
sa.Column('ReviewedReportCode', sa.String(length=2), nullable=True),
|
| 31 |
+
sa.Column('ReviewReportDescrip', sa.String(length=50), nullable=True),
|
| 32 |
+
sa.Column('PublicReleaseReportCode', sa.String(length=2), nullable=True),
|
| 33 |
+
sa.Column('PublicReleaseReportDescrip', sa.String(length=50), nullable=True),
|
| 34 |
+
sa.Column('DidNotArriveCode', sa.String(length=2), nullable=True),
|
| 35 |
+
sa.Column('DidNotArriveDescrip', sa.String(length=50), nullable=True),
|
| 36 |
+
sa.Column('AlarmDateTime', sa.DateTime(), nullable=True),
|
| 37 |
+
sa.Column('Alarmtime', sa.String(length=10), nullable=True),
|
| 38 |
+
sa.Column('Alarmdate', sa.String(length=10), nullable=True),
|
| 39 |
+
sa.Column('ArrivalDateTime', sa.DateTime(), nullable=True),
|
| 40 |
+
sa.Column('Arrivaltime', sa.String(length=10), nullable=True),
|
| 41 |
+
sa.Column('Arrivaldate', sa.String(length=10), nullable=True),
|
| 42 |
+
sa.Column('ControlledDateTime', sa.DateTime(), nullable=True),
|
| 43 |
+
sa.Column('Controlledtime', sa.String(length=10), nullable=True),
|
| 44 |
+
sa.Column('Controlleddate', sa.String(length=10), nullable=True),
|
| 45 |
+
sa.Column('ClearedDateTime', sa.DateTime(), nullable=True),
|
| 46 |
+
sa.Column('Clearedtime', sa.String(length=10), nullable=True),
|
| 47 |
+
sa.Column('Cleareddate', sa.String(length=10), nullable=True),
|
| 48 |
+
sa.Column('ResponseTime', sa.String(length=20), nullable=True),
|
| 49 |
+
sa.Column('ResponseTimediffseconds', sa.Integer(), nullable=True),
|
| 50 |
+
sa.Column('IncidentTotalTime1', sa.String(length=20), nullable=True),
|
| 51 |
+
sa.Column('IncidentTotalTimediffseconds', sa.Integer(), nullable=True),
|
| 52 |
+
sa.Column('District', sa.String(length=20), nullable=True),
|
| 53 |
+
sa.Column('Station', sa.String(length=20), nullable=True),
|
| 54 |
+
sa.Column('Shift', sa.String(length=10), nullable=True),
|
| 55 |
+
sa.Column('Alarms', sa.Integer(), nullable=True),
|
| 56 |
+
sa.Column('IncidentTypeCode', sa.String(length=10), nullable=True),
|
| 57 |
+
sa.Column('IncidentTypeDescrip', sa.String(length=255), nullable=True),
|
| 58 |
+
sa.Column('InitialDispatchCode', sa.String(length=10), nullable=True),
|
| 59 |
+
sa.Column('finaldispatchcode', sa.String(length=10), nullable=True),
|
| 60 |
+
sa.Column('MutualAidFlagCode', sa.String(length=2), nullable=True),
|
| 61 |
+
sa.Column('MutualAidTypeCode', sa.String(length=10), nullable=True),
|
| 62 |
+
sa.Column('MutualAidTypeDescrip', sa.String(length=255), nullable=True),
|
| 63 |
+
sa.Column('MutalAidIncidentNo', sa.String(length=50), nullable=True),
|
| 64 |
+
sa.Column('actiontaken1code', sa.String(length=10), nullable=True),
|
| 65 |
+
sa.Column('actiontaken1descip', sa.String(length=255), nullable=True),
|
| 66 |
+
sa.Column('actiontaken2code', sa.String(length=10), nullable=True),
|
| 67 |
+
sa.Column('actiontaken2descip', sa.String(length=255), nullable=True),
|
| 68 |
+
sa.Column('actiontaken3code', sa.String(length=10), nullable=True),
|
| 69 |
+
sa.Column('actiontaken3descip', sa.String(length=255), nullable=True),
|
| 70 |
+
sa.Column('ApparatusSuppressionCount', sa.Integer(), nullable=True),
|
| 71 |
+
sa.Column('ApparatusEMSCount', sa.Integer(), nullable=True),
|
| 72 |
+
sa.Column('ApparatusOtherCount', sa.Integer(), nullable=True),
|
| 73 |
+
sa.Column('ApparatusTotalCount', sa.Integer(), nullable=True),
|
| 74 |
+
sa.Column('PersonnelSuppressionCount', sa.Integer(), nullable=True),
|
| 75 |
+
sa.Column('PersonnelEMSCount', sa.Integer(), nullable=True),
|
| 76 |
+
sa.Column('PersonnelOtherCount', sa.Integer(), nullable=True),
|
| 77 |
+
sa.Column('PersonnelTotalCount', sa.Integer(), nullable=True),
|
| 78 |
+
sa.Column('MAidApparatusSuppressionCount', sa.Integer(), nullable=True),
|
| 79 |
+
sa.Column('MAidApparatusEMSCount', sa.Integer(), nullable=True),
|
| 80 |
+
sa.Column('MAidApparatusOtherCount', sa.Integer(), nullable=True),
|
| 81 |
+
sa.Column('MAidApparatusTotalCount', sa.Integer(), nullable=True),
|
| 82 |
+
sa.Column('MAidPersonnelSuppressionCount', sa.Integer(), nullable=True),
|
| 83 |
+
sa.Column('MaidPersonnelEMSCount', sa.Integer(), nullable=True),
|
| 84 |
+
sa.Column('MAidPersonnelOtherCount', sa.Integer(), nullable=True),
|
| 85 |
+
sa.Column('MaidPersonnelTotalCount', sa.Integer(), nullable=True),
|
| 86 |
+
sa.Column('LossProperty', sa.Float(), nullable=True),
|
| 87 |
+
sa.Column('LossContents', sa.Float(), nullable=True),
|
| 88 |
+
sa.Column('ValueProperty', sa.Float(), nullable=True),
|
| 89 |
+
sa.Column('ValueContents', sa.Float(), nullable=True),
|
| 90 |
+
sa.Column('LossTotal', sa.Float(), nullable=True),
|
| 91 |
+
sa.Column('ValueTotal', sa.Float(), nullable=True),
|
| 92 |
+
sa.Column('ValueSaved', sa.Float(), nullable=True),
|
| 93 |
+
sa.Column('DetectorAlertedCode', sa.String(length=10), nullable=True),
|
| 94 |
+
sa.Column('DetectorAlertedDescrip', sa.String(length=255), nullable=True),
|
| 95 |
+
sa.Column('HazardMaterialReleasedCode', sa.String(length=10), nullable=True),
|
| 96 |
+
sa.Column('HazardMaterialReleasedDescrip', sa.String(length=255), nullable=True),
|
| 97 |
+
sa.Column('PropertyUseCode', sa.String(length=10), nullable=True),
|
| 98 |
+
sa.Column('PropertyUseDescrip', sa.String(length=255), nullable=True),
|
| 99 |
+
sa.Column('MixedUseCode', sa.String(length=10), nullable=True),
|
| 100 |
+
sa.Column('MixedUseDescrip', sa.String(length=255), nullable=True),
|
| 101 |
+
sa.Column('StreetNumber', sa.String(length=50), nullable=True),
|
| 102 |
+
sa.Column('StreetPrefix', sa.String(length=20), nullable=True),
|
| 103 |
+
sa.Column('StreetName', sa.String(length=255), nullable=True),
|
| 104 |
+
sa.Column('StreetType', sa.String(length=20), nullable=True),
|
| 105 |
+
sa.Column('StreetSuffix', sa.String(length=20), nullable=True),
|
| 106 |
+
sa.Column('Apartment', sa.String(length=20), nullable=True),
|
| 107 |
+
sa.Column('City', sa.String(length=100), nullable=True),
|
| 108 |
+
sa.Column('State', sa.String(length=20), nullable=True),
|
| 109 |
+
sa.Column('ZipCode', sa.String(length=20), nullable=True),
|
| 110 |
+
sa.Column('AddressComposite', sa.Text(), nullable=True),
|
| 111 |
+
sa.Column('CityStateZipComposite', sa.Text(), nullable=True),
|
| 112 |
+
sa.Column('CensusTract', sa.String(length=20), nullable=True),
|
| 113 |
+
sa.Column('EmsProvidedCode', sa.String(length=2), nullable=True),
|
| 114 |
+
sa.Column('EMSProvidedDescrip', sa.String(length=50), nullable=True),
|
| 115 |
+
sa.Column('LocationTypeCode', sa.String(length=5), nullable=True),
|
| 116 |
+
sa.Column('LocationTypeDescrip', sa.String(length=100), nullable=True),
|
| 117 |
+
sa.Column('fatalfireservicecode', sa.String(length=2), nullable=True),
|
| 118 |
+
sa.Column('fatalfireservicedescrip', sa.String(length=100), nullable=True),
|
| 119 |
+
sa.Column('fatalciviliancode', sa.String(length=2), nullable=True),
|
| 120 |
+
sa.Column('fatalciviliandescrip', sa.String(length=100), nullable=True),
|
| 121 |
+
sa.Column('injuredfireservicecode', sa.String(length=2), nullable=True),
|
| 122 |
+
sa.Column('injuredfireservicedescrip', sa.String(length=100), nullable=True),
|
| 123 |
+
sa.Column('injuredciviliancode', sa.String(length=2), nullable=True),
|
| 124 |
+
sa.Column('injuredciviliandescrip', sa.String(length=100), nullable=True),
|
| 125 |
+
sa.Column('casualtiescode', sa.String(length=2), nullable=True),
|
| 126 |
+
sa.Column('casualtiesdescrip', sa.String(length=100), nullable=True),
|
| 127 |
+
sa.Column('priorityrespcode', sa.String(length=2), nullable=True),
|
| 128 |
+
sa.Column('priorityrespdescrip', sa.String(length=100), nullable=True),
|
| 129 |
+
sa.Column('crossstreetprefix', sa.String(length=20), nullable=True),
|
| 130 |
+
sa.Column('crossstreetname', sa.String(length=255), nullable=True),
|
| 131 |
+
sa.Column('crossstreettype', sa.String(length=20), nullable=True),
|
| 132 |
+
sa.Column('crossstreetsuffix', sa.String(length=20), nullable=True),
|
| 133 |
+
sa.Column('CrossStreetComposite', sa.Text(), nullable=True),
|
| 134 |
+
sa.Column('directions', sa.Text(), nullable=True),
|
| 135 |
+
sa.Column('county', sa.String(length=100), nullable=True),
|
| 136 |
+
sa.Column('mappage', sa.String(length=50), nullable=True),
|
| 137 |
+
sa.Column('hwycalloutrequestby', sa.String(length=50), nullable=True),
|
| 138 |
+
sa.Column('hwyinvestpolicecode', sa.String(length=10), nullable=True),
|
| 139 |
+
sa.Column('hwyinvetpolicedescrip', sa.String(length=255), nullable=True),
|
| 140 |
+
sa.Column('hwyofficer', sa.String(length=100), nullable=True),
|
| 141 |
+
sa.Column('hwybadgenumber', sa.String(length=20), nullable=True),
|
| 142 |
+
sa.Column('hwyreportnumber', sa.String(length=50), nullable=True),
|
| 143 |
+
sa.Column('hwycauseemergcode', sa.String(length=10), nullable=True),
|
| 144 |
+
sa.Column('hwycauseemergdescrip', sa.String(length=255), nullable=True),
|
| 145 |
+
sa.Column('hwycauseotherdescrip', sa.Text(), nullable=True),
|
| 146 |
+
sa.Column('hwyloecode', sa.String(length=10), nullable=True),
|
| 147 |
+
sa.Column('hwyloedescrip', sa.String(length=255), nullable=True),
|
| 148 |
+
sa.Column('hwyloeotherdescrip', sa.Text(), nullable=True),
|
| 149 |
+
sa.Column('hwyobstrcutioncode', sa.String(length=10), nullable=True),
|
| 150 |
+
sa.Column('hwyobstructiondescrip', sa.String(length=255), nullable=True),
|
| 151 |
+
sa.Column('hwyobstructionotherdescrip', sa.Text(), nullable=True),
|
| 152 |
+
sa.Column('hwynoservicecode', sa.String(length=2), nullable=True),
|
| 153 |
+
sa.Column('hwynoservicedescrip', sa.String(length=100), nullable=True),
|
| 154 |
+
sa.Column('hwyextinguishcode', sa.String(length=2), nullable=True),
|
| 155 |
+
sa.Column('hwyextinguishdescrip', sa.String(length=100), nullable=True),
|
| 156 |
+
sa.Column('hwycleanupcode', sa.String(length=2), nullable=True),
|
| 157 |
+
sa.Column('hwycleanupdescrip', sa.String(length=100), nullable=True),
|
| 158 |
+
sa.Column('hwyextractioncode', sa.String(length=2), nullable=True),
|
| 159 |
+
sa.Column('hwyextractiodescrip', sa.String(length=100), nullable=True),
|
| 160 |
+
sa.Column('hwyfirstaidcode', sa.String(length=2), nullable=True),
|
| 161 |
+
sa.Column('hwyfirstaidedescrip', sa.String(length=100), nullable=True),
|
| 162 |
+
sa.Column('hwydamagecode', sa.String(length=2), nullable=True),
|
| 163 |
+
sa.Column('hwydamagedescrip', sa.String(length=100), nullable=True),
|
| 164 |
+
sa.Column('hwyprivatedamcode', sa.String(length=2), nullable=True),
|
| 165 |
+
sa.Column('hwyprivatedescrip', sa.String(length=100), nullable=True),
|
| 166 |
+
sa.Column('hwycitycode', sa.String(length=2), nullable=True),
|
| 167 |
+
sa.Column('hwycitydescrip', sa.String(length=100), nullable=True),
|
| 168 |
+
sa.Column('hwyothercode', sa.String(length=2), nullable=True),
|
| 169 |
+
sa.Column('hwynotherdescrip', sa.String(length=100), nullable=True),
|
| 170 |
+
sa.Column('hwyothertext', sa.Text(), nullable=True),
|
| 171 |
+
sa.Column('water_used', sa.String(length=2), nullable=True),
|
| 172 |
+
sa.Column('water_used_quantity', sa.Float(), nullable=True),
|
| 173 |
+
sa.Column('foam_used', sa.String(length=2), nullable=True),
|
| 174 |
+
sa.Column('foam_used_quantity', sa.Float(), nullable=True),
|
| 175 |
+
sa.Column('oilzorb_used', sa.String(length=2), nullable=True),
|
| 176 |
+
sa.Column('oilzorb_used_quantity', sa.Float(), nullable=True),
|
| 177 |
+
sa.Column('other_used', sa.String(length=2), nullable=True),
|
| 178 |
+
sa.Column('other_used_quantity', sa.Float(), nullable=True),
|
| 179 |
+
sa.Column('codetectpresentcode', sa.String(length=2), nullable=True),
|
| 180 |
+
sa.Column('codetectpresentdescrip', sa.String(length=100), nullable=True),
|
| 181 |
+
sa.Column('cotypecode', sa.String(length=10), nullable=True),
|
| 182 |
+
sa.Column('cotypedescrip', sa.String(length=255), nullable=True),
|
| 183 |
+
sa.Column('copowersupplycode', sa.String(length=10), nullable=True),
|
| 184 |
+
sa.Column('copowersupplydescrip', sa.String(length=255), nullable=True),
|
| 185 |
+
sa.Column('cooperationcode', sa.String(length=10), nullable=True),
|
| 186 |
+
sa.Column('cooperationdescrip', sa.String(length=255), nullable=True),
|
| 187 |
+
sa.Column('coeffectivecode', sa.String(length=10), nullable=True),
|
| 188 |
+
sa.Column('coeffectivedescrip', sa.String(length=255), nullable=True),
|
| 189 |
+
sa.Column('cofailurecode', sa.String(length=10), nullable=True),
|
| 190 |
+
sa.Column('cofailuredescrip', sa.String(length=255), nullable=True),
|
| 191 |
+
sa.Column('codetectormfg', sa.String(length=100), nullable=True),
|
| 192 |
+
sa.Column('codetectormodel', sa.String(length=100), nullable=True),
|
| 193 |
+
sa.Column('cochildrencount', sa.Integer(), nullable=True),
|
| 194 |
+
sa.Column('coyouthscount', sa.Integer(), nullable=True),
|
| 195 |
+
sa.Column('coadultscount', sa.Integer(), nullable=True),
|
| 196 |
+
sa.Column('coseniorscount', sa.Integer(), nullable=True),
|
| 197 |
+
sa.Column('latitude', sa.Float(), nullable=True),
|
| 198 |
+
sa.Column('longitude', sa.Float(), nullable=True),
|
| 199 |
+
sa.Column('changedate', sa.DateTime(), nullable=True),
|
| 200 |
+
sa.Column('IncidentDateTime', sa.DateTime(), nullable=True),
|
| 201 |
+
sa.Column('Incidenttime', sa.String(length=10), nullable=True),
|
| 202 |
+
sa.Column('Incidentdate', sa.String(length=10), nullable=True),
|
| 203 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 204 |
+
sa.PrimaryKeyConstraint('incidentkey')
|
| 205 |
+
)
|
| 206 |
+
op.create_index(op.f('ix_auv_incidentbase_incidentkey'), 'auv_incidentbase', ['incidentkey'], unique=False)
|
| 207 |
+
op.create_table('auv_incidentpersonnel',
|
| 208 |
+
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
|
| 209 |
+
sa.Column('personnelkey', sa.String(length=14), nullable=True),
|
| 210 |
+
sa.Column('namefirst', sa.String(length=25), nullable=True),
|
| 211 |
+
sa.Column('namemi', sa.String(length=2), nullable=True),
|
| 212 |
+
sa.Column('namelast', sa.String(length=25), nullable=True),
|
| 213 |
+
sa.Column('namesuffix', sa.String(length=5), nullable=True),
|
| 214 |
+
sa.Column('rank', sa.String(length=10), nullable=True),
|
| 215 |
+
sa.Column('actiontaken1code', sa.String(length=10), nullable=True),
|
| 216 |
+
sa.Column('actiontaken1descip', sa.String(length=255), nullable=True),
|
| 217 |
+
sa.Column('actiontaken2code', sa.String(length=10), nullable=True),
|
| 218 |
+
sa.Column('actiontaken2descip', sa.String(length=255), nullable=True),
|
| 219 |
+
sa.Column('actiontaken3code', sa.String(length=10), nullable=True),
|
| 220 |
+
sa.Column('actiontaken3descip', sa.String(length=255), nullable=True),
|
| 221 |
+
sa.Column('actiontaken4code', sa.String(length=10), nullable=True),
|
| 222 |
+
sa.Column('actiontaken4descip', sa.String(length=255), nullable=True),
|
| 223 |
+
sa.Column('amount1', sa.Float(), nullable=True),
|
| 224 |
+
sa.Column('amount2', sa.Float(), nullable=True),
|
| 225 |
+
sa.Column('crole', sa.Integer(), nullable=True),
|
| 226 |
+
sa.Column('losapcreditcode', sa.Integer(), nullable=True),
|
| 227 |
+
sa.Column('losapcreditdescrip', sa.String(length=100), nullable=True),
|
| 228 |
+
sa.Column('apparatusid', sa.String(length=10), nullable=True),
|
| 229 |
+
sa.Column('numberofresponders', sa.Integer(), nullable=True),
|
| 230 |
+
sa.Column('responsetimeseconds', sa.Integer(), nullable=True),
|
| 231 |
+
sa.Column('dispatchcleardiffseconds', sa.Integer(), nullable=True),
|
| 232 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 233 |
+
sa.PrimaryKeyConstraint('id')
|
| 234 |
+
)
|
| 235 |
+
op.create_table('incident',
|
| 236 |
+
sa.Column('incidentkey', sa.String(length=14), nullable=False),
|
| 237 |
+
sa.Column('incidentdate', sa.DateTime(), nullable=True),
|
| 238 |
+
sa.Column('incidentnumber', sa.String(length=10), nullable=True),
|
| 239 |
+
sa.Column('exposure', sa.String(length=3), nullable=True),
|
| 240 |
+
sa.Column('incidentstatus', sa.String(length=20), nullable=True),
|
| 241 |
+
sa.Column('reviewstatusflag', sa.Boolean(), nullable=True),
|
| 242 |
+
sa.Column('publicreleaseflag', sa.Boolean(), nullable=True),
|
| 243 |
+
sa.Column('completed', sa.Boolean(), nullable=True),
|
| 244 |
+
sa.Column('transactiontype', sa.String(length=4), nullable=True),
|
| 245 |
+
sa.Column('district', sa.String(length=10), nullable=True),
|
| 246 |
+
sa.Column('station', sa.String(length=30), nullable=True),
|
| 247 |
+
sa.Column('shift', sa.String(length=2), nullable=True),
|
| 248 |
+
sa.Column('company', sa.String(length=64), nullable=True),
|
| 249 |
+
sa.Column('incidenttype', sa.String(length=4), nullable=True),
|
| 250 |
+
sa.Column('initialdispatchcode', sa.String(length=25), nullable=True),
|
| 251 |
+
sa.Column('mutualaidcode', sa.String(length=4), nullable=True),
|
| 252 |
+
sa.Column('alarmdate', sa.DateTime(), nullable=True),
|
| 253 |
+
sa.Column('arrivaldate', sa.DateTime(), nullable=True),
|
| 254 |
+
sa.Column('didnotarriveflag', sa.Boolean(), nullable=True),
|
| 255 |
+
sa.Column('controlleddate', sa.DateTime(), nullable=True),
|
| 256 |
+
sa.Column('lastunitcleareddate', sa.DateTime(), nullable=True),
|
| 257 |
+
sa.Column('includemutualaidflag', sa.Boolean(), nullable=True),
|
| 258 |
+
sa.Column('madepartment', sa.String(length=30), nullable=True),
|
| 259 |
+
sa.Column('madeptincidentno', sa.String(length=9), nullable=True),
|
| 260 |
+
sa.Column('alarms', sa.Integer(), nullable=True),
|
| 261 |
+
sa.Column('actiontaken1', sa.String(length=4), nullable=True),
|
| 262 |
+
sa.Column('actiontaken2', sa.String(length=4), nullable=True),
|
| 263 |
+
sa.Column('actiontaken3', sa.String(length=4), nullable=True),
|
| 264 |
+
sa.Column('resourceformusedflag', sa.Boolean(), nullable=True),
|
| 265 |
+
sa.Column('apparatussuppression', sa.Integer(), nullable=True),
|
| 266 |
+
sa.Column('apparatusems', sa.Integer(), nullable=True),
|
| 267 |
+
sa.Column('apparatusother', sa.Integer(), nullable=True),
|
| 268 |
+
sa.Column('personnelsuppression', sa.Integer(), nullable=True),
|
| 269 |
+
sa.Column('personnelems', sa.Integer(), nullable=True),
|
| 270 |
+
sa.Column('personnelother', sa.Integer(), nullable=True),
|
| 271 |
+
sa.Column('lossproperty', sa.Numeric(), nullable=True),
|
| 272 |
+
sa.Column('losscontents', sa.Numeric(), nullable=True),
|
| 273 |
+
sa.Column('valueproperty', sa.Numeric(), nullable=True),
|
| 274 |
+
sa.Column('valuecontents', sa.Numeric(), nullable=True),
|
| 275 |
+
sa.Column('fatalfireservice', sa.Integer(), nullable=True),
|
| 276 |
+
sa.Column('fatalother', sa.Integer(), nullable=True),
|
| 277 |
+
sa.Column('nonfatalfireservice', sa.Integer(), nullable=True),
|
| 278 |
+
sa.Column('nonfatalother', sa.Integer(), nullable=True),
|
| 279 |
+
sa.Column('detector', sa.String(length=4), nullable=True),
|
| 280 |
+
sa.Column('hazardmaterialreleased', sa.String(length=4), nullable=True),
|
| 281 |
+
sa.Column('mixeduse', sa.String(length=4), nullable=True),
|
| 282 |
+
sa.Column('propertyuse', sa.String(length=4), nullable=True),
|
| 283 |
+
sa.Column('emsprovidedflag', sa.Boolean(), nullable=True),
|
| 284 |
+
sa.Column('casualtiesflag', sa.Integer(), nullable=True),
|
| 285 |
+
sa.Column('priorityresponseflag', sa.Boolean(), nullable=True),
|
| 286 |
+
sa.Column('vendorid', sa.String(length=20), nullable=True),
|
| 287 |
+
sa.Column('locationtype', sa.Float(), nullable=True),
|
| 288 |
+
sa.Column('censustract', sa.String(length=7), nullable=True),
|
| 289 |
+
sa.Column('numberormile', sa.String(length=8), nullable=True),
|
| 290 |
+
sa.Column('streetprefix', sa.String(length=2), nullable=True),
|
| 291 |
+
sa.Column('streethighway', sa.String(length=30), nullable=True),
|
| 292 |
+
sa.Column('streettype', sa.String(length=4), nullable=True),
|
| 293 |
+
sa.Column('streetsuffix', sa.String(length=2), nullable=True),
|
| 294 |
+
sa.Column('apartment', sa.String(length=15), nullable=True),
|
| 295 |
+
sa.Column('city', sa.String(length=20), nullable=True),
|
| 296 |
+
sa.Column('state', sa.String(length=2), nullable=True),
|
| 297 |
+
sa.Column('postalcode', sa.String(length=20), nullable=True),
|
| 298 |
+
sa.Column('directions', sa.Text(), nullable=True),
|
| 299 |
+
sa.Column('latitude', sa.String(length=20), nullable=True),
|
| 300 |
+
sa.Column('longitude', sa.String(length=20), nullable=True),
|
| 301 |
+
sa.Column('compositeaddress', sa.String(length=50), nullable=True),
|
| 302 |
+
sa.Column('county', sa.String(length=20), nullable=True),
|
| 303 |
+
sa.Column('occupancykey', sa.String(length=14), nullable=True),
|
| 304 |
+
sa.Column('occupancynumber', sa.String(length=16), nullable=True),
|
| 305 |
+
sa.Column('occupancyname', sa.String(length=40), nullable=True),
|
| 306 |
+
sa.Column('runcard', sa.String(length=8), nullable=True),
|
| 307 |
+
sa.Column('mappage', sa.String(length=20), nullable=True),
|
| 308 |
+
sa.Column('descrip', sa.String(length=30), nullable=True),
|
| 309 |
+
sa.Column('addressvalidated', sa.Integer(), nullable=True),
|
| 310 |
+
sa.Column('CADCompleted', sa.Boolean(), nullable=True),
|
| 311 |
+
sa.Column('changedate', sa.DateTime(), nullable=True),
|
| 312 |
+
sa.Column('rowguid', sa.String(length=50), nullable=True),
|
| 313 |
+
sa.Column('LogComments', sa.Text(), nullable=True),
|
| 314 |
+
sa.Column('Incident_ID', sa.Integer(), nullable=True),
|
| 315 |
+
sa.Column('loss_not_known', sa.Boolean(), nullable=True),
|
| 316 |
+
sa.Column('collecteddate', sa.DateTime(), nullable=True),
|
| 317 |
+
sa.Column('DispatchIncType', sa.String(length=80), nullable=True),
|
| 318 |
+
sa.Column('nfscasualtycnt', sa.Integer(), nullable=True),
|
| 319 |
+
sa.Column('ncivcasualtycnt', sa.Integer(), nullable=True),
|
| 320 |
+
sa.Column('psaptime', sa.DateTime(), nullable=True),
|
| 321 |
+
sa.Column('ResponseType', sa.String(length=10), nullable=True),
|
| 322 |
+
sa.Column('CADText1', sa.String(length=50), nullable=True),
|
| 323 |
+
sa.Column('CADText2', sa.String(length=50), nullable=True),
|
| 324 |
+
sa.Column('CADText3', sa.String(length=50), nullable=True),
|
| 325 |
+
sa.Column('CADCombo1', sa.String(length=50), nullable=True),
|
| 326 |
+
sa.Column('CADCombo2', sa.String(length=50), nullable=True),
|
| 327 |
+
sa.Column('CADCombo3', sa.String(length=50), nullable=True),
|
| 328 |
+
sa.Column('GMTOffSet', sa.String(length=6), nullable=True),
|
| 329 |
+
sa.Column('CADDate1', sa.DateTime(), nullable=True),
|
| 330 |
+
sa.Column('CADDate2', sa.DateTime(), nullable=True),
|
| 331 |
+
sa.Column('CADDate3', sa.DateTime(), nullable=True),
|
| 332 |
+
sa.Column('responseTime', sa.String(length=20), nullable=True),
|
| 333 |
+
sa.Column('turnTime', sa.String(length=20), nullable=True),
|
| 334 |
+
sa.Column('Mapset', sa.String(length=6), nullable=True),
|
| 335 |
+
sa.Column('Easting', sa.String(length=5), nullable=True),
|
| 336 |
+
sa.Column('Northing', sa.String(length=5), nullable=True),
|
| 337 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 338 |
+
sa.PrimaryKeyConstraint('incidentkey')
|
| 339 |
+
)
|
| 340 |
+
op.create_index(op.f('ix_incident_incidentkey'), 'incident', ['incidentkey'], unique=False)
|
| 341 |
+
op.create_table('apparatus',
|
| 342 |
+
sa.Column('apparatuskey', sa.String(length=14), nullable=False),
|
| 343 |
+
sa.Column('incidentkey', sa.String(length=14), nullable=True),
|
| 344 |
+
sa.Column('apsid', sa.String(length=14), nullable=True),
|
| 345 |
+
sa.Column('apparatusid', sa.String(length=8), nullable=True),
|
| 346 |
+
sa.Column('priorityresponseflag', sa.Boolean(), nullable=True),
|
| 347 |
+
sa.Column('arrivaldate', sa.DateTime(), nullable=True),
|
| 348 |
+
sa.Column('scenedate', sa.DateTime(), nullable=True),
|
| 349 |
+
sa.Column('enroutedate', sa.DateTime(), nullable=True),
|
| 350 |
+
sa.Column('facilitydate', sa.DateTime(), nullable=True),
|
| 351 |
+
sa.Column('cleardate', sa.DateTime(), nullable=True),
|
| 352 |
+
sa.Column('dispatchdate', sa.DateTime(), nullable=True),
|
| 353 |
+
sa.Column('inservicedate', sa.DateTime(), nullable=True),
|
| 354 |
+
sa.Column('cancelledenrouteflag', sa.Boolean(), nullable=True),
|
| 355 |
+
sa.Column('numberpeople', sa.Integer(), nullable=True),
|
| 356 |
+
sa.Column('usecode', sa.String(length=4), nullable=True),
|
| 357 |
+
sa.Column('actiontaken1', sa.String(length=4), nullable=True),
|
| 358 |
+
sa.Column('actiontaken2', sa.String(length=4), nullable=True),
|
| 359 |
+
sa.Column('actiontaken3', sa.String(length=4), nullable=True),
|
| 360 |
+
sa.Column('actiontaken4', sa.String(length=4), nullable=True),
|
| 361 |
+
sa.Column('apparatustype', sa.String(length=4), nullable=True),
|
| 362 |
+
sa.Column('amount1', sa.Numeric(precision=10, scale=2), nullable=True),
|
| 363 |
+
sa.Column('amount2', sa.Numeric(precision=10, scale=2), nullable=True),
|
| 364 |
+
sa.Column('otherinfo', sa.String(length=20), nullable=True),
|
| 365 |
+
sa.Column('logcomments', sa.Text(), nullable=True),
|
| 366 |
+
sa.Column('fdid_no', sa.String(length=20), nullable=True),
|
| 367 |
+
sa.Column('paramedicdispatch', sa.String(length=6), nullable=True),
|
| 368 |
+
sa.Column('firstarrivingunit', sa.Boolean(), nullable=True),
|
| 369 |
+
sa.Column('inservicetime', sa.DateTime(), nullable=True),
|
| 370 |
+
sa.Column('respondfromquarters', sa.Boolean(), nullable=True),
|
| 371 |
+
sa.Column('changedate', sa.DateTime(), nullable=True),
|
| 372 |
+
sa.Column('rowguid', sa.String(length=36), nullable=True),
|
| 373 |
+
sa.Column('hydrant_idnumber', sa.String(length=20), nullable=True),
|
| 374 |
+
sa.Column('hydrant_location', sa.String(length=116), nullable=True),
|
| 375 |
+
sa.Column('alarms', sa.String(length=10), nullable=True),
|
| 376 |
+
sa.Column('llosap_credit', sa.Boolean(), nullable=True),
|
| 377 |
+
sa.Column('emsrun', sa.Boolean(), nullable=True),
|
| 378 |
+
sa.Column('emsrunnumber', sa.String(length=14), nullable=True),
|
| 379 |
+
sa.Column('lprocessepcr', sa.Boolean(), nullable=True),
|
| 380 |
+
sa.Column('nepcrrun', sa.Integer(), nullable=True),
|
| 381 |
+
sa.Column('stagingdate', sa.DateTime(), nullable=True),
|
| 382 |
+
sa.Column('isepcr', sa.Boolean(), nullable=True),
|
| 383 |
+
sa.Column('unit_exc', sa.String(length=10), nullable=True),
|
| 384 |
+
sa.Column('aedtype', sa.String(length=10), nullable=True),
|
| 385 |
+
sa.Column('odometeronscene', sa.Numeric(precision=12, scale=2), nullable=True),
|
| 386 |
+
sa.Column('odometerdestination', sa.Numeric(precision=12, scale=2), nullable=True),
|
| 387 |
+
sa.Column('mileagetransport', sa.Numeric(precision=12, scale=2), nullable=True),
|
| 388 |
+
sa.Column('atpatientsidetime', sa.DateTime(), nullable=True),
|
| 389 |
+
sa.Column('aerialdeviceused', sa.Integer(), nullable=True),
|
| 390 |
+
sa.Column('gmtoffset', sa.String(length=6), nullable=True),
|
| 391 |
+
sa.Column('firsteffectiveunit', sa.Integer(), nullable=True),
|
| 392 |
+
sa.Column('lnfirsexported', sa.Boolean(), nullable=True),
|
| 393 |
+
sa.Column('nfirsexporteddate', sa.DateTime(), nullable=True),
|
| 394 |
+
sa.Column('infirssequence', sa.Integer(), nullable=True),
|
| 395 |
+
sa.Column('nfirsttransactiontype', sa.String(length=1), nullable=True),
|
| 396 |
+
sa.Column('hydrant_used', sa.Integer(), nullable=True),
|
| 397 |
+
sa.Column('defaultdispatchcode', sa.String(length=25), nullable=True),
|
| 398 |
+
sa.Column('responsetime', sa.String(length=20), nullable=True),
|
| 399 |
+
sa.Column('turntime', sa.String(length=20), nullable=True),
|
| 400 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 401 |
+
sa.ForeignKeyConstraint(['incidentkey'], ['incident.incidentkey'], ),
|
| 402 |
+
sa.PrimaryKeyConstraint('apparatuskey')
|
| 403 |
+
)
|
| 404 |
+
op.create_index(op.f('ix_apparatus_apparatuskey'), 'apparatus', ['apparatuskey'], unique=False)
|
| 405 |
+
op.create_table('auv_incidentapparatus',
|
| 406 |
+
sa.Column('apparatuskey', sa.String(length=14), nullable=False),
|
| 407 |
+
sa.Column('incidentkey', sa.String(length=14), nullable=True),
|
| 408 |
+
sa.Column('apparatusid', sa.String(length=20), nullable=True),
|
| 409 |
+
sa.Column('deptunitornotcode', sa.Integer(), nullable=True),
|
| 410 |
+
sa.Column('deptunitornotdescrip', sa.String(length=50), nullable=True),
|
| 411 |
+
sa.Column('priorityresponsecode', sa.Integer(), nullable=True),
|
| 412 |
+
sa.Column('priorityresponsedescrip', sa.String(length=50), nullable=True),
|
| 413 |
+
sa.Column('cancelledenroutecode', sa.Integer(), nullable=True),
|
| 414 |
+
sa.Column('cancelledenroutedescrip', sa.String(length=50), nullable=True),
|
| 415 |
+
sa.Column('firstarrivingunitcode', sa.Integer(), nullable=True),
|
| 416 |
+
sa.Column('firstarrivingunitdescrip', sa.String(length=50), nullable=True),
|
| 417 |
+
sa.Column('dispatchtype', sa.Integer(), nullable=True),
|
| 418 |
+
sa.Column('dispatchtypedescrip', sa.String(length=100), nullable=True),
|
| 419 |
+
sa.Column('respondedfromquarterscode', sa.Integer(), nullable=True),
|
| 420 |
+
sa.Column('respondedfromquarterdescrip', sa.String(length=100), nullable=True),
|
| 421 |
+
sa.Column('mainapparatususecode', sa.Integer(), nullable=True),
|
| 422 |
+
sa.Column('mainapparatususedescrip', sa.String(length=100), nullable=True),
|
| 423 |
+
sa.Column('apparatustypecode', sa.Integer(), nullable=True),
|
| 424 |
+
sa.Column('apparatustypedescrip', sa.String(length=100), nullable=True),
|
| 425 |
+
sa.Column('actiontaken1code', sa.String(length=10), nullable=True),
|
| 426 |
+
sa.Column('actiontaken1descip', sa.String(length=255), nullable=True),
|
| 427 |
+
sa.Column('actiontaken2code', sa.String(length=10), nullable=True),
|
| 428 |
+
sa.Column('actiontaken2descip', sa.String(length=255), nullable=True),
|
| 429 |
+
sa.Column('actiontaken3code', sa.String(length=10), nullable=True),
|
| 430 |
+
sa.Column('actiontaken3descip', sa.String(length=255), nullable=True),
|
| 431 |
+
sa.Column('actiontaken4code', sa.String(length=10), nullable=True),
|
| 432 |
+
sa.Column('actiontaken4descip', sa.String(length=255), nullable=True),
|
| 433 |
+
sa.Column('numberofresponders', sa.Integer(), nullable=True),
|
| 434 |
+
sa.Column('dispatchdatetime', sa.DateTime(), nullable=True),
|
| 435 |
+
sa.Column('dispatchtime', sa.String(length=10), nullable=True),
|
| 436 |
+
sa.Column('dispatchdate', sa.Date(), nullable=True),
|
| 437 |
+
sa.Column('dispatchenroutetime', sa.String(length=10), nullable=True),
|
| 438 |
+
sa.Column('dispatchenroutediffseconds', sa.Integer(), nullable=True),
|
| 439 |
+
sa.Column('enroutetoscenedatetime', sa.DateTime(), nullable=True),
|
| 440 |
+
sa.Column('enroutetoscenetime', sa.String(length=10), nullable=True),
|
| 441 |
+
sa.Column('enroutetoscenedate', sa.Date(), nullable=True),
|
| 442 |
+
sa.Column('enroutearrivalscenetime', sa.String(length=10), nullable=True),
|
| 443 |
+
sa.Column('enroutearrivalscenediffseconds', sa.Integer(), nullable=True),
|
| 444 |
+
sa.Column('responsetime', sa.String(length=10), nullable=True),
|
| 445 |
+
sa.Column('responsetimeseconds', sa.Integer(), nullable=True),
|
| 446 |
+
sa.Column('arrivaldatetime', sa.DateTime(), nullable=True),
|
| 447 |
+
sa.Column('arrivaltime', sa.String(length=10), nullable=True),
|
| 448 |
+
sa.Column('arrivaldate', sa.Date(), nullable=True),
|
| 449 |
+
sa.Column('arrivaltoenroutehospdifftime', sa.String(length=10), nullable=True),
|
| 450 |
+
sa.Column('arrivaltoenroutehospdiffseconds', sa.Integer(), nullable=True),
|
| 451 |
+
sa.Column('enroutetohospitaldatetime', sa.DateTime(), nullable=True),
|
| 452 |
+
sa.Column('enroutetohospitaltime', sa.String(length=10), nullable=True),
|
| 453 |
+
sa.Column('enroutetohospitaldate', sa.Date(), nullable=True),
|
| 454 |
+
sa.Column('enroutetoarrivalhospdifftime', sa.String(length=10), nullable=True),
|
| 455 |
+
sa.Column('enroutetoarrivalhospdiffseconds', sa.Integer(), nullable=True),
|
| 456 |
+
sa.Column('arrivalscenetoarrivalhospdifftime', sa.String(length=10), nullable=True),
|
| 457 |
+
sa.Column('arrivalscenetoarrivalhospdiffseconds', sa.Integer(), nullable=True),
|
| 458 |
+
sa.Column('hospitalarrivaldatetime', sa.DateTime(), nullable=True),
|
| 459 |
+
sa.Column('hospitalarrivaltime', sa.String(length=10), nullable=True),
|
| 460 |
+
sa.Column('hospitalarrivaldate', sa.Date(), nullable=True),
|
| 461 |
+
sa.Column('arrivalclearhospdifftime', sa.String(length=10), nullable=True),
|
| 462 |
+
sa.Column('arrivalclearhospdiffseconds', sa.Integer(), nullable=True),
|
| 463 |
+
sa.Column('cleardatetime', sa.DateTime(), nullable=True),
|
| 464 |
+
sa.Column('cleartime', sa.String(length=10), nullable=True),
|
| 465 |
+
sa.Column('cleardate', sa.Date(), nullable=True),
|
| 466 |
+
sa.Column('dispatchcleardifftime', sa.String(length=10), nullable=True),
|
| 467 |
+
sa.Column('dispatchcleardiffseconds', sa.Integer(), nullable=True),
|
| 468 |
+
sa.Column('inservicedatetime', sa.DateTime(), nullable=True),
|
| 469 |
+
sa.Column('inservicetime', sa.String(length=10), nullable=True),
|
| 470 |
+
sa.Column('inservicedate', sa.Date(), nullable=True),
|
| 471 |
+
sa.Column('emsruncode', sa.String(length=10), nullable=True),
|
| 472 |
+
sa.Column('emsrundescrip', sa.String(length=100), nullable=True),
|
| 473 |
+
sa.Column('emsrunnumber', sa.Integer(), nullable=True),
|
| 474 |
+
sa.Column('losapcode', sa.Integer(), nullable=True),
|
| 475 |
+
sa.Column('losapdescrip', sa.String(length=100), nullable=True),
|
| 476 |
+
sa.Column('alarmscode', sa.Integer(), nullable=True),
|
| 477 |
+
sa.Column('alarmdescrip', sa.String(length=100), nullable=True),
|
| 478 |
+
sa.Column('amount1', sa.Integer(), nullable=True),
|
| 479 |
+
sa.Column('amount2', sa.Integer(), nullable=True),
|
| 480 |
+
sa.Column('fdid_no', sa.String(length=20), nullable=True),
|
| 481 |
+
sa.Column('stagingdatetime', sa.DateTime(), nullable=True),
|
| 482 |
+
sa.Column('stagingtime', sa.String(length=10), nullable=True),
|
| 483 |
+
sa.Column('stagingdate', sa.Date(), nullable=True),
|
| 484 |
+
sa.Column('AtPatientSideDateTime', sa.DateTime(), nullable=True),
|
| 485 |
+
sa.Column('AtPatientSideTime', sa.String(length=10), nullable=True),
|
| 486 |
+
sa.Column('AtPatientSideDate', sa.Date(), nullable=True),
|
| 487 |
+
sa.Column('FacilityDateTime', sa.DateTime(), nullable=True),
|
| 488 |
+
sa.Column('FacilityTime', sa.String(length=10), nullable=True),
|
| 489 |
+
sa.Column('FacilityDate', sa.Date(), nullable=True),
|
| 490 |
+
sa.Column('changedate', sa.DateTime(), nullable=True),
|
| 491 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 492 |
+
sa.ForeignKeyConstraint(['incidentkey'], ['incident.incidentkey'], ),
|
| 493 |
+
sa.PrimaryKeyConstraint('apparatuskey')
|
| 494 |
+
)
|
| 495 |
+
op.create_index(op.f('ix_auv_incidentapparatus_apparatuskey'), 'auv_incidentapparatus', ['apparatuskey'], unique=False)
|
| 496 |
+
op.create_table('personnel',
|
| 497 |
+
sa.Column('personnelkey', sa.String(length=14), nullable=False),
|
| 498 |
+
sa.Column('incidentkey', sa.String(length=14), nullable=True),
|
| 499 |
+
sa.Column('apparatuskey', sa.String(length=14), nullable=True),
|
| 500 |
+
sa.Column('pslid', sa.String(length=14), nullable=True),
|
| 501 |
+
sa.Column('rosid', sa.String(length=14), nullable=True),
|
| 502 |
+
sa.Column('personnelid', sa.String(length=9), nullable=True),
|
| 503 |
+
sa.Column('lastname', sa.String(length=25), nullable=True),
|
| 504 |
+
sa.Column('firstname', sa.String(length=25), nullable=True),
|
| 505 |
+
sa.Column('middleinitial', sa.String(length=1), nullable=True),
|
| 506 |
+
sa.Column('namesuffix', sa.String(length=4), nullable=True),
|
| 507 |
+
sa.Column('rank', sa.String(length=10), nullable=True),
|
| 508 |
+
sa.Column('actiontaken1', sa.String(length=4), nullable=True),
|
| 509 |
+
sa.Column('actiontaken2', sa.String(length=4), nullable=True),
|
| 510 |
+
sa.Column('actiontaken3', sa.String(length=4), nullable=True),
|
| 511 |
+
sa.Column('actiontaken4', sa.String(length=4), nullable=True),
|
| 512 |
+
sa.Column('amount1', sa.Float(), nullable=True),
|
| 513 |
+
sa.Column('amount2', sa.Float(), nullable=True),
|
| 514 |
+
sa.Column('changedate', sa.DateTime(), nullable=True),
|
| 515 |
+
sa.Column('rowguid', sa.String(), nullable=True),
|
| 516 |
+
sa.Column('crole', sa.String(length=4), nullable=True),
|
| 517 |
+
sa.Column('lLosap_credit', sa.Boolean(), nullable=True),
|
| 518 |
+
sa.Column('MedCert', sa.String(length=4), nullable=True),
|
| 519 |
+
sa.Column('cAdditionalRole', sa.String(length=8), nullable=True),
|
| 520 |
+
sa.Column('AgencyID', sa.String(length=14), nullable=True),
|
| 521 |
+
sa.Column('AgencyDesc', sa.String(length=40), nullable=True),
|
| 522 |
+
sa.Column('AgencyCode', sa.String(length=8), nullable=True),
|
| 523 |
+
sa.Column('lNFIRSExported', sa.Boolean(), nullable=True),
|
| 524 |
+
sa.Column('NFIRSExportedDate', sa.DateTime(), nullable=True),
|
| 525 |
+
sa.Column('iNFIRSSequence', sa.Integer(), nullable=True),
|
| 526 |
+
sa.Column('NFIRSTransactiontype', sa.String(length=1), nullable=True),
|
| 527 |
+
sa.Column('created', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=False),
|
| 528 |
+
sa.ForeignKeyConstraint(['apparatuskey'], ['apparatus.incidentkey'], ),
|
| 529 |
+
sa.ForeignKeyConstraint(['incidentkey'], ['incident.incidentkey'], ),
|
| 530 |
+
sa.PrimaryKeyConstraint('personnelkey')
|
| 531 |
+
)
|
| 532 |
+
op.create_index(op.f('ix_personnel_personnelkey'), 'personnel', ['personnelkey'], unique=False)
|
| 533 |
+
# ### end Alembic commands ###
|
| 534 |
+
|
| 535 |
+
|
| 536 |
+
def downgrade() -> None:
|
| 537 |
+
"""Downgrade schema."""
|
| 538 |
+
# ### commands auto generated by Alembic - please adjust! ###
|
| 539 |
+
op.drop_index(op.f('ix_personnel_personnelkey'), table_name='personnel')
|
| 540 |
+
op.drop_table('personnel')
|
| 541 |
+
op.drop_index(op.f('ix_auv_incidentapparatus_apparatuskey'), table_name='auv_incidentapparatus')
|
| 542 |
+
op.drop_table('auv_incidentapparatus')
|
| 543 |
+
op.drop_index(op.f('ix_apparatus_apparatuskey'), table_name='apparatus')
|
| 544 |
+
op.drop_table('apparatus')
|
| 545 |
+
op.drop_index(op.f('ix_incident_incidentkey'), table_name='incident')
|
| 546 |
+
op.drop_table('incident')
|
| 547 |
+
op.drop_table('auv_incidentpersonnel')
|
| 548 |
+
op.drop_index(op.f('ix_auv_incidentbase_incidentkey'), table_name='auv_incidentbase')
|
| 549 |
+
op.drop_table('auv_incidentbase')
|
| 550 |
+
# ### end Alembic commands ###
|
feed_data.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
+
from datetime import time, timedelta, datetime
|
| 3 |
+
import pandas as pd
|
| 4 |
+
import numpy as np
|
| 5 |
+
from sqlalchemy import select
|
| 6 |
+
from src.configs import DatabaseConfig
|
| 7 |
+
from src.entities.incident import IncidentModel
|
| 8 |
+
from src.entities.apparatus import ApparatusModel
|
| 9 |
+
from src.entities.personnel import PersonnelModel
|
| 10 |
+
from src.entities.auv_incidentbase import IncidentBaseModel
|
| 11 |
+
from src.entities.auv_incidentapparatus import IncidentApparatusModel
|
| 12 |
+
from src.entities.auv_incidentpersonnel import IncidentPersonnelModel
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
EXCEL_FILE = "ProjectTablesData.xlsx"
|
| 16 |
+
|
| 17 |
+
EXCEL_SHEET_MODEL_MAP = {
|
| 18 |
+
0: IncidentModel,
|
| 19 |
+
1: ApparatusModel,
|
| 20 |
+
2: PersonnelModel,
|
| 21 |
+
3: IncidentBaseModel,
|
| 22 |
+
4: IncidentApparatusModel,
|
| 23 |
+
5: IncidentPersonnelModel
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def clean_value(value):
|
| 28 |
+
|
| 29 |
+
# Handle NaN
|
| 30 |
+
try:
|
| 31 |
+
if pd.isna(value):
|
| 32 |
+
return None
|
| 33 |
+
except (TypeError, ValueError):
|
| 34 |
+
pass
|
| 35 |
+
|
| 36 |
+
# Handle pandas Timestamp → return datetime object (NOT string)
|
| 37 |
+
if isinstance(value, pd.Timestamp):
|
| 38 |
+
if value == pd.Timestamp("1900-01-01"): # Excel empty date default
|
| 39 |
+
return None
|
| 40 |
+
return value.to_pydatetime() # ✅ Return actual datetime, not string
|
| 41 |
+
|
| 42 |
+
# Convert Python time -> string
|
| 43 |
+
if isinstance(value, time):
|
| 44 |
+
return value.strftime("%H:%M:%S")
|
| 45 |
+
|
| 46 |
+
# Convert timedelta -> string
|
| 47 |
+
if isinstance(value, timedelta):
|
| 48 |
+
total_seconds = int(value.total_seconds())
|
| 49 |
+
h = total_seconds // 3600
|
| 50 |
+
m = (total_seconds % 3600) // 60
|
| 51 |
+
s = total_seconds % 60
|
| 52 |
+
return f"{h:02}:{m:02}:{s:02}"
|
| 53 |
+
|
| 54 |
+
# Convert numpy types
|
| 55 |
+
if isinstance(value, np.generic):
|
| 56 |
+
return value.item()
|
| 57 |
+
|
| 58 |
+
# Strip strings
|
| 59 |
+
if isinstance(value, str):
|
| 60 |
+
value = value.strip()
|
| 61 |
+
return value if value else None
|
| 62 |
+
|
| 63 |
+
return value
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
def get_model_columns(model):
|
| 67 |
+
"""Extract SQLAlchemy column names"""
|
| 68 |
+
return {column.name for column in model.__table__.columns}
|
| 69 |
+
|
| 70 |
+
|
| 71 |
+
def get_primary_keys(model):
|
| 72 |
+
"""Get primary key column names"""
|
| 73 |
+
return [column.name for column in model.__table__.primary_key.columns]
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
def row_to_model(model, row):
|
| 77 |
+
"""Convert pandas row → SQLAlchemy model"""
|
| 78 |
+
model_columns = get_model_columns(model)
|
| 79 |
+
|
| 80 |
+
data = {}
|
| 81 |
+
|
| 82 |
+
for column in model_columns:
|
| 83 |
+
if column in row:
|
| 84 |
+
data[column] = clean_value(row[column])
|
| 85 |
+
|
| 86 |
+
return model(**data)
|
| 87 |
+
|
| 88 |
+
|
| 89 |
+
async def get_existing_primary_keys(session, model, pk_column):
|
| 90 |
+
"""
|
| 91 |
+
Fetch existing primary keys from DB
|
| 92 |
+
"""
|
| 93 |
+
result = await session.execute(
|
| 94 |
+
select(getattr(model, pk_column))
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
+
return {row[0] for row in result.fetchall()}
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
async def ingest_excel():
|
| 101 |
+
|
| 102 |
+
print("Loading Excel file...")
|
| 103 |
+
|
| 104 |
+
excel_data = pd.read_excel(EXCEL_FILE, sheet_name=None)
|
| 105 |
+
|
| 106 |
+
async with DatabaseConfig.async_session() as session:
|
| 107 |
+
|
| 108 |
+
total_inserted = 0
|
| 109 |
+
|
| 110 |
+
for sheet_index, model in EXCEL_SHEET_MODEL_MAP.items():
|
| 111 |
+
|
| 112 |
+
sheet_name = list(excel_data.keys())[sheet_index]
|
| 113 |
+
|
| 114 |
+
print(f"\nProcessing Sheet: {sheet_name}")
|
| 115 |
+
print(f"Mapped Model: {model.__name__}")
|
| 116 |
+
|
| 117 |
+
df = excel_data[sheet_name]
|
| 118 |
+
|
| 119 |
+
pk_columns = get_primary_keys(model)
|
| 120 |
+
|
| 121 |
+
existing_keys = set()
|
| 122 |
+
seen_keys = set()
|
| 123 |
+
|
| 124 |
+
if pk_columns:
|
| 125 |
+
pk_column = pk_columns[0]
|
| 126 |
+
existing_keys = await get_existing_primary_keys(session, model, pk_column)
|
| 127 |
+
|
| 128 |
+
objects = []
|
| 129 |
+
skipped = 0
|
| 130 |
+
|
| 131 |
+
for _, row in df.iterrows():
|
| 132 |
+
|
| 133 |
+
obj = row_to_model(model, row)
|
| 134 |
+
|
| 135 |
+
if pk_columns:
|
| 136 |
+
pk_value = getattr(obj, pk_columns[0], None)
|
| 137 |
+
|
| 138 |
+
if pk_value in existing_keys or pk_value in seen_keys:
|
| 139 |
+
skipped += 1
|
| 140 |
+
continue
|
| 141 |
+
|
| 142 |
+
seen_keys.add(pk_value)
|
| 143 |
+
|
| 144 |
+
objects.append(obj)
|
| 145 |
+
|
| 146 |
+
session.add_all(objects)
|
| 147 |
+
|
| 148 |
+
inserted = len(objects)
|
| 149 |
+
|
| 150 |
+
print(f"Inserted: {inserted}")
|
| 151 |
+
print(f"Skipped duplicates: {skipped}")
|
| 152 |
+
|
| 153 |
+
total_inserted += inserted
|
| 154 |
+
|
| 155 |
+
await session.commit()
|
| 156 |
+
|
| 157 |
+
print("\nTotal rows inserted:", total_inserted)
|
| 158 |
+
|
| 159 |
+
|
| 160 |
+
if __name__ == "__main__":
|
| 161 |
+
asyncio.run(ingest_excel())
|
poetry.lock
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
# This file is automatically @generated by Poetry 2.3.
|
| 2 |
|
| 3 |
[[package]]
|
| 4 |
name = "aiofiles"
|
|
@@ -506,6 +506,18 @@ files = [
|
|
| 506 |
{file = "durationpy-0.10.tar.gz", hash = "sha256:1fa6893409a6e739c9c72334fc65cca1f355dbdd93405d30f726deb5bde42fba"},
|
| 507 |
]
|
| 508 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 509 |
[[package]]
|
| 510 |
name = "fastapi"
|
| 511 |
version = "0.135.1"
|
|
@@ -1704,6 +1716,21 @@ datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
|
|
| 1704 |
realtime = ["websockets (>=13,<16)"]
|
| 1705 |
voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"]
|
| 1706 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1707 |
[[package]]
|
| 1708 |
name = "opentelemetry-api"
|
| 1709 |
version = "1.40.0"
|
|
@@ -1915,6 +1942,95 @@ files = [
|
|
| 1915 |
{file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"},
|
| 1916 |
]
|
| 1917 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1918 |
[[package]]
|
| 1919 |
name = "protobuf"
|
| 1920 |
version = "6.33.5"
|
|
@@ -3069,6 +3185,19 @@ files = [
|
|
| 3069 |
[package.dependencies]
|
| 3070 |
typing-extensions = ">=4.12.0"
|
| 3071 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3072 |
[[package]]
|
| 3073 |
name = "urllib3"
|
| 3074 |
version = "2.6.3"
|
|
@@ -3427,4 +3556,4 @@ type = ["pytest-mypy"]
|
|
| 3427 |
[metadata]
|
| 3428 |
lock-version = "2.1"
|
| 3429 |
python-versions = "3.12.*"
|
| 3430 |
-
content-hash = "
|
|
|
|
| 1 |
+
# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
|
| 2 |
|
| 3 |
[[package]]
|
| 4 |
name = "aiofiles"
|
|
|
|
| 506 |
{file = "durationpy-0.10.tar.gz", hash = "sha256:1fa6893409a6e739c9c72334fc65cca1f355dbdd93405d30f726deb5bde42fba"},
|
| 507 |
]
|
| 508 |
|
| 509 |
+
[[package]]
|
| 510 |
+
name = "et-xmlfile"
|
| 511 |
+
version = "2.0.0"
|
| 512 |
+
description = "An implementation of lxml.xmlfile for the standard library"
|
| 513 |
+
optional = false
|
| 514 |
+
python-versions = ">=3.8"
|
| 515 |
+
groups = ["main"]
|
| 516 |
+
files = [
|
| 517 |
+
{file = "et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa"},
|
| 518 |
+
{file = "et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54"},
|
| 519 |
+
]
|
| 520 |
+
|
| 521 |
[[package]]
|
| 522 |
name = "fastapi"
|
| 523 |
version = "0.135.1"
|
|
|
|
| 1716 |
realtime = ["websockets (>=13,<16)"]
|
| 1717 |
voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"]
|
| 1718 |
|
| 1719 |
+
[[package]]
|
| 1720 |
+
name = "openpyxl"
|
| 1721 |
+
version = "3.1.5"
|
| 1722 |
+
description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
|
| 1723 |
+
optional = false
|
| 1724 |
+
python-versions = ">=3.8"
|
| 1725 |
+
groups = ["main"]
|
| 1726 |
+
files = [
|
| 1727 |
+
{file = "openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2"},
|
| 1728 |
+
{file = "openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050"},
|
| 1729 |
+
]
|
| 1730 |
+
|
| 1731 |
+
[package.dependencies]
|
| 1732 |
+
et-xmlfile = "*"
|
| 1733 |
+
|
| 1734 |
[[package]]
|
| 1735 |
name = "opentelemetry-api"
|
| 1736 |
version = "1.40.0"
|
|
|
|
| 1942 |
{file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"},
|
| 1943 |
]
|
| 1944 |
|
| 1945 |
+
[[package]]
|
| 1946 |
+
name = "pandas"
|
| 1947 |
+
version = "3.0.1"
|
| 1948 |
+
description = "Powerful data structures for data analysis, time series, and statistics"
|
| 1949 |
+
optional = false
|
| 1950 |
+
python-versions = ">=3.11"
|
| 1951 |
+
groups = ["main"]
|
| 1952 |
+
files = [
|
| 1953 |
+
{file = "pandas-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:de09668c1bf3b925c07e5762291602f0d789eca1b3a781f99c1c78f6cac0e7ea"},
|
| 1954 |
+
{file = "pandas-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:24ba315ba3d6e5806063ac6eb717504e499ce30bd8c236d8693a5fd3f084c796"},
|
| 1955 |
+
{file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:406ce835c55bac912f2a0dcfaf27c06d73c6b04a5dde45f1fd3169ce31337389"},
|
| 1956 |
+
{file = "pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:830994d7e1f31dd7e790045235605ab61cff6c94defc774547e8b7fdfbff3dc7"},
|
| 1957 |
+
{file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a64ce8b0f2de1d2efd2ae40b0abe7f8ae6b29fbfb3812098ed5a6f8e235ad9bf"},
|
| 1958 |
+
{file = "pandas-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9832c2c69da24b602c32e0c7b1b508a03949c18ba08d4d9f1c1033426685b447"},
|
| 1959 |
+
{file = "pandas-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:84f0904a69e7365f79a0c77d3cdfccbfb05bf87847e3a51a41e1426b0edb9c79"},
|
| 1960 |
+
{file = "pandas-3.0.1-cp311-cp311-win_arm64.whl", hash = "sha256:4a68773d5a778afb31d12e34f7dd4612ab90de8c6fb1d8ffe5d4a03b955082a1"},
|
| 1961 |
+
{file = "pandas-3.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:476f84f8c20c9f5bc47252b66b4bb25e1a9fc2fa98cead96744d8116cb85771d"},
|
| 1962 |
+
{file = "pandas-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0ab749dfba921edf641d4036c4c21c0b3ea70fea478165cb98a998fb2a261955"},
|
| 1963 |
+
{file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8e36891080b87823aff3640c78649b91b8ff6eea3c0d70aeabd72ea43ab069b"},
|
| 1964 |
+
{file = "pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4"},
|
| 1965 |
+
{file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:356e5c055ed9b0da1580d465657bc7d00635af4fd47f30afb23025352ba764d1"},
|
| 1966 |
+
{file = "pandas-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9d810036895f9ad6345b8f2a338dd6998a74e8483847403582cab67745bff821"},
|
| 1967 |
+
{file = "pandas-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43"},
|
| 1968 |
+
{file = "pandas-3.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:0f463ebfd8de7f326d38037c7363c6dacb857c5881ab8961fb387804d6daf2f7"},
|
| 1969 |
+
{file = "pandas-3.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5272627187b5d9c20e55d27caf5f2cd23e286aba25cadf73c8590e432e2b7262"},
|
| 1970 |
+
{file = "pandas-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:661e0f665932af88c7877f31da0dc743fe9c8f2524bdffe23d24fdcb67ef9d56"},
|
| 1971 |
+
{file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:75e6e292ff898679e47a2199172593d9f6107fd2dd3617c22c2946e97d5df46e"},
|
| 1972 |
+
{file = "pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791"},
|
| 1973 |
+
{file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eca8b4510f6763f3d37359c2105df03a7a221a508f30e396a51d0713d462e68a"},
|
| 1974 |
+
{file = "pandas-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:06aff2ad6f0b94a17822cf8b83bbb563b090ed82ff4fe7712db2ce57cd50d9b8"},
|
| 1975 |
+
{file = "pandas-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25"},
|
| 1976 |
+
{file = "pandas-3.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a8d37a43c52917427e897cb2e429f67a449327394396a81034a4449b99afda59"},
|
| 1977 |
+
{file = "pandas-3.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d54855f04f8246ed7b6fc96b05d4871591143c46c0b6f4af874764ed0d2d6f06"},
|
| 1978 |
+
{file = "pandas-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e1b677accee34a09e0dc2ce5624e4a58a1870ffe56fc021e9caf7f23cd7668f"},
|
| 1979 |
+
{file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9cabbdcd03f1b6cd254d6dda8ae09b0252524be1592594c00b7895916cb1324"},
|
| 1980 |
+
{file = "pandas-3.0.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ae2ab1f166668b41e770650101e7090824fd34d17915dd9cd479f5c5e0065e9"},
|
| 1981 |
+
{file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6bf0603c2e30e2cafac32807b06435f28741135cb8697eae8b28c7d492fc7d76"},
|
| 1982 |
+
{file = "pandas-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c426422973973cae1f4a23e51d4ae85974f44871b24844e4f7de752dd877098"},
|
| 1983 |
+
{file = "pandas-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b03f91ae8c10a85c1613102c7bef5229b5379f343030a3ccefeca8a33414cf35"},
|
| 1984 |
+
{file = "pandas-3.0.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:99d0f92ed92d3083d140bf6b97774f9f13863924cf3f52a70711f4e7588f9d0a"},
|
| 1985 |
+
{file = "pandas-3.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3b66857e983208654294bb6477b8a63dee26b37bdd0eb34d010556e91261784f"},
|
| 1986 |
+
{file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56cf59638bf24dc9bdf2154c81e248b3289f9a09a6d04e63608c159022352749"},
|
| 1987 |
+
{file = "pandas-3.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1a9f55e0f46951874b863d1f3906dcb57df2d9be5c5847ba4dfb55b2c815249"},
|
| 1988 |
+
{file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1849f0bba9c8a2fb0f691d492b834cc8dadf617e29015c66e989448d58d011ee"},
|
| 1989 |
+
{file = "pandas-3.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3d288439e11b5325b02ae6e9cc83e6805a62c40c5a6220bea9beb899c073b1c"},
|
| 1990 |
+
{file = "pandas-3.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66"},
|
| 1991 |
+
{file = "pandas-3.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:97ca08674e3287c7148f4858b01136f8bdfe7202ad25ad04fec602dd1d29d132"},
|
| 1992 |
+
{file = "pandas-3.0.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:58eeb1b2e0fb322befcf2bbc9ba0af41e616abadb3d3414a6bc7167f6cbfce32"},
|
| 1993 |
+
{file = "pandas-3.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cd9af1276b5ca9e298bd79a26bda32fa9cc87ed095b2a9a60978d2ca058eaf87"},
|
| 1994 |
+
{file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f87a04984d6b63788327cd9f79dda62b7f9043909d2440ceccf709249ca988"},
|
| 1995 |
+
{file = "pandas-3.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85fe4c4df62e1e20f9db6ebfb88c844b092c22cd5324bdcf94bfa2fc1b391221"},
|
| 1996 |
+
{file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:331ca75a2f8672c365ae25c0b29e46f5ac0c6551fdace8eec4cd65e4fac271ff"},
|
| 1997 |
+
{file = "pandas-3.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15860b1fdb1973fffade772fdb931ccf9b2f400a3f5665aef94a00445d7d8dd5"},
|
| 1998 |
+
{file = "pandas-3.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:44f1364411d5670efa692b146c748f4ed013df91ee91e9bec5677fb1fd58b937"},
|
| 1999 |
+
{file = "pandas-3.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:108dd1790337a494aa80e38def654ca3f0968cf4f362c85f44c15e471667102d"},
|
| 2000 |
+
{file = "pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8"},
|
| 2001 |
+
]
|
| 2002 |
+
|
| 2003 |
+
[package.dependencies]
|
| 2004 |
+
numpy = {version = ">=1.26.0", markers = "python_version < \"3.14\""}
|
| 2005 |
+
python-dateutil = ">=2.8.2"
|
| 2006 |
+
tzdata = {version = "*", markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\""}
|
| 2007 |
+
|
| 2008 |
+
[package.extras]
|
| 2009 |
+
all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)", "beautifulsoup4 (>=4.12.3)", "bottleneck (>=1.4.2)", "fastparquet (>=2024.11.0)", "fsspec (>=2024.10.0)", "gcsfs (>=2024.10.0)", "html5lib (>=1.1)", "hypothesis (>=6.116.0)", "jinja2 (>=3.1.5)", "lxml (>=5.3.0)", "matplotlib (>=3.9.3)", "numba (>=0.60.0)", "numexpr (>=2.10.2)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "psycopg2 (>=2.9.10)", "pyarrow (>=13.0.0)", "pyiceberg (>=0.8.1)", "pymysql (>=1.1.1)", "pyreadstat (>=1.2.8)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)", "python-calamine (>=0.3.0)", "pytz (>=2024.2)", "pyxlsb (>=1.0.10)", "qtpy (>=2.4.2)", "s3fs (>=2024.10.0)", "scipy (>=1.14.1)", "tables (>=3.10.1)", "tabulate (>=0.9.0)", "xarray (>=2024.10.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)", "zstandard (>=0.23.0)"]
|
| 2010 |
+
aws = ["s3fs (>=2024.10.0)"]
|
| 2011 |
+
clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.4.2)"]
|
| 2012 |
+
compression = ["zstandard (>=0.23.0)"]
|
| 2013 |
+
computation = ["scipy (>=1.14.1)", "xarray (>=2024.10.0)"]
|
| 2014 |
+
excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.5)", "python-calamine (>=0.3.0)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.2.0)"]
|
| 2015 |
+
feather = ["pyarrow (>=13.0.0)"]
|
| 2016 |
+
fss = ["fsspec (>=2024.10.0)"]
|
| 2017 |
+
gcp = ["gcsfs (>=2024.10.0)"]
|
| 2018 |
+
hdf5 = ["tables (>=3.10.1)"]
|
| 2019 |
+
html = ["beautifulsoup4 (>=4.12.3)", "html5lib (>=1.1)", "lxml (>=5.3.0)"]
|
| 2020 |
+
iceberg = ["pyiceberg (>=0.8.1)"]
|
| 2021 |
+
mysql = ["SQLAlchemy (>=2.0.36)", "pymysql (>=1.1.1)"]
|
| 2022 |
+
output-formatting = ["jinja2 (>=3.1.5)", "tabulate (>=0.9.0)"]
|
| 2023 |
+
parquet = ["pyarrow (>=13.0.0)"]
|
| 2024 |
+
performance = ["bottleneck (>=1.4.2)", "numba (>=0.60.0)", "numexpr (>=2.10.2)"]
|
| 2025 |
+
plot = ["matplotlib (>=3.9.3)"]
|
| 2026 |
+
postgresql = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "psycopg2 (>=2.9.10)"]
|
| 2027 |
+
pyarrow = ["pyarrow (>=13.0.0)"]
|
| 2028 |
+
spss = ["pyreadstat (>=1.2.8)"]
|
| 2029 |
+
sql-other = ["SQLAlchemy (>=2.0.36)", "adbc-driver-postgresql (>=1.2.0)", "adbc-driver-sqlite (>=1.2.0)"]
|
| 2030 |
+
test = ["hypothesis (>=6.116.0)", "pytest (>=8.3.4)", "pytest-xdist (>=3.6.1)"]
|
| 2031 |
+
timezone = ["pytz (>=2024.2)"]
|
| 2032 |
+
xml = ["lxml (>=5.3.0)"]
|
| 2033 |
+
|
| 2034 |
[[package]]
|
| 2035 |
name = "protobuf"
|
| 2036 |
version = "6.33.5"
|
|
|
|
| 3185 |
[package.dependencies]
|
| 3186 |
typing-extensions = ">=4.12.0"
|
| 3187 |
|
| 3188 |
+
[[package]]
|
| 3189 |
+
name = "tzdata"
|
| 3190 |
+
version = "2025.3"
|
| 3191 |
+
description = "Provider of IANA time zone data"
|
| 3192 |
+
optional = false
|
| 3193 |
+
python-versions = ">=2"
|
| 3194 |
+
groups = ["main"]
|
| 3195 |
+
markers = "sys_platform == \"win32\" or sys_platform == \"emscripten\""
|
| 3196 |
+
files = [
|
| 3197 |
+
{file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"},
|
| 3198 |
+
{file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"},
|
| 3199 |
+
]
|
| 3200 |
+
|
| 3201 |
[[package]]
|
| 3202 |
name = "urllib3"
|
| 3203 |
version = "2.6.3"
|
|
|
|
| 3556 |
[metadata]
|
| 3557 |
lock-version = "2.1"
|
| 3558 |
python-versions = "3.12.*"
|
| 3559 |
+
content-hash = "21ee864f85b2d6dd24179501b87e6d32ceac766d4acc9ec5d77645d20cf8037f"
|
pyproject.toml
CHANGED
|
@@ -18,7 +18,10 @@ dependencies = [
|
|
| 18 |
"pydantic-ai-slim (>=1.67.0,<2.0.0)",
|
| 19 |
"openai (>=2.26.0,<3.0.0)",
|
| 20 |
"chromadb (>=1.5.5,<2.0.0)",
|
| 21 |
-
"aiofiles (>=25.1.0,<26.0.0)"
|
|
|
|
|
|
|
|
|
|
| 22 |
]
|
| 23 |
|
| 24 |
|
|
|
|
| 18 |
"pydantic-ai-slim (>=1.67.0,<2.0.0)",
|
| 19 |
"openai (>=2.26.0,<3.0.0)",
|
| 20 |
"chromadb (>=1.5.5,<2.0.0)",
|
| 21 |
+
"aiofiles (>=25.1.0,<26.0.0)",
|
| 22 |
+
"pandas (>=3.0.1,<4.0.0)",
|
| 23 |
+
"openpyxl (>=3.1.5,<4.0.0)",
|
| 24 |
+
"numpy (>=2.4.3,<3.0.0)"
|
| 25 |
]
|
| 26 |
|
| 27 |
|
src/entities/__init__.py
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
from fastapi import APIRouter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
from .apparatus import *
|
| 4 |
from .incident import *
|
|
|
|
| 1 |
from fastapi import APIRouter
|
| 2 |
+
from .incident import *
|
| 3 |
+
from .apparatus import *
|
| 4 |
+
from .personnel import *
|
| 5 |
+
from .auv_incidentbase import *
|
| 6 |
+
from .auv_incidentapparatus import *
|
| 7 |
+
from .auv_incidentpersonnel import *
|
| 8 |
|
| 9 |
from .apparatus import *
|
| 10 |
from .incident import *
|
src/entities/apparatus/_model.py
CHANGED
|
@@ -36,7 +36,7 @@ class ApparatusModel(BaseModel_):
|
|
| 36 |
inservicetime = Column(DateTime, nullable=True)
|
| 37 |
respondfromquarters = Column(Boolean, nullable=True)
|
| 38 |
changedate = Column(DateTime, nullable=True)
|
| 39 |
-
rowguid = Column(String(36), nullable=
|
| 40 |
hydrant_idnumber = Column(String(20), nullable=True)
|
| 41 |
hydrant_location = Column(String(116), nullable=True)
|
| 42 |
alarms = Column(String(10), nullable=True)
|
|
@@ -65,4 +65,5 @@ class ApparatusModel(BaseModel_):
|
|
| 65 |
responsetime = Column(String(20), nullable=True)
|
| 66 |
turntime = Column(String(20), nullable=True)
|
| 67 |
|
| 68 |
-
incident = relationship("
|
|
|
|
|
|
| 36 |
inservicetime = Column(DateTime, nullable=True)
|
| 37 |
respondfromquarters = Column(Boolean, nullable=True)
|
| 38 |
changedate = Column(DateTime, nullable=True)
|
| 39 |
+
rowguid = Column(String(36), nullable=True)
|
| 40 |
hydrant_idnumber = Column(String(20), nullable=True)
|
| 41 |
hydrant_location = Column(String(116), nullable=True)
|
| 42 |
alarms = Column(String(10), nullable=True)
|
|
|
|
| 65 |
responsetime = Column(String(20), nullable=True)
|
| 66 |
turntime = Column(String(20), nullable=True)
|
| 67 |
|
| 68 |
+
incident = relationship("IncidentModel", back_populates="apparatus")
|
| 69 |
+
personnel = relationship("PersonnelModel", back_populates="apparatus")
|
src/entities/auv_incidentapparatus/_model.py
CHANGED
|
@@ -35,41 +35,41 @@ class IncidentApparatusModel(BaseModel_):
|
|
| 35 |
actiontaken4descip = Column(String(255))
|
| 36 |
numberofresponders = Column(Integer)
|
| 37 |
dispatchdatetime = Column(DateTime)
|
| 38 |
-
dispatchtime = Column(
|
| 39 |
dispatchdate = Column(Date)
|
| 40 |
-
dispatchenroutetime = Column(
|
| 41 |
dispatchenroutediffseconds = Column(Integer)
|
| 42 |
enroutetoscenedatetime = Column(DateTime)
|
| 43 |
-
enroutetoscenetime = Column(
|
| 44 |
enroutetoscenedate = Column(Date)
|
| 45 |
-
enroutearrivalscenetime = Column(
|
| 46 |
enroutearrivalscenediffseconds = Column(Integer)
|
| 47 |
-
responsetime = Column(
|
| 48 |
responsetimeseconds = Column(Integer)
|
| 49 |
arrivaldatetime = Column(DateTime)
|
| 50 |
-
arrivaltime = Column(
|
| 51 |
arrivaldate = Column(Date)
|
| 52 |
-
arrivaltoenroutehospdifftime = Column(
|
| 53 |
arrivaltoenroutehospdiffseconds = Column(Integer)
|
| 54 |
enroutetohospitaldatetime = Column(DateTime)
|
| 55 |
-
enroutetohospitaltime = Column(
|
| 56 |
enroutetohospitaldate = Column(Date)
|
| 57 |
-
enroutetoarrivalhospdifftime = Column(
|
| 58 |
enroutetoarrivalhospdiffseconds = Column(Integer)
|
| 59 |
-
arrivalscenetoarrivalhospdifftime = Column(
|
| 60 |
arrivalscenetoarrivalhospdiffseconds = Column(Integer)
|
| 61 |
hospitalarrivaldatetime = Column(DateTime)
|
| 62 |
-
hospitalarrivaltime = Column(
|
| 63 |
hospitalarrivaldate = Column(Date)
|
| 64 |
-
arrivalclearhospdifftime = Column(
|
| 65 |
arrivalclearhospdiffseconds = Column(Integer)
|
| 66 |
cleardatetime = Column(DateTime)
|
| 67 |
-
cleartime = Column(
|
| 68 |
cleardate = Column(Date)
|
| 69 |
-
dispatchcleardifftime = Column(
|
| 70 |
dispatchcleardiffseconds = Column(Integer)
|
| 71 |
inservicedatetime = Column(DateTime)
|
| 72 |
-
inservicetime = Column(
|
| 73 |
inservicedate = Column(Date)
|
| 74 |
emsruncode = Column(String(10))
|
| 75 |
emsrundescrip = Column(String(100))
|
|
@@ -82,14 +82,14 @@ class IncidentApparatusModel(BaseModel_):
|
|
| 82 |
amount2 = Column(Integer)
|
| 83 |
fdid_no = Column(String(20))
|
| 84 |
stagingdatetime = Column(DateTime)
|
| 85 |
-
stagingtime = Column(
|
| 86 |
stagingdate = Column(Date)
|
| 87 |
AtPatientSideDateTime = Column(DateTime)
|
| 88 |
-
AtPatientSideTime = Column(
|
| 89 |
AtPatientSideDate = Column(Date)
|
| 90 |
FacilityDateTime = Column(DateTime)
|
| 91 |
-
FacilityTime = Column(
|
| 92 |
FacilityDate = Column(Date)
|
| 93 |
changedate = Column(DateTime)
|
| 94 |
|
| 95 |
-
incident = relationship("
|
|
|
|
| 35 |
actiontaken4descip = Column(String(255))
|
| 36 |
numberofresponders = Column(Integer)
|
| 37 |
dispatchdatetime = Column(DateTime)
|
| 38 |
+
dispatchtime = Column(String(10))
|
| 39 |
dispatchdate = Column(Date)
|
| 40 |
+
dispatchenroutetime = Column(String(10))
|
| 41 |
dispatchenroutediffseconds = Column(Integer)
|
| 42 |
enroutetoscenedatetime = Column(DateTime)
|
| 43 |
+
enroutetoscenetime = Column(String(10))
|
| 44 |
enroutetoscenedate = Column(Date)
|
| 45 |
+
enroutearrivalscenetime = Column(String(10))
|
| 46 |
enroutearrivalscenediffseconds = Column(Integer)
|
| 47 |
+
responsetime = Column(String(10))
|
| 48 |
responsetimeseconds = Column(Integer)
|
| 49 |
arrivaldatetime = Column(DateTime)
|
| 50 |
+
arrivaltime = Column(String(10))
|
| 51 |
arrivaldate = Column(Date)
|
| 52 |
+
arrivaltoenroutehospdifftime = Column(String(10))
|
| 53 |
arrivaltoenroutehospdiffseconds = Column(Integer)
|
| 54 |
enroutetohospitaldatetime = Column(DateTime)
|
| 55 |
+
enroutetohospitaltime = Column(String(10))
|
| 56 |
enroutetohospitaldate = Column(Date)
|
| 57 |
+
enroutetoarrivalhospdifftime = Column(String(10))
|
| 58 |
enroutetoarrivalhospdiffseconds = Column(Integer)
|
| 59 |
+
arrivalscenetoarrivalhospdifftime = Column(String(10))
|
| 60 |
arrivalscenetoarrivalhospdiffseconds = Column(Integer)
|
| 61 |
hospitalarrivaldatetime = Column(DateTime)
|
| 62 |
+
hospitalarrivaltime = Column(String(10))
|
| 63 |
hospitalarrivaldate = Column(Date)
|
| 64 |
+
arrivalclearhospdifftime = Column(String(10))
|
| 65 |
arrivalclearhospdiffseconds = Column(Integer)
|
| 66 |
cleardatetime = Column(DateTime)
|
| 67 |
+
cleartime = Column(String(10))
|
| 68 |
cleardate = Column(Date)
|
| 69 |
+
dispatchcleardifftime = Column(String(10))
|
| 70 |
dispatchcleardiffseconds = Column(Integer)
|
| 71 |
inservicedatetime = Column(DateTime)
|
| 72 |
+
inservicetime = Column(String(10))
|
| 73 |
inservicedate = Column(Date)
|
| 74 |
emsruncode = Column(String(10))
|
| 75 |
emsrundescrip = Column(String(100))
|
|
|
|
| 82 |
amount2 = Column(Integer)
|
| 83 |
fdid_no = Column(String(20))
|
| 84 |
stagingdatetime = Column(DateTime)
|
| 85 |
+
stagingtime = Column(String(10))
|
| 86 |
stagingdate = Column(Date)
|
| 87 |
AtPatientSideDateTime = Column(DateTime)
|
| 88 |
+
AtPatientSideTime = Column(String(10))
|
| 89 |
AtPatientSideDate = Column(Date)
|
| 90 |
FacilityDateTime = Column(DateTime)
|
| 91 |
+
FacilityTime = Column(String(10))
|
| 92 |
FacilityDate = Column(Date)
|
| 93 |
changedate = Column(DateTime)
|
| 94 |
|
| 95 |
+
incident = relationship("IncidentModel", back_populates="incident_apparatus")
|
src/entities/auv_incidentpersonnel/_model.py
CHANGED
|
@@ -1,10 +1,13 @@
|
|
| 1 |
from sqlalchemy import Column, String, Integer, Float
|
|
|
|
| 2 |
from ..base import BaseModel_
|
| 3 |
|
|
|
|
| 4 |
class IncidentPersonnelModel(BaseModel_):
|
| 5 |
__tablename__ = "auv_incidentpersonnel"
|
| 6 |
|
| 7 |
-
|
|
|
|
| 8 |
namefirst = Column(String(25))
|
| 9 |
namemi = Column(String(2))
|
| 10 |
namelast = Column(String(25))
|
|
|
|
| 1 |
from sqlalchemy import Column, String, Integer, Float
|
| 2 |
+
from sqlalchemy.orm import mapped_column
|
| 3 |
from ..base import BaseModel_
|
| 4 |
|
| 5 |
+
|
| 6 |
class IncidentPersonnelModel(BaseModel_):
|
| 7 |
__tablename__ = "auv_incidentpersonnel"
|
| 8 |
|
| 9 |
+
id = Column(Integer, primary_key=True, autoincrement=True)
|
| 10 |
+
personnelkey = Column(String(14))
|
| 11 |
namefirst = Column(String(25))
|
| 12 |
namemi = Column(String(2))
|
| 13 |
namelast = Column(String(25))
|
src/entities/incident/_model.py
CHANGED
|
@@ -2,6 +2,7 @@ from sqlalchemy import Column, String, Integer, Float, Boolean, DateTime, Text,
|
|
| 2 |
from sqlalchemy.orm import relationship
|
| 3 |
from ..base import BaseModel_
|
| 4 |
|
|
|
|
| 5 |
class IncidentModel(BaseModel_):
|
| 6 |
__tablename__ = "incident"
|
| 7 |
|
|
@@ -10,30 +11,30 @@ class IncidentModel(BaseModel_):
|
|
| 10 |
incidentnumber = Column(String(10))
|
| 11 |
exposure = Column(String(3))
|
| 12 |
incidentstatus = Column(String(20))
|
| 13 |
-
reviewstatusflag = Column(Boolean, nullable=
|
| 14 |
-
publicreleaseflag = Column(Boolean, nullable=
|
| 15 |
-
completed = Column(Boolean, nullable=
|
| 16 |
transactiontype = Column(String(4))
|
| 17 |
district = Column(String(10))
|
| 18 |
station = Column(String(30))
|
| 19 |
shift = Column(String(2))
|
| 20 |
company = Column(String(64))
|
| 21 |
-
incidenttype = Column(String(4), nullable=
|
| 22 |
initialdispatchcode = Column(String(25))
|
| 23 |
-
mutualaidcode = Column(String(4), nullable=
|
| 24 |
alarmdate = Column(DateTime)
|
| 25 |
arrivaldate = Column(DateTime)
|
| 26 |
-
didnotarriveflag = Column(Boolean, nullable=
|
| 27 |
controlleddate = Column(DateTime)
|
| 28 |
lastunitcleareddate = Column(DateTime)
|
| 29 |
-
includemutualaidflag = Column(Boolean, nullable=
|
| 30 |
madepartment = Column(String(30))
|
| 31 |
madeptincidentno = Column(String(9))
|
| 32 |
alarms = Column(Integer)
|
| 33 |
actiontaken1 = Column(String(4))
|
| 34 |
actiontaken2 = Column(String(4))
|
| 35 |
actiontaken3 = Column(String(4))
|
| 36 |
-
resourceformusedflag = Column(Boolean, nullable=
|
| 37 |
apparatussuppression = Column(Integer)
|
| 38 |
apparatusems = Column(Integer)
|
| 39 |
apparatusother = Column(Integer)
|
|
@@ -52,7 +53,7 @@ class IncidentModel(BaseModel_):
|
|
| 52 |
hazardmaterialreleased = Column(String(4))
|
| 53 |
mixeduse = Column(String(4))
|
| 54 |
propertyuse = Column(String(4))
|
| 55 |
-
emsprovidedflag = Column(Boolean, nullable=
|
| 56 |
casualtiesflag = Column(Integer)
|
| 57 |
priorityresponseflag = Column(Boolean)
|
| 58 |
vendorid = Column(String(20))
|
|
@@ -70,7 +71,7 @@ class IncidentModel(BaseModel_):
|
|
| 70 |
directions = Column(Text)
|
| 71 |
latitude = Column(String(20))
|
| 72 |
longitude = Column(String(20))
|
| 73 |
-
compositeaddress = Column(String(50), nullable=
|
| 74 |
county = Column(String(20))
|
| 75 |
occupancykey = Column(String(14))
|
| 76 |
occupancynumber = Column(String(16))
|
|
@@ -83,8 +84,8 @@ class IncidentModel(BaseModel_):
|
|
| 83 |
changedate = Column(DateTime)
|
| 84 |
rowguid = Column(String(50))
|
| 85 |
LogComments = Column(Text)
|
| 86 |
-
Incident_ID = Column(Integer, nullable=
|
| 87 |
-
loss_not_known = Column(Boolean, nullable=
|
| 88 |
collecteddate = Column(DateTime)
|
| 89 |
DispatchIncType = Column(String(80))
|
| 90 |
nfscasualtycnt = Column(Integer)
|
|
@@ -108,6 +109,6 @@ class IncidentModel(BaseModel_):
|
|
| 108 |
Northing = Column(String(5))
|
| 109 |
|
| 110 |
# relationships
|
| 111 |
-
apparatus = relationship("
|
| 112 |
-
personnel = relationship("
|
| 113 |
incident_apparatus = relationship("IncidentApparatusModel", back_populates="incident")
|
|
|
|
| 2 |
from sqlalchemy.orm import relationship
|
| 3 |
from ..base import BaseModel_
|
| 4 |
|
| 5 |
+
|
| 6 |
class IncidentModel(BaseModel_):
|
| 7 |
__tablename__ = "incident"
|
| 8 |
|
|
|
|
| 11 |
incidentnumber = Column(String(10))
|
| 12 |
exposure = Column(String(3))
|
| 13 |
incidentstatus = Column(String(20))
|
| 14 |
+
reviewstatusflag = Column(Boolean, nullable=True)
|
| 15 |
+
publicreleaseflag = Column(Boolean, nullable=True)
|
| 16 |
+
completed = Column(Boolean, nullable=True)
|
| 17 |
transactiontype = Column(String(4))
|
| 18 |
district = Column(String(10))
|
| 19 |
station = Column(String(30))
|
| 20 |
shift = Column(String(2))
|
| 21 |
company = Column(String(64))
|
| 22 |
+
incidenttype = Column(String(4), nullable=True)
|
| 23 |
initialdispatchcode = Column(String(25))
|
| 24 |
+
mutualaidcode = Column(String(4), nullable=True)
|
| 25 |
alarmdate = Column(DateTime)
|
| 26 |
arrivaldate = Column(DateTime)
|
| 27 |
+
didnotarriveflag = Column(Boolean, nullable=True)
|
| 28 |
controlleddate = Column(DateTime)
|
| 29 |
lastunitcleareddate = Column(DateTime)
|
| 30 |
+
includemutualaidflag = Column(Boolean, nullable=True)
|
| 31 |
madepartment = Column(String(30))
|
| 32 |
madeptincidentno = Column(String(9))
|
| 33 |
alarms = Column(Integer)
|
| 34 |
actiontaken1 = Column(String(4))
|
| 35 |
actiontaken2 = Column(String(4))
|
| 36 |
actiontaken3 = Column(String(4))
|
| 37 |
+
resourceformusedflag = Column(Boolean, nullable=True)
|
| 38 |
apparatussuppression = Column(Integer)
|
| 39 |
apparatusems = Column(Integer)
|
| 40 |
apparatusother = Column(Integer)
|
|
|
|
| 53 |
hazardmaterialreleased = Column(String(4))
|
| 54 |
mixeduse = Column(String(4))
|
| 55 |
propertyuse = Column(String(4))
|
| 56 |
+
emsprovidedflag = Column(Boolean, nullable=True)
|
| 57 |
casualtiesflag = Column(Integer)
|
| 58 |
priorityresponseflag = Column(Boolean)
|
| 59 |
vendorid = Column(String(20))
|
|
|
|
| 71 |
directions = Column(Text)
|
| 72 |
latitude = Column(String(20))
|
| 73 |
longitude = Column(String(20))
|
| 74 |
+
compositeaddress = Column(String(50), nullable=True)
|
| 75 |
county = Column(String(20))
|
| 76 |
occupancykey = Column(String(14))
|
| 77 |
occupancynumber = Column(String(16))
|
|
|
|
| 84 |
changedate = Column(DateTime)
|
| 85 |
rowguid = Column(String(50))
|
| 86 |
LogComments = Column(Text)
|
| 87 |
+
Incident_ID = Column(Integer, nullable=True)
|
| 88 |
+
loss_not_known = Column(Boolean, nullable=True)
|
| 89 |
collecteddate = Column(DateTime)
|
| 90 |
DispatchIncType = Column(String(80))
|
| 91 |
nfscasualtycnt = Column(Integer)
|
|
|
|
| 109 |
Northing = Column(String(5))
|
| 110 |
|
| 111 |
# relationships
|
| 112 |
+
apparatus = relationship("ApparatusModel", back_populates="incident")
|
| 113 |
+
personnel = relationship("PersonnelModel", back_populates="incident")
|
| 114 |
incident_apparatus = relationship("IncidentApparatusModel", back_populates="incident")
|
src/entities/personnel/_model.py
CHANGED
|
@@ -24,7 +24,7 @@ class PersonnelModel(BaseModel_):
|
|
| 24 |
amount1 = Column(Float, nullable=True)
|
| 25 |
amount2 = Column(Float, nullable=True)
|
| 26 |
changedate = Column(DateTime, nullable=True)
|
| 27 |
-
rowguid = Column(String, nullable=
|
| 28 |
crole = Column(String(4), nullable=True)
|
| 29 |
lLosap_credit = Column(Boolean, nullable=True)
|
| 30 |
MedCert = Column(String(4), nullable=True)
|
|
@@ -37,5 +37,5 @@ class PersonnelModel(BaseModel_):
|
|
| 37 |
iNFIRSSequence = Column(Integer, nullable=True)
|
| 38 |
NFIRSTransactiontype = Column(String(1), nullable=True)
|
| 39 |
|
| 40 |
-
incident = relationship("
|
| 41 |
-
apparatus = relationship("
|
|
|
|
| 24 |
amount1 = Column(Float, nullable=True)
|
| 25 |
amount2 = Column(Float, nullable=True)
|
| 26 |
changedate = Column(DateTime, nullable=True)
|
| 27 |
+
rowguid = Column(String, nullable=True)
|
| 28 |
crole = Column(String(4), nullable=True)
|
| 29 |
lLosap_credit = Column(Boolean, nullable=True)
|
| 30 |
MedCert = Column(String(4), nullable=True)
|
|
|
|
| 37 |
iNFIRSSequence = Column(Integer, nullable=True)
|
| 38 |
NFIRSTransactiontype = Column(String(1), nullable=True)
|
| 39 |
|
| 40 |
+
incident = relationship("IncidentModel", back_populates="personnel")
|
| 41 |
+
apparatus = relationship("ApparatusModel", back_populates="personnel")
|