feat: Gestion des secteurs et migration v3.0.4+304

- Ajout système complet de gestion des secteurs avec contours géographiques
- Import des contours départementaux depuis GeoJSON
- API REST pour la gestion des secteurs (/api/sectors)
- Service de géolocalisation pour déterminer les secteurs
- Migration base de données avec tables x_departements_contours et sectors_adresses
- Interface Flutter pour visualisation et gestion des secteurs
- Ajout thème sombre dans l'application
- Corrections diverses et optimisations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
pierre
2025-08-07 11:01:45 +02:00
parent 6a609fb467
commit 599b9fcda0
662 changed files with 213221 additions and 174243 deletions

4
app/lib/presentation/widgets/chat/chat_input.dart Normal file → Executable file
View File

@@ -6,9 +6,9 @@ class ChatInput extends StatefulWidget {
final Function(String) onMessageSent;
const ChatInput({
Key? key,
super.key,
required this.onMessageSent,
}) : super(key: key);
});
@override
State<ChatInput> createState() => _ChatInputState();

4
app/lib/presentation/widgets/chat/chat_messages.dart Normal file → Executable file
View File

@@ -8,11 +8,11 @@ class ChatMessages extends StatelessWidget {
final Function(Map<String, dynamic>) onReply;
const ChatMessages({
Key? key,
super.key,
required this.messages,
required this.currentUserId,
required this.onReply,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

6
app/lib/presentation/widgets/chat/chat_sidebar.dart Normal file → Executable file
View File

@@ -11,14 +11,14 @@ class ChatSidebar extends StatelessWidget {
final Function(bool) onToggleGroup;
const ChatSidebar({
Key? key,
super.key,
required this.teamContacts,
required this.clientContacts,
required this.isTeamChat,
required this.selectedContactId,
required this.onContactSelected,
required this.onToggleGroup,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@@ -178,7 +178,7 @@ class ChatSidebar extends StatelessWidget {
if (hasUnread)
Container(
padding: const EdgeInsets.all(6),
decoration: BoxDecoration(
decoration: const BoxDecoration(
color: AppTheme.primaryColor,
shape: BoxShape.circle,
),