feat: enforce iOS AI safety policy and citations

This commit is contained in:
MingNian
2026-07-29 13:29:51 +08:00
parent b4bc15b9b9
commit 70c1b3eae0
16 changed files with 513 additions and 67 deletions

View File

@@ -9,9 +9,22 @@ const String baseUrl = String.fromEnvironment(
'API_BASE_URL',
defaultValue: kReleaseMode
? 'https://erpapi.datalumina.cn/xiaomai'
: 'http://10.4.225.209:5000',
: 'http://10.4.232.91:5000',
);
const String _configuredAppPolicy = String.fromEnvironment(
'APP_POLICY_PROFILE',
defaultValue: '',
);
String get appPolicyProfile {
if (_configuredAppPolicy == 'android-standard' ||
_configuredAppPolicy == 'ios-medical-citations') {
return _configuredAppPolicy;
}
return Platform.isIOS ? 'ios-medical-citations' : 'android-standard';
}
class ApiException implements Exception {
final int? code;
final String message;
@@ -56,7 +69,10 @@ class ApiClient {
baseUrl: baseUrl,
connectTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 60),
headers: {'Content-Type': 'application/json'},
headers: {
'Content-Type': 'application/json',
'X-App-Policy': appPolicyProfile,
},
),
) {
_dio.interceptors.add(_AuthInterceptor(this));

View File

@@ -1,3 +1,5 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'navigation_provider.dart';
@@ -120,9 +122,9 @@ Widget buildPage(RouteInfo route, WidgetRef ref) {
case 'doctorFollowUpEdit':
return DoctorFollowUpEditPage(id: params['id']);
case 'devices':
return const DeviceManagementPage();
return Platform.isIOS ? const HomePage() : const DeviceManagementPage();
case 'deviceScan':
return const DeviceScanPage();
return Platform.isIOS ? const HomePage() : const DeviceScanPage();
case 'healthArchive':
return const HealthArchivePage();
case 'followups':