Skip to content

Commit 4ac19a7

Browse files
committed
docs: update README(_FR).md and CHANGELOG.md
1 parent 5838230 commit 4ac19a7

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

CHANGELOG.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.1.3] - 2025-10-08
9+
10+
### Added
11+
- **Document Metadata Management System**
12+
- New `documents` table for storing metadata (title, URL, checksum, description)
13+
- Document repository with full CRUD operations
14+
- Comprehensive integration tests for document operations
15+
- Admin UI section for viewing and editing document metadata
16+
- Copy-to-clipboard functionality for checksums
17+
- Support for SHA-256, SHA-512, and MD5 checksum algorithms
18+
- Automatic `updated_at` timestamp tracking with PostgreSQL trigger
19+
20+
- **Modern Modal Dialogs**
21+
- Replaced native JavaScript `alert()` and `confirm()` with styled modal dialogs
22+
- Consistent design across all confirmation actions
23+
- Better UX with warning (orange) and delete (red) visual indicators
24+
- Confirmation modal for email reminder sending
25+
- Delete confirmation modal for removing expected readers
26+
27+
- **SVG Favicon**
28+
- Added modern vector favicon with brand identity
29+
- Responsive and works across all modern browsers
30+
31+
### Changed
32+
- **Email Reminder Improvements**
33+
- Email language now matches user's interface language (fr/en)
34+
- Document URL automatically fetched from metadata instead of manual input
35+
- Simplified reminder form by removing redundant URL field
36+
- Document URL displayed as clickable link in reminder section
37+
38+
- **Admin Dashboard Enhancement**
39+
- Document listing now includes documents from `documents` table
40+
- Shows documents with metadata even without signatures or expected readers
41+
42+
- **UI Refinements**
43+
- Removed "Admin connecté" status indicator from dashboard header
44+
- Document URL in metadata displayed as hyperlink instead of input field
45+
- Cleaner and more focused admin interface
46+
47+
### Fixed
48+
- Template syntax error with `not` operator requiring parentheses
49+
50+
### Technical Details
51+
- Added database migration `0005_create_documents_table`
52+
- New domain model: `models.Document` and `models.DocumentInput`
53+
- New infrastructure: `DocumentRepository` with full test coverage
54+
- New presentation: `DocumentHandlers` with GET/POST/DELETE endpoints
55+
- Routes: `/admin/docs/{docID}/metadata` (GET, POST, DELETE)
56+
- Updated `ReminderService.SendReminders()` signature to include locale parameter
57+
- Modified files:
58+
- `internal/domain/models/document.go` (new)
59+
- `internal/infrastructure/database/document_repository.go` (new)
60+
- `internal/infrastructure/database/document_repository_test.go` (new)
61+
- `internal/presentation/admin/handlers_documents.go` (new)
62+
- `internal/application/services/reminder.go`
63+
- `internal/infrastructure/database/admin_repository.go`
64+
- `internal/presentation/admin/handlers_expected_signers.go`
65+
- `internal/presentation/admin/routes_admin.go`
66+
- `templates/admin_dashboard.html.tpl`
67+
- `templates/admin_document_expected_signers.html.tpl`
68+
- `templates/base.html.tpl`
69+
- `static/favicon.svg` (new)
70+
- `migrations/0005_create_documents_table.{up,down}.sql` (new)
71+
872
## [1.1.2] - 2025-10-03
973

1074
### Added
@@ -52,6 +116,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
52116
- NULL UserName handling in database operations
53117
- Proper string conversion for UserName field
54118

119+
[1.1.3]: https://github.com/btouchard/ackify-ce/compare/v1.1.2...v1.1.3
55120
[1.1.2]: https://github.com/btouchard/ackify-ce/compare/v1.1.1...v1.1.2
56121
[1.1.1]: https://github.com/btouchard/ackify-ce/compare/v1.1.0...v1.1.1
57122
[1.1.0]: https://github.com/btouchard/ackify-ce/releases/tag/v1.1.0

