Разработка мобильного приложения для контроля качества (QC) на производстве
Контроль качества на производственной линии — это чеклисты, замеры, фотофиксация дефектов и немедленная эскалация при выходе параметра за допуск. Бумажные карты контроля и Excel-таблицы убивают скорость реакции: дефект обнаруживается на конце линии, а не в точке возникновения. Мобильное приложение QC переносит фиксацию данных непосредственно на рабочее место контролёра.
Контрольные карты и точки измерений
Производство работает по стандартам ISO 9001 или отраслевым (IATF 16949 — автомобили, AS9100 — аэрокосмос). Контрольная карта — набор параметров с допусками (Upper Control Limit, Lower Control Limit). Инспектор измеряет параметр, вводит значение в приложение, система немедленно определяет: в допуске, предупреждение (близко к границе), выход за допуск.
SPC (Statistical Process Control) в реальном времени — X̄-R карта Шухарта. Вычисляется на бэкенде по последним N измерениям, мобильное приложение отображает тренд и получает алерт при нарушении одного из 8 правил Нельсона (например, 7 точек подряд с одной стороны от центральной линии).
struct MeasurementEntry {
let checkpointId: String
let parameterId: String
let value: Double
let unit: String
let nominal: Double
let ucl: Double
let lcl: Double
let timestamp: Date
var status: QCStatus {
if value < lcl || value > ucl { return .outOfControl }
if value < lcl + (ucl - lcl) * 0.1 || value > ucl - (ucl - lcl) * 0.1 { return .warning }
return .ok
}
}
class QCViewModel: ObservableObject {
@Published var currentMeasurement: MeasurementEntry?
@Published var chartData: [MeasurementEntry] = []
func submitMeasurement(_ value: Double) {
guard let checkpoint = currentCheckpoint else { return }
let entry = MeasurementEntry(
checkpointId: checkpoint.id,
parameterId: checkpoint.parameterId,
value: value,
unit: checkpoint.unit,
nominal: checkpoint.nominal,
ucl: checkpoint.ucl,
lcl: checkpoint.lcl,
timestamp: Date()
)
if entry.status == .outOfControl {
triggerNonConformanceFlow(entry)
}
Task { await api.submitMeasurement(entry) }
}
}
Фиксация дефектов и привязка к изделию
Серийный номер или QR-код изделия — точка входа для QC-инспекции. Сканируем, приложение открывает карточку изделия с историей всех предыдущих проверок.
Дефект фиксируется с привязкой к месту: фото с разметкой зоны дефекта (аннотация поверх изображения). На Android — Canvas поверх ImageView с Paint.Style.STROKE, CircleAnnotation или RectAnnotation. На iOS — PKDrawingView или кастомный UIViewRepresentable с CGContext.
Классификатор дефектов — справочник по FMEA: тип дефекта (геометрия, поверхность, сборка, маркировка), критичность (Critical, Major, Minor). Мобильное приложение не даёт ввести произвольный текст — только выбор из справочника плюс фото и комментарий. Это обеспечивает однородность данных для последующей аналитики.
NCR: несоответствие и эскалация
Non-Conformance Report (NCR) — документ при выходе параметра за допуск или обнаружении критического дефекта. Создаётся автоматически при outOfControl статусе. Инспектор добавляет описание, фото, классифицирует причину (8D-методология: D0-D3 — сдерживающие меры).
Push-уведомление ответственному руководителю сразу при создании NCR: FCM/APNs с priority: high. В уведомлении — краткое описание и deep link на карточку NCR в приложении. Если NCR не подтверждён за 30 минут — эскалация выше по иерархии.
// Android: создание NCR с фото
class NCRRepository {
suspend fun createNCR(report: NonConformanceReport): Result<String> {
val photoParts = report.photos.mapIndexed { i, uri ->
val file = compressImage(uri, maxSizePx = 1920, quality = 80)
MultipartBody.Part.createFormData(
"photo_$i",
file.name,
file.asRequestBody("image/jpeg".toMediaType())
)
}
return try {
val response = api.createNCR(
report = report.toMultipartBody(),
photos = photoParts
)
Result.success(response.ncrId)
} catch (e: IOException) {
// Сохраняем локально для отложенной отправки
localDb.savePendingNCR(report)
Result.failure(e)
}
}
}
Интеграция с MES и ERP
MES (Manufacturing Execution System: Siemens Opcenter, PTC Kepware) — источник данных о производственных заказах и серийных номерах. ERP (SAP PP/QM, 1С:ERP) — получает результаты QC и NCR для принятия решения по партии.
Типичный поток данных: MES → мобильное QC-приложение (загрузка задания на контроль) → мобильное приложение → ERP (результаты и NCR). Промежуточный API-сервис нормализует форматы.
Разработка мобильного QC-приложения с чеклистами, SPC-картами, фиксацией дефектов с аннотацией и NCR с пушами: 8-12 недель. С интеграцией MES/ERP и офлайн-поддержкой для зон без Wi-Fi: 4-6 месяцев. Стоимость рассчитывается индивидуально.







