- GeminiService (integrations/gemini, @Global): extractDocument (OCR fields) + faceMatch; graceful if no GEMINI_API_KEY - documents: face-match now real via Gemini; POST /admin/documents/:id/ocr extracts fields for CS auto-fill - roles: PATCH /admin/users/:id/role (admin) + POST /platform/users/role (bootstrap via x-platform-secret) - config: gemini + platform.secret; .env.example entries Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
1.5 KiB
Dart
Executable File
47 lines
1.5 KiB
Dart
Executable File
// import 'dart:io';
|
|
//
|
|
// import 'package:flutter/material.dart';
|
|
// import 'package:get/get.dart';
|
|
// import '../../../controller/functions/ocr_controller.dart';
|
|
//
|
|
// class PassportDataExtractorWidget extends StatelessWidget {
|
|
// final PassportDataExtractor passportDataExtractor =
|
|
// Get.put(PassportDataExtractor());
|
|
// final PassportDataController controller = Get.put(PassportDataController());
|
|
//
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return Scaffold(
|
|
// appBar: AppBar(
|
|
// title: const Text('Passport Data Extractor'),
|
|
// ),
|
|
// body: Column(
|
|
// children: [
|
|
// ElevatedButton(
|
|
// onPressed: controller.extractDataAndDrawBoundingBoxes,
|
|
// child: const Text('Extract Data'),
|
|
// ),
|
|
// Expanded(
|
|
// child: Center(
|
|
// child: Stack(
|
|
// children: [
|
|
// GetBuilder<PassportDataController>(
|
|
// builder: (controller) => CustomPaint(
|
|
// painter: BoundingBoxPainter(
|
|
// controller.extractedTextWithCoordinates),
|
|
// child: GetBuilder<PassportDataExtractor>(
|
|
// builder: (controller) =>
|
|
// Image.file(File(passportDataExtractor.image!.path)),
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|