README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,25 @@ CREATE TABLE expected_signers (
254254
id BIGSERIAL PRIMARY KEY,
255255
doc_id TEXT NOT NULL,
256256
email TEXT NOT NULL,
257+
name TEXT NOT NULL DEFAULT '', -- Display name (optional)
257258
added_at TIMESTAMPTZ NOT NULL DEFAULT now(),
258259
added_by TEXT NOT NULL, -- Admin who added
259260
notes TEXT,
260261
UNIQUE (doc_id, email) -- One expectation per email/doc
261262
);
263+
264+
-- Document metadata table
265+
CREATE TABLE documents (
266+
doc_id TEXT PRIMARY KEY,
267+
title TEXT NOT NULL DEFAULT '',
268+
url TEXT NOT NULL DEFAULT '', -- Document location
269+
checksum TEXT NOT NULL DEFAULT '', -- SHA-256/SHA-512/MD5
270+
checksum_algorithm TEXT NOT NULL DEFAULT 'SHA-256',
271+
description TEXT NOT NULL DEFAULT '',
272+
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
273+
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
274+
created_by TEXT NOT NULL DEFAULT ''
275+
);
262276
```
263277

264278
**Guarantees**:
@@ -267,6 +281,7 @@ CREATE TABLE expected_signers (
267281
-**Integrity**: SHA-256 hash to detect modifications
268282
-**Non-repudiation**: Ed25519 signature cryptographically provable
269283
-**Tracking**: Expected signers for completion monitoring
284+
-**Metadata**: Document information with URL, checksum, and description
270285

271286
---
272287

@@ -348,6 +363,11 @@ ACKIFY_MAIL_PASSWORD="${SMTP_PASSWORD}"
348363
- `GET /admin/docs/{docID}` - Document details with expected signers management
349364
- `POST /admin/docs/{docID}/expected` - Add expected signers
350365
- `POST /admin/docs/{docID}/expected/remove` - Remove an expected signer
366+
- `POST /admin/docs/{docID}/reminders/send` - Send email reminders to pending readers
367+
- `GET /admin/docs/{docID}/reminders/history` - Get reminder history as JSON
368+
- `GET /admin/docs/{docID}/metadata` - Get document metadata as JSON
369+
- `POST /admin/docs/{docID}/metadata` - Create or update document metadata
370+
- `DELETE /admin/docs/{docID}/metadata` - Delete document metadata
351371
- `GET /admin/docs/{docID}/status.json` - Document status as JSON (AJAX)
352372
- `GET /admin/api/chain-integrity/{docID}` - Chain integrity verification JSON
353373

@@ -356,11 +376,21 @@ Access control: set `ACKIFY_ADMIN_EMAILS` with a comma-separated list of admin e
356376
ACKIFY_ADMIN_EMAILS="alice@company.com,bob@company.com"
357377
```
358378

379+
#### Document Metadata Management
380+
Administrators can manage comprehensive metadata for each document:
381+
- **Store document information**: Title, URL/location, checksum, description
382+
- **Integrity verification**: Support for SHA-256, SHA-512, and MD5 checksums
383+
- **Easy access**: One-click copy for checksums, clickable document URLs
384+
- **Automatic timestamps**: Track creation and updates with PostgreSQL triggers
385+
- **Email integration**: Document URL automatically included in reminder emails
386+
359387
#### Expected Signers Feature
360388
Administrators can define and track expected signers for each document:
361389
- **Add expected signers**: Paste emails separated by newlines, commas, or semicolons
390+
- **Support names**: Use format "Name <email@example.com>" for personalized emails
362391
- **Track completion**: Visual progress bar with completion percentage
363392
- **Monitor status**: See who signed (✓) vs. who is pending (⏳)
393+
- **Email reminders**: Send bulk or selective reminders in user's language
364394
- **Detect unexpected signatures**: Identify users who signed but weren't expected
365395
- **Share easily**: One-click copy of document signature link
366396
- **Bulk management**: Add/remove signers individually or in batch

