← Документация CrewsForge

Схема базы

Собрано из apps/core-api/prisma/schema.prisma · сборка от 2026-08-31

61таблиц
42enum
64связей
28restrict
32cascade
Политика удаления. Restrict звено сделки: удалить нельзя, пока есть ссылки Cascade сателлит: уходит вместе с владельцем SetNull справочная ссылка: обнуляется

Ничего не нашлось. Попробуйте часть имени таблицы — например hold или dispute.

Пользователи и роли

19 таблиц3 × Restrict

Аккаунт, профиль и две клиентские ипостаси — фаундер (Customer) и исполнитель (Employee). Платформенные роли живут здесь же, в справочнике Role.

erDiagram
    UserOnRole }|--|| User : "cascade"
    UserOnRole }|--|| Role : "cascade"
    Profile }|--|| User : "cascade"
    Avatar }|--|| Profile : "cascade"
    Customer }|--|| User : "restrict"
    CustomerProfile }|--|| Customer : "cascade"
    CustomerProfile }|--|| Profile : "cascade"
    Employee }|--|| User : "restrict"
    EmployeeProfile }|--|| Employee : "cascade"
    EmployeeProfile }|--|| Profile : "cascade"
    EmployeeProfileSkill }|--|| EmployeeProfile : "cascade"
    EmployeeProfileSkill }|--|| Skill : "cascade"
    EmployeeProfileSpecialization }|--|| EmployeeProfile : "cascade"
    EmployeeProfileSpecialization }|--|| Specialization : "cascade"
    Portfolio }|--|| EmployeeProfile : "cascade"
    Portfolio }o--|| Specialization : "restrict"
    PortfolioSkill }|--|| Portfolio : "cascade"
    PortfolioSkill }|--|| Skill : "cascade"
    PortfolioLink }|--|| Portfolio : "cascade"
    PortfolioMedia }|--|| Portfolio : "cascade"
    ProfileLanguageLink }|--|| Profile : "cascade"
    ProfileLanguageLink }|--|| ProfileLanguage : "cascade"

User

users
idStringPK
emailStringуник
phoneStringуник?
passwordHashString?
passwordSaltString?
isEmailVerifiedBoolean
isBlockedBoolean
createdAtDateTime
updatedAtDateTime
deletedAtDateTime?

Role

roles
idStringPK
typeRoleTypeуник
createdAtDateTime
updatedAtDateTime

UserOnRole

users_on_roles
idStringPK
userIdString
roleIdString
createdAtDateTime
updatedAtDateTime
  • UserCascade
  • RoleCascade

Profile

profiles
idStringPK
userIdStringуник
firstNameString?
lastNameString?
timezoneIdString?
locationIdString?
createdAtDateTime
updatedAtDateTime
  • UserCascade
  • TimezoneSetNull
  • LocationSetNull

Avatar

avatars
idStringPK
profileIdStringуник
urlString
formatString
createdAtDateTime
updatedAtDateTime
  • ProfileCascade

Customer

customers
idStringPK
userIdStringуник
createdAtDateTime
updatedAtDateTime
  • UserRestrict

CustomerProfile

customers_profiles
idStringPK
customerIdStringуник
profileIdStringуник
createdAtDateTime
updatedAtDateTime
  • CustomerCascade
  • ProfileCascade

Employee

employees
idStringPK
userIdStringуник
bioString?
createdAtDateTime
updatedAtDateTime
  • UserRestrict

EmployeeProfile

employee_profiles
idStringPK
employeeIdStringуник
profileIdStringуник
experienceMonthsInt?
workTypeWorkType
createdAtDateTime
updatedAtDateTime
  • EmployeeCascade
  • ProfileCascade

EmployeeProfileSkill

employees_profiles_skills
idStringPK
employeeProfileIdString
skillIdString
  • EmployeeProfileCascade
  • SkillCascade

EmployeeProfileSpecialization

employees_profiles_specializations
idStringPK
employeeProfileIdString
specializationIdString
  • EmployeeProfileCascade
  • SpecializationCascade

Skill

skills
idStringPK
nameStringуник
descriptionString?
createdAtDateTime
updatedAtDateTime

Specialization

specializations
idStringPK
nameStringуник
descriptionString?
createdAtDateTime
updatedAtDateTime

Portfolio

portfolios
idStringPK
employeeProfileIdString
specializationIdString?
titleString
descriptionString?
createdAtDateTime
updatedAtDateTime
  • EmployeeProfileCascade
  • SpecializationRestrict

