Add code resolver, sync conflict handling, and user isolation

Introduce a CodeResolverService to classify user login codes, complete with detailed resolution logic and usability checks. Extend the sync system to handle conflicts via last-write-wins arbitration, with detailed conflict tracking for review. Update file permissions and runtime isolation in Docker to enhance security.
This commit is contained in:
2026-09-12 15:40:42 +02:00
parent 9278c7fc34
commit 0e3b5003f6
6 changed files with 2401 additions and 710 deletions
+31 -2
View File
@@ -370,20 +370,49 @@ class FileEntry {
}
class ChatChannel {
ChatChannel({required this.id, required this.type});
ChatChannel({
required this.id,
required this.type,
this.name,
this.gemeindeId,
this.createdByUserId,
});
final String id;
final String type;
final String? name;
final String? gemeindeId;
final String? createdByUserId;
factory ChatChannel.fromJson(Map<String, dynamic> j) => ChatChannel(
id: j['id'] as String,
type: j['type'] as String? ?? '',
name: j['name'] as String?,
gemeindeId: j['gemeindeId'] as String?,
createdByUserId: j['createdByUserId'] as String?,
);
}
class ChatMessage {
ChatMessage({required this.body, required this.createdAt});
ChatMessage({
this.id,
this.channelId,
this.senderUserId,
this.senderGuestId,
required this.body,
required this.createdAt,
});
final String? id;
final String? channelId;
final String? senderUserId;
final String? senderGuestId;
final String body;
final String createdAt;
factory ChatMessage.fromJson(Map<String, dynamic> j) => ChatMessage(
id: j['id'] as String?,
channelId: j['channelId'] as String?,
senderUserId: j['senderUserId'] as String?,
senderGuestId: j['senderGuestId'] as String?,
body: j['body'] as String? ?? '',
createdAt: j['createdAt'] as String? ?? '',
);