README_FR.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,11 +262,25 @@ CREATE TABLE expected_signers (
262262
id BIGSERIAL PRIMARY KEY,
263263
doc_id TEXT NOT NULL,
264264
email TEXT NOT NULL,
265+
name TEXT NOT NULL DEFAULT '', -- Nom d'affichage (optionnel)
265266
added_at TIMESTAMPTZ NOT NULL DEFAULT now(),
266267
added_by TEXT NOT NULL, -- Admin qui a ajouté
267268
notes TEXT,
268269
UNIQUE (doc_id, email) -- Une attente par email/doc
269270
);
271+
272+
-- Table des métadonnées de documents
273+
CREATE TABLE documents (
274+
doc_id TEXT PRIMARY KEY,
275+
title TEXT NOT NULL DEFAULT '',
276+
url TEXT NOT NULL DEFAULT '', -- Emplacement du document
277+
checksum TEXT NOT NULL DEFAULT '', -- SHA-256/SHA-512/MD5
278+
checksum_algorithm TEXT NOT NULL DEFAULT 'SHA-256',
279+
description TEXT NOT NULL DEFAULT '',
280+
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
281+
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
282+
created_by TEXT NOT NULL DEFAULT ''
283+
);
270284
```
271285

272286
**Garanties** :
@@ -275,6 +289,7 @@ CREATE TABLE expected_signers (
275289
-**Intégrité** : Hachage SHA-256 pour détecter modifications
276290
-**Non-répudiation** : Signature Ed25519 cryptographiquement prouvable
277291
-**Suivi** : Signataires attendus pour monitoring de complétion
292+
-**Métadonnées** : Informations de documents avec URL, checksum et description
278293

279294
---
280295

@@ -356,6 +371,11 @@ ACKIFY_MAIL_PASSWORD="${SMTP_PASSWORD}"
356371
- `GET /admin/docs/{docID}` - Détails du document avec gestion des signataires attendus
357372
- `POST /admin/docs/{docID}/expected` - Ajouter des signataires attendus
358373
- `POST /admin/docs/{docID}/expected/remove` - Retirer un signataire attendu
374+
- `POST /admin/docs/{docID}/reminders/send` - Envoyer des rappels par email aux lecteurs en attente
375+
- `GET /admin/docs/{docID}/reminders/history` - Obtenir l'historique des rappels en JSON
376+
- `GET /admin/docs/{docID}/metadata` - Obtenir les métadonnées du document en JSON
377+
- `POST /admin/docs/{docID}/metadata` - Créer ou mettre à jour les métadonnées du document
378+
- `DELETE /admin/docs/{docID}/metadata` - Supprimer les métadonnées du document
359379
- `GET /admin/docs/{docID}/status.json` - Statut du document en JSON (AJAX)
360380
- `GET /admin/api/chain-integrity/{docID}` - Vérification d'intégrité de chaîne (JSON)
361381

@@ -364,11 +384,21 @@ Contrôle d'accès: définir `ACKIFY_ADMIN_EMAILS` avec des emails admins, sépa
364384
ACKIFY_ADMIN_EMAILS="alice@entreprise.com,bob@entreprise.com"
365385
```
366386

387+
#### Gestion des Métadonnées de Documents
388+
Les administrateurs peuvent gérer des métadonnées complètes pour chaque document :
389+
- **Stocker les informations** : Titre, URL/emplacement, checksum, description
390+
- **Vérification d'intégrité** : Support pour les checksums SHA-256, SHA-512 et MD5
391+
- **Accès facile** : Copie en un clic pour les checksums, URLs de documents cliquables
392+
- **Horodatage automatique** : Suivi de la création et des mises à jour avec triggers PostgreSQL
393+
- **Intégration email** : URL du document automatiquement incluse dans les emails de rappel
394+
367395
#### Fonctionnalité Signataires Attendus
368396
Les administrateurs peuvent définir et suivre les signataires attendus pour chaque document :
369397
- **Ajouter des signataires** : Coller des emails séparés par des sauts de ligne, virgules ou point-virgules
398+
- **Support des noms** : Utiliser le format "Nom <email@example.com>" pour les emails personnalisés
370399
- **Suivre la complétion** : Barre de progression visuelle avec pourcentage
371400
- **Monitorer le statut** : Voir qui a signé (✓) vs. qui est en attente (⏳)
401+
- **Rappels par email** : Envoyer des rappels en masse ou sélectifs dans la langue de l'utilisateur
372402
- **Détecter les signatures inattendues** : Identifier les utilisateurs qui ont signé sans être attendus
373403
- **Partage facile** : Copie en un clic du lien de signature du document
374404
- **Gestion en masse** : Ajouter/retirer des signataires individuellement ou en lot

0 commit comments

Comments
 (0)