## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 5
)

## ----setup--------------------------------------------------------------------
library(engager)
library(dplyr)
library(ggplot2)

## ----eval = FALSE-------------------------------------------------------------
# devtools::install_github("revgizmo/engager")

## ----quick-start--------------------------------------------------------------
transcript_file <- system.file(
  "extdata/test_transcripts/intro_statistics_week1.vtt",
  package = "engager"
)

results <- basic_transcript_analysis(
  transcript_file,
  output_dir = tempfile("engager-getting-started-")
)
head(results$analysis)
print(results$plots)

## ----composable-workflow------------------------------------------------------
transcript <- load_zoom_transcript(transcript_file)
processed <- process_zoom_transcript(
  transcript_df = transcript,
  consolidate_comments = TRUE,
  add_dead_air = TRUE
)
summary_metrics <- summarize_transcript_metrics(
  transcript_df = processed,
  names_exclude = c("dead_air")
)

# View the results (recognized structured identifiers are masked by default)
head(summary_metrics)

# Run a technical privacy review
privacy_result <- privacy_audit(summary_metrics)
cat(
  "Privacy review:",
  ifelse(nrow(privacy_result) == 0, "No recognized issues flagged", "Review flags returned"),
  "\n"
)

## ----name-matching-example----------------------------------------------------
roster <- tibble::tibble(
  preferred_name = c("Alice Smith", "Bob Jones"),
  student_id = c("S1", "S2"),
  aliases = c("A Smith; Alice S", NA_character_)
)

transcripts <- tibble::tibble(
  speaker = c("alice smith", "carol"),
  timestamp = as.POSIXct(
    c("2025-01-01 10:00:00", "2025-01-01 10:01:00"),
    tz = "UTC"
  )
)

matching <- match_names_workflow(
  transcripts,
  roster,
  options = list(match_strategy = "exact")
)

matching
matching$unresolved

