schema_version: 0.1.0
kind: source
id: source.nexuscrm.user_s3_snapshot
name: nexuscrm User S3 snapshot export
version: 0.1.0
owner:
  type: team
  name: data-platform
domain:
  name: crm
purpose: Source-faithful per-snapshot Parquet export of nexuscrm.User from TiDB Cloud
  Essential to S3, consumed by the lakehouse load stage.
usage:
  intended:
  - Bulk load into the raw lakehouse layer
  - Audit and provenance of exported snapshots
  prohibited:
  - Direct analytical querying (load into a contracted product first).
  - Treating a single snapshot as an intra-day event stream.
source:
  kind: database
  system: tidbcloud
  description: TiDB Cloud Essential nexuscrm.User
  identifiers:
    database: nexuscrm
    table: User
    cluster_id: '10996361222721502359'
assets:
- id: user_s3_snapshot
  kind: file
  ref: s3://pingcap-datalake-nexuscrm-export-247906201378-us-west-2/tidb-essential/snapshots/source=nexuscrm/
  materialization: external
  produced_by:
    kind: python
    ref: ingestion.extract.tidbcloud.engine.export
schema:
  kind: relational
  columns:
  - name: id
    type: varchar(255)
    nullable: false
  - name: username
    type: varchar(255)
    nullable: false
  - name: email
    type: varchar(255)
    nullable: false
  - name: password
    type: varchar(255)
    nullable: false
  - name: firstname
    type: varchar(255)
    nullable: true
  - name: lastname
    type: varchar(255)
    nullable: false
  - name: phone
    type: varchar(255)
    nullable: true
  - name: profileid
    type: varchar(255)
    nullable: false
  - name: userroleid
    type: varchar(255)
    nullable: true
  - name: managerid
    type: varchar(255)
    nullable: true
  - name: title
    type: varchar(255)
    nullable: true
  - name: department
    type: varchar(255)
    nullable: true
  - name: division
    type: varchar(255)
    nullable: true
  - name: company
    type: varchar(255)
    nullable: true
  - name: middlename
    type: varchar(255)
    nullable: true
  - name: suffix
    type: varchar(255)
    nullable: true
  - name: alias
    type: varchar(255)
    nullable: true
  - name: communitynickname
    type: varchar(255)
    nullable: true
  - name: mobilephone
    type: varchar(255)
    nullable: true
  - name: timezonesidkey
    type: varchar(255)
    nullable: true
  - name: localesidkey
    type: varchar(255)
    nullable: true
  - name: languagelocalekey
    type: varchar(255)
    nullable: true
  - name: emailencodingkey
    type: varchar(255)
    nullable: true
  - name: currencyisocode
    type: varchar(255)
    nullable: true
  - name: street
    type: varchar(255)
    nullable: true
  - name: city
    type: varchar(255)
    nullable: true
  - name: state
    type: varchar(255)
    nullable: true
  - name: postalcode
    type: varchar(255)
    nullable: true
  - name: country
    type: varchar(255)
    nullable: true
  - name: isactive
    type: tinyint(1)
    nullable: false
  - name: isdeleted
    type: tinyint(1)
    nullable: false
  - name: ownerid
    type: varchar(255)
    nullable: true
  - name: createdbyid
    type: varchar(255)
    nullable: true
  - name: lastmodifiedbyid
    type: varchar(255)
    nullable: true
  - name: failedloginattempts
    type: int
    nullable: false
  - name: lockeduntil
    type: datetime
    nullable: true
  - name: lastlogindate
    type: datetime
    nullable: true
  - name: createddate
    type: datetime
    nullable: false
  - name: lastmodifieddate
    type: datetime
    nullable: false
freshness:
  max_age: PT48H
  degrade_after: PT30H
tests:
- id: user_source_smoke
  type: sql
  severity: informational
  description: Placeholder informational smoke check for the source contract of user.
    Replace with concrete row-count, freshness, or key-uniqueness assertions.
  sql: select 1
governance:
  classifications:
  - customer_data
  - financial
  - operational_sensitive
  - pii
  - restricted
  access:
    default: restricted
  retention:
    period: P7D
  audit:
    required: true
    events:
    - export
    - agent_action
agent_permissions:
  default: deny
compatibility:
  change_policy: semver
extensions:
  primary_key:
  - Id
  watermark_columns:
  - LastModifiedDate
  row_estimate: 326
  known_blind_spots:
  - Intra-snapshot changes are collapsed.
  - Insert-then-delete between snapshots is invisible.
  - Schema drift requires review before promotion.
