Company:
id
name
email
industry
size
--------
User:
id
companyId
email
passwordHash
fullName
role
department
internalAnonId
externalAnonId
isActive
----------------
Session:
id
userId
tokenHash
ipAddress
userAgent
expiresAt
--------------
Post:
id
userId // visible  (solo mostrar segun visibilidad su internalAnonId o externalAnonId)
companyId // visible
content // visible
postType // 'idea', 'suggestion', 'criticism', 'question' visible
visibility // internal y external --> por defecto internal
isModerated // invisible (no mostrar) por defecto true
moderationStatus // visible por defecto ''
aiSentiment // invisible (no mostrar) visible por defecto ''
aiCategory // invisible (no mostrar) 'pending', 'approved', 'rejected' visible por defecto 'approved'
aiPriorityScore // invisible (no mostrar) por defecto 10
likesCount // visible
commentsCount // visible
--------------
Comment:
id
postId // visible
userId // visible  (solo mostrar segun visibilidad su internalAnonId o externalAnonId)
parentCommentId // visible
content // visible
isModerated // invisible (no mostrar) por defecto true
moderationStatus // invisible (no mostrar) 'pending', 'approved', 'rejected' por defecto 'approved'
likesCount // visible
repliesCount // visible
-----------
Reaction:
id
userId // visible  (solo mostrar segun visibilidad su internalAnonId o externalAnonId)
postId // visible
commentId // visible
reactionType // visible 'like', 'love', 'insightful', 'celebrate', 'support', 'curious'
-----------------
PostAnalytics:
id
postId
viewsCount
uniqueViewers
avgReadTime
sentimentScore
toxicityScore
innovationScore
feasibilityScore
keywords
topics
--------------
IdentityReveal:
id
requesterUserId
targetUserId
postId
revealReason
amountPaid
revealedName
revealedEmail
revealedDepartment
paymentStatus
paymentMethod
transactionId