PortfolioSkill

portfolios_skills
idStringPK
portfolioIdString
skillIdString
  • PortfolioCascade
  • SkillCascade

PortfolioLink

portfolios_links
idStringPK
portfolioIdString
typePortfolioLinkType
urlString
createdAtDateTime
updatedAtDateTime
  • PortfolioCascade

PortfolioMedia

portfolios_media
idStringPK
portfolioIdString
urlString
formatString
createdAtDateTime
updatedAtDateTime
  • PortfolioCascade

ProfileLanguage

profile_languages
idStringPK
codeStringуник
nameString
createdAtDateTime
updatedAtDateTime

ProfileLanguageLink

profiles_languages
idStringPK
profileIdString
languageIdString
levelString?
  • ProfileCascade
  • ProfileLanguageCascade

Токены и сессии

2 таблиц

Выданные пары и устройства. Каскад от пользователя: восстанавливается логином, доказательством не является.

erDiagram
    Session }|--|| Token : "cascade"

Token

tokens
idStringPK
userIdString
accessTokenIdString
accessTokenExpiredAtInt
refreshTokenIdString
refreshTokenExpiredAtInt
createdAtDateTime
updatedAtDateTime
  • UserCascade

Session

sessions
idStringPK
userIdString
tokenIdStringуник
fingerprintString
ipString
createdAtDateTime
updatedAtDateTime
  • UserCascade
  • TokenCascade

Гео-справочник

5 таблиц

Страны, города, таймзоны. Наполняется сидом.

erDiagram
    Location }o--|| Location : "setnull"
    Location }o--|| Country : "setnull"
    CountryTimezone }|--|| Country : "cascade"
    CountryTimezone }|--|| Timezone : "cascade"
    LocationTimezone }|--|| Location : "cascade"
    LocationTimezone }|--|| Timezone : "cascade"

Country

countries
idStringPK
cca2Stringуник
cca3Stringуник
ccn3Stringуник?
ciocStringуник?
nameCommonString
nameOfficialString
regionString?
subregionString?
landlockedBoolean?
areaFloat?
populationBigInt?минор
independentBoolean?
unMemberBoolean?
statusString?
fifaString?
latFloat?
lngFloat?
capitalJson?
capitalLatFloat?
capitalLngFloat?
iddRootString?
iddSuffixesJson?
tldJson?
bordersJson?
carSideString?
carSignsJson?
altSpellingsJson?
languagesJson?
currenciesJson?
translationsJson?
demonymsJson?
giniJson?
mapsJson?
flagsJson?
coatOfArmsJson?
continentsJson?
startOfWeekString?
createdAtDateTime
updatedAtDateTime

Location

locations
idStringPK
typeLocationType
nameString
parentIdString?
countryIdString?
latFloat?
lngFloat?
metaJson?
createdAtDateTime
updatedAtDateTime
  • LocationSetNull
  • CountrySetNull

Timezone

timezones
idStringPK
nameStringуник
createdAtDateTime
updatedAtDateTime

CountryTimezone

countries_timezones
idStringPK
countryIdString
timezoneIdString
  • CountryCascade
  • TimezoneCascade

LocationTimezone

locations_timezones
idStringPK
locationIdString
timezoneIdString
  • LocationCascade
  • TimezoneCascade

Команда

3 таблиц2 × Restrict

Состав и полномочия. Оси независимы: role даёт доступ, canSign и canSubmit — право подписать договор и сдать этап.

erDiagram
    TeamMember }|--|| Team : "restrict"
    TeamInvitation }|--|| Team : "cascade"

Team

teams
idStringPK
nameString
slugStringуник
bioString?
statusTeamStatus
externalExperienceJson?
verifiedAtDateTime?
createdAtDateTime
updatedAtDateTime

TeamMember

team_members
idStringPK
teamIdString
employeeIdString
roleTeamMemberRole
canSignBoolean
canSubmitBoolean
statusTeamMemberStatus
removedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • TeamRestrict
  • EmployeeRestrict

TeamInvitation

team_invitations
idStringPK
teamIdString
emailString
roleTeamMemberRole
tokenStringуник
statusInvitationStatus
expiresAtDateTime
createdAtDateTime
updatedAtDateTime
  • TeamCascade

Проект

1 таблиц2 × Restrict

Корень сделочной цепочки. Статус — машина состояний, contractingStage — суб-машина контрактинга.

erDiagram
    Project {
        uuid id PK
    }

Project

