feat: Agente-Marketing initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from datetime import datetime
|
||||
|
||||
db = SQLAlchemy()
|
||||
|
||||
class Property(db.Model):
|
||||
__tablename__ = 'properties'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
source = db.Column(db.String(50))
|
||||
address = db.Column(db.String(200))
|
||||
city = db.Column(db.String(100))
|
||||
county = db.Column(db.String(100))
|
||||
state = db.Column(db.String(10), default='FL')
|
||||
zipcode = db.Column(db.String(10))
|
||||
price = db.Column(db.Float)
|
||||
beds = db.Column(db.Integer)
|
||||
baths = db.Column(db.Float)
|
||||
sqft = db.Column(db.Integer)
|
||||
property_type = db.Column(db.String(50))
|
||||
status = db.Column(db.String(50))
|
||||
url = db.Column(db.Text)
|
||||
image_url = db.Column(db.Text)
|
||||
score = db.Column(db.Integer, default=0)
|
||||
ai_analysis = db.Column(db.Text)
|
||||
is_favorite = db.Column(db.Boolean, default=False)
|
||||
notes = db.Column(db.Text)
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
class Lender(db.Model):
|
||||
__tablename__ = 'lenders'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100))
|
||||
loan_type = db.Column(db.String(100))
|
||||
specialties = db.Column(db.Text)
|
||||
min_down_pct = db.Column(db.Float)
|
||||
accepts_new_resident = db.Column(db.Boolean, default=True)
|
||||
accepts_self_employed = db.Column(db.Boolean, default=True)
|
||||
requires_2yr_history = db.Column(db.Boolean, default=False)
|
||||
phone = db.Column(db.String(30))
|
||||
email = db.Column(db.String(100))
|
||||
website = db.Column(db.String(200))
|
||||
contact_script = db.Column(db.Text)
|
||||
match_score = db.Column(db.Integer, default=0)
|
||||
notes = db.Column(db.Text)
|
||||
|
||||
class SearchCity(db.Model):
|
||||
__tablename__ = 'search_cities'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
city = db.Column(db.String(100), unique=True)
|
||||
search_type = db.Column(db.String(20), default='city') # city, county, zip
|
||||
active = db.Column(db.Boolean, default=True)
|
||||
added_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
class SearchConfig(db.Model):
|
||||
__tablename__ = 'search_config'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
key = db.Column(db.String(50), unique=True)
|
||||
value = db.Column(db.String(200))
|
||||
|
||||
class ScrapeLog(db.Model):
|
||||
__tablename__ = 'scrape_logs'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
ran_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
source = db.Column(db.String(50))
|
||||
found = db.Column(db.Integer, default=0)
|
||||
new = db.Column(db.Integer, default=0)
|
||||
status = db.Column(db.String(20))
|
||||
message = db.Column(db.Text)
|
||||
Reference in New Issue
Block a user