projects
idStringPK
titleString
descriptionString
categoryProjectCategoryType?
statusProjectStatus
contractingStageContractingStage?
customerIdString
teamIdString?
currencyString
budgetMinMinorBigInt?минор
budgetMaxMinorBigInt?минор
belowBudgetGateBoolean
commissionRateBpsInt?
createdAtDateTime
updatedAtDateTime
deletedAtDateTime?
  • CustomerRestrict
  • TeamRestrict

Спецификация и план

2 таблиц2 × Restrict

Спека версионируется, план живёт снапшотом: до подписания он предмет торга и приложение к договору, а не набор рабочих сущностей.

erDiagram
    Specification {
        uuid id PK
    }
    PlanVersion {
        uuid id PK
    }

Specification

specifications
idStringPK
projectIdString
versionInt
contentJson
authorTypeAuthorType
authorUserIdString?
statusSpecificationStatus
sourceThreadIdString?
createdAtDateTime
  • ProjectRestrict

PlanVersion

plan_versions
idStringPK
projectIdString
versionInt
itemsJson
totalAmountMinorBigIntминор
statusPlanVersionStatus
internalNotesString?
authorMemberIdString?
sentAtDateTime?
respondedAtDateTime?
rejectReasonString?
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict

Этапы и приёмка

6 таблиц6 × Restrict

Этапы материализуются из принятого плана. Критерий — проверяемое утверждение; отказ обязан ссылаться на критерий.

erDiagram
    AcceptanceCriterion }|--|| Milestone : "restrict"
    Artifact }|--|| Milestone : "restrict"
    MilestoneSubmission }|--|| Milestone : "restrict"
    AcceptanceReview }|--|| Milestone : "restrict"
    ReviewRejectionItem }|--|| AcceptanceReview : "restrict"

Milestone

milestones
idStringPK
projectIdString
planVersionIdString?
orderIndexInt
titleString
descriptionString
amountMinorBigIntминор
statusMilestoneStatus
dueAtDateTime?
deadlinePausedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict

AcceptanceCriterion

acceptance_criteria
idStringPK
milestoneIdString
orderIndexInt
textString
stateCriterionState
createdAtDateTime
updatedAtDateTime
  • MilestoneRestrict

Artifact

artifacts
idStringPK
milestoneIdString
typeArtifactType
titleString
urlString?
fileKeyString?
uploaderMemberIdString?
sourceArtifactSource
createdAtDateTime
  • MilestoneRestrict

MilestoneSubmission

milestone_submissions
idStringPK
milestoneIdString
attemptInt
submittedByMemberIdString
coverNoteString?
createdAtDateTime
  • MilestoneRestrict

AcceptanceReview

acceptance_reviews
idStringPK
milestoneIdString
submissionIdString
openedByUserIdString
verdictReviewVerdict?
reasoningString?
decidedByUserIdString?
newMilestoneIdString?
decidedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • MilestoneRestrict

ReviewRejectionItem

review_rejection_items
idStringPK
reviewIdString
criterionIdString
commentString?
  • AcceptanceReviewRestrict

Контрактинг

4 таблиц5 × Restrict

Party — снапшот юрлица под конкретный проект. Два договора с платформой; между собой стороны не подписывают ничего.

erDiagram
    PartyDocument }|--|| Party : "restrict"
    Contract {
        uuid id PK
    }
    Offer {
        uuid id PK
    }

Party

parties
idStringPK
projectIdString
sideDealSide
legalNameString
legalFormString?
countryCodeString
registrationNumberString?
taxIdString?
addressJson
kycStateKycState
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict

PartyDocument

party_documents
idStringPK
partyIdString
kindString
fileKeyString
statusPartyDocumentStatus
reviewedByUserIdString?
createdAtDateTime
updatedAtDateTime
  • PartyRestrict

Contract

contracts
idStringPK
projectIdString
sideDealSide
planVersionIdString
statusContractStatus
templateVersionString
documentHashString?
envelopeExternalIdString?
signerUserIdString?
signerMemberIdString?
signedAtDateTime?
signedFileKeyString?
terminatedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict

Offer

offers
idStringPK
projectIdString
teamIdString
stateOfferState
createdByUserIdString
declineReasonString?
respondedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict
  • TeamRestrict

Деньги

4 таблиц3 × Restrict

Холд, расчёт, выплатной аккаунт, журнал вебхуков. Суммы — целые минорные единицы, дробных типов в схеме нет.

erDiagram
    Settlement }|--|| Hold : "restrict"
    PayoutAccount {
        uuid id PK
    }
    WebhookEvent {
        uuid id PK
    }

PayoutAccount

payout_accounts
idStringPK
teamIdStringуник
providerString
externalAccountIdString?
statePayoutAccountState
requirementsJson?
createdAtDateTime
updatedAtDateTime
  • TeamRestrict

Hold

holds
idStringPK
milestoneIdStringуник
amountMinorBigIntминор
stateHoldState
paymentIntentExternalIdString?
chargeExternalIdString?
heldAtDateTime?
closedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • MilestoneRestrict

Settlement

settlements
idStringPK
holdIdString
teamAmountMinorBigIntминор
founderAmountMinorBigIntминор
platformFeeMinorBigIntминор
holdAmountMinorBigIntминор
basisTypeSettlementBasis
basisIdString
executedByUserIdString
statusSettlementStatus
transferExternalIdString?
refundExternalIdString?
executedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • HoldRestrict

WebhookEvent

webhook_events
idStringPK
providerWebhookProvider
externalEventIdString
payloadJson
statusWebhookEventStatus
processedAtDateTime?
createdAtDateTime

Спор и расторжение

4 таблиц4 × Restrict

Позиции сторон и доказательства. До решения стороны не видят доказательств друг друга.

erDiagram
    DisputePosition }|--|| Dispute : "restrict"
    DisputeEvidence }|--|| DisputePosition : "restrict"
    Termination {
        uuid id PK
    }

Dispute

disputes
idStringPK
milestoneIdString
stateDisputeState
initiatorSideDealSide
openedByUserIdString
positionDeadlineAtDateTime?
outcomeDisputeOutcome?
teamShareBpsInt?
reasoningString?
arbiterUserIdString?
resolvedAtDateTime?
lciaEscalatedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • MilestoneRestrict

DisputePosition

dispute_positions
idStringPK
disputeIdString
sideDealSide
statementString?
submittedByUserIdString?
submittedAtDateTime?
createdAtDateTime
  • DisputeRestrict

DisputeEvidence

dispute_evidences
idStringPK
positionIdString
titleString
fileKeyString?
urlString?
createdAtDateTime
  • DisputePositionRestrict

Termination

terminations
idStringPK
projectIdString
stateTerminationState
initiatorSideDealSide
requestedByUserIdString
basisTerminationBasis?
objectionDeadlineAtDateTime
objectionByUserIdString?
objectionDisputeIdString?
completedCriteriaBpsInt?
assessedByUserIdString?
reasoningString?
sourceDisputeIdString?
executedAtDateTime?
createdAtDateTime
updatedAtDateTime
  • ProjectRestrict

Операционный контур

5 таблиц

Журнал переходов, исходящие события, очередь задач, таймеры, уведомления.

erDiagram
    StateTransition {
        uuid id PK
    }
    OutboxEvent {
        uuid id PK
    }
    QueueItem {
        uuid id PK
    }
    Timer {
        uuid id PK
    }
    Notification {
        uuid id PK
    }

StateTransition

state_transitions
idStringPK
subjectTypeSubjectType
subjectIdString
fromStateString?
toStateString
actorTypeActorType
actorUserIdString?
actorRoleString?
basisTypeString?
basisIdString?
reasonString?
metadataJson?
createdAtDateTime

OutboxEvent

outbox_events
idStringPK
eventTypeString
aggregateTypeSubjectType
aggregateIdString
payloadJson
publishedAtDateTime?
attemptsInt
createdAtDateTime

QueueItem

queue_items
idStringPK
typeQueueItemType
targetRolePlatformRole
subjectTypeSubjectType
subjectIdString
projectIdString?
statusQueueItemStatus
dueAtDateTime
overdueMarkedAtDateTime?
assigneeUserIdString?
closedByUserIdString?
resultTransitionIdString?
createdAtDateTime
updatedAtDateTime

Timer

timers
idStringPK
kindTimerKind
subjectTypeSubjectType
subjectIdString
firesAtDateTime
firedAtDateTime?
cancelledAtDateTime?
createdAtDateTime

Notification

notifications
idStringPK
userIdString
typeString
subjectTypeSubjectType
subjectIdString
requiresActionBoolean
payloadJson?
readAtDateTime?
createdAtDateTime

Консьерж

2 таблиц1 × Restrict

Тред обращений: первая линия — оператор, эскалация — задача администратору.

erDiagram
    ConciergeMessage }|--|| ConciergeThread : "restrict"

ConciergeThread

concierge_threads
idStringPK
openedByUserIdString
sideDealSide?
projectIdString?
subjectString
statusConciergeStatus
createdAtDateTime
updatedAtDateTime

ConciergeMessage

concierge_messages
idStringPK
threadIdString
authorUserIdString
authorRoleString
bodyString
createdAtDateTime
  • ConciergeThreadRestrict

Трекер

1 таблиц

Связи с внешним трекером. Полиморфные, без внешних ключей: ни один инвариант платформы от трекера не зависит.

erDiagram
    TrackerLink {
        uuid id PK
    }

TrackerLink

tracker_links
idStringPK
subjectTypeSubjectType
subjectIdString
externalTypeString
externalIdString
createdAtDateTime
updatedAtDateTime

Walrider (AI)

3 таблиц

Тред AI-консультанта. Субъектом прав не является: его выводы материализуются как спецификация с authorType = AI.

erDiagram
    WalriderMessage }|--|| WalriderThread : "cascade"
    WalriderThreadState }|--|| WalriderThread : "cascade"
    WalriderThreadState }o--|| WalriderMessage : "cascade"

WalriderThread

walrider_threads
idStringPK
customerIdString
projectIdStringуник
externalThreadIdString?
createdAtDateTime
updatedAtDateTime
  • CustomerCascade
  • ProjectCascade

WalriderMessage

walrider_messages
idStringPK
messageIdInt
threadIdString
roleWalriderMessageRole
contentString
externalMessageIdString?
metadataJson?
createdAtDateTime
updatedAtDateTime
  • WalriderThreadCascade

WalriderThreadState

walrider_thread_states
idStringPK
threadIdString
messageIdString?
statusString?
dataJson?
createdAtDateTime
  • WalriderThreadCascade
  • WalriderMessageCascade

Инварианты на уровне базы

Prisma не выражает ни CHECK, ни частичных уникальных индексов, поэтому эти правила лежат в baseline-миграции сырым SQL. Держать их в приложении нельзя: нарушение обязано отвергаться базой даже при гонке двух транзакций и при прямом доступе к БД.

settlements_amounts_sum_to_hold

Расчёт, компоненты которого не сходятся в сумму холда, не вставляется. Денормализованное hold_amount_minor лежит в самой строке ровно ради этой проверки: CHECK не умеет ходить в соседнюю таблицу.

queue_items_open_dedup

Две незакрытые задачи по одному предмету. Повторная задача того же типа заводится свободно после того, как предыдущая ушла в DONE или CANCELLED.

users_on_roles_single_platform_role

Совмещение двух платформенных ролей одним человеком. Клиентские роли в предикат не входят — их сочетать можно.

roles_type_key

Вторая строка справочника ролей того же типа. Без неё предыдущий индекс обходится: он перечисляет id платформенных ролей, и роль с другим uuid его предикат не видит.

Перечисления

Четыре из них — ActorType, SubjectType, TimerKind, WebhookProvider — обязаны совпадать значение в значение с union'ами шины доменных событий; расхождение хотя бы в одном значении роняет прогон.

ActorType3
USERSYSTEMTIMER
ArtifactSource2
PLATFORMTRACKER
ArtifactType3
FILELINKDEMO
AuthorType2
AIHUMAN
ConciergeStatus4
OPENESCALATEDRESOLVEDCLOSED
ContractingStage5
PLAN_DRAFTINGPLAN_INTERNAL_REVIEWKYC_PENDINGPLAN_SENTSIGNING
ContractStatus4
DRAFTSENT_FOR_SIGNINGSIGNEDTERMINATED
CriterionState4
UNCHECKEDMETDISPUTEDCONFIRMED
DealSide2
FOUNDERTEAM
DisputeOutcome3
TEAM_FAVORFOUNDER_FAVORPARTIAL
DisputeState5
OPENEDPOSITIONS_GATHERINGUNDER_ARBITRATIONRESOLVEDESCALATED_LCIA
HoldState6
PENDING_INHELDRELEASINGRELEASEDREFUNDEDSPLIT
InvitationStatus5
PENDINGACCEPTEDDECLINEDEXPIREDREVOKED
KycState5
NOT_REQUIREDPENDINGSUBMITTEDAPPROVEDREJECTED
LocationType4
REGIONSUBREGIONCOUNTRYCITY
MilestoneStatus10
PLANNEDPLAN_APPROVED // первичный план — автоматически при ACTIVE (M-4); добавленные этапы — операторомFUNDED // достижим только при hold.state = HELDIN_PROGRESSSUBMITTEDFOUNDER_APPROVEDVERIFIEDPAID // достижим только при hold.state = RELEASEDREJECTED // вход в разбор, не терминальный (M-5)DISPUTED
OfferState6
SENT_TO_TEAMTEAM_ACCEPTED // теперь виден фаундеру (P-1)DECLINED_BY_TEAM // → проект обратно в TEAM_MATCHINGACCEPTED_BY_FOUNDERDECLINED_BY_FOUNDERWITHDRAWN
PartyDocumentStatus3
UPLOADEDAPPROVEDREJECTED
PayoutAccountState4
NOT_STARTEDPENDINGRESTRICTEDACTIVE
PlanVersionStatus6
DRAFTINTERNAL_REVIEWSENTACCEPTEDREJECTEDSUPERSEDED
PlatformRole3
OPERATORADMINISTRATORARBITER
PortfolioLinkType4
GITHUBDEMOPRODOTHER
ProjectCategoryType9
WEB_DEVELOPMENTMOBILE_DEVELOPMENTDESIGNMARKETINGCOPYWRITINGDATA_SCIENCEDEV_OPSQA_TESTINGOTHER
ProjectStatus10
DRAFTAI_CONSULTATIONSPEC_READYTEAM_MATCHINGTEAM_PROPOSEDCONTRACTINGACTIVECOMPLETED // терминальный, read-only (P-5)DISPUTED // производный: есть открытый спор по этапу; переходы автоматическиеCANCELLED // терминальный (через Termination)
QueueItemStatus4
OPENIN_PROGRESSDONECANCELLED
QueueItemType15
PLAN_APPROVAL // operator: только этапы, добавленные после старта (M-4)SUBMISSION_VERIFICATION // operator, SLA 4 раб. часаCONCIERGE_FIRST_LINE // operatorACCEPTANCE_REVIEW // administrator: разбор непринятияPLAN_MEDIATION // administrator: фаундер отклонил план (C-4)TEAM_MATCHING // administratorPRICE_REVIEW // administrator: PLAN_INTERNAL_REVIEWKYC_DOCUMENTS // administratorTERMINATION_ASSESSMENT // administratorTEAM_ONBOARDING // administratorESCALATED_INQUIRY // administratorBUDGET_GATE_REVIEW // administrator: мягкий гейт бюджетаFOUNDER_SILENCE_DECISION // administrator: окно молчания истекло (8.3 — не автовыплата)SETTLEMENT_EXECUTION // administrator: основание готово, требуется исполнение денегDISPUTE_ARBITRATION // arbiter, SLA 5 дней
ReviewVerdict3
CRITERIA_UNMET_RETURN // критерий не соблюдён → IN_PROGRESS, доработка бесплатноCRITERIA_MET_NEW_SCOPE // критерии соблюдены → этап принят, требование → новый платный этапESCALATED_TO_ARBITRATION
RoleType5
CUSTOMEREMPLOYEEADMINOPERATORARBITER
SettlementBasis4
DUAL_APPROVALREVIEW_VERDICTARBITER_DECISIONTERMINATION_ASSESSMENT
SettlementStatus3
PENDINGEXECUTEDFAILED
SpecificationStatus4
DRAFTPROPOSEDACCEPTEDSUPERSEDED
SubjectType11
PROJECTMILESTONEHOLDCONTRACTDISPUTETERMINATIONOFFERTEAMPAYOUT_ACCOUNTPLAN_VERSIONCONCIERGE_THREAD
TeamMemberRole3
ADMINEDITORVIEWER
TeamMemberStatus2
ACTIVEREMOVED
TeamStatus4
ONBOARDINGACTIVESUSPENDEDARCHIVED
TerminationBasis4
TEAM_FAULTFOUNDER_INITIATIVETEAM_INITIATIVEDISPUTE_DECISION
TerminationState4
REQUESTEDUNDER_REVIEWEXECUTEDWITHDRAWN
TimerKind7
FOUNDER_SILENCEDISPUTE_POSITION_WINDOWTERMINATION_OBJECTION_WINDOWENVELOPE_EXPIRYMILESTONE_DEADLINESLA_TARGETREMINDER
WalriderMessageRole2
USERASSISTANT
WebhookEventStatus4
RECEIVEDPROCESSEDSKIPPED_DUPLICATEFAILED
WebhookProvider3
STRIPESIGNINGTRACKER
WorkType4
FULL_TIMEPART_TIMECONTRACTFREELANCE