diff --git a/README.md b/README.md
index 0e8219e5..af0a4bf7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+# La liste des document d'architecture du projet StudTraj se trouve dans docs/ ainsi que liste des prompts
+
# 📊 StudTraj - Student Trajectory Analysis Platform
**StudTraj** est une plateforme web d'analyse des trajectoires d'apprentissage des étudiants en programmation. Elle permet aux enseignants de suivre et d'analyser les tentatives de résolution d'exercices de leurs étudiants grâce à des visualisations avancées et des analyses vectorielles.
@@ -181,32 +183,8 @@ Content-Type: application/json
### Documentation technique
La documentation complète du code est générée automatiquement avec phpDocumentor :
-- Consultez [`docs/README_DOC.md`](docs/README_DOC.md)
-- Ouvrez `docs/index.html` dans votre navigateur pour la documentation interactive
-
-### Statistiques du projet
-- **Fichiers PHP :** 38
-- **Lignes de code :** ~4559
-- **Version PHP :** 7.4+
-
----
+- https://enzobagnis.github.io/SAE/
-## 🧪 Tests et qualité du code
-
-### Lancer les tests
-```bash
-vendor/bin/phpunit
-```
-
-### Vérifier le style de code
-```bash
-vendor/bin/phpcs
-```
-
-### Corriger automatiquement le style
-```bash
-vendor/bin/php-cs-fixer fix
-```
---
@@ -241,10 +219,10 @@ Ce projet est développé dans le cadre d'une SAE (Situation d'Apprentissage et
## 👥 Auteurs
- **Équipe StudTraj**
-- **Ilan Stefanovitch**
- **Enzo Bagnis**
- **Hamza Koliaï**
- **Jean-Baptiste Pibouleau**
+- **William Marcus**
---
diff --git a/docs/README_DOC.md b/docs/README_DOC.md
deleted file mode 100644
index db2e9669..00000000
--- a/docs/README_DOC.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# 📚 Documentation du projet SAE
-
-**Documentation générée automatiquement le 2025-11-05 11:07:30 UTC**
-
-## 📖 Structure du projet
-
-### Fichiers PHP principaux
-
-- `./models/Code2VecService.php`
-- `./models/Database.php`
-- `./models/Exercise.php`
-- `./models/EmailService.php`
-- `./models/Resource.php`
-- `./models/PendingRegistration.php`
-- `./models/Student.php`
-- `./models/Dataset.php`
-- `./models/User.php`
-- `./controllers/HomeController.php`
-- `./controllers/BaseController.php`
-- `./sitemap.php`
-- `./config/router.php`
-- `./cron/cleanup.php`
-- `./index.php`
-
-## 📊 Statistiques
-
-- **Nombre de fichiers PHP:** 38
-- **Lignes de code PHP:** 4559
-- **Version PHP du projet:** 7.4
-- **Version PHP pour la documentation:** 8.2
-
-## 🔗 Accès à la documentation complète
-
-La documentation complète générée par phpDocumentor est disponible dans le dossier `docs/`.
-
-Ouvrez `docs/index.html` dans votre navigateur pour consulter la documentation interactive.
-
----
-
-_Documentation générée automatiquement par GitHub Actions - Pipeline CI/CD_
diff --git a/docs/architecture_BD/BD_01-12-2025.png b/docs/architecture_BD/BD_01-12-2025.png
new file mode 100644
index 00000000..f83672ca
Binary files /dev/null and b/docs/architecture_BD/BD_01-12-2025.png differ
diff --git a/docs/architecture_BD/BD_09-03-2026.png b/docs/architecture_BD/BD_09-03-2026.png
new file mode 100644
index 00000000..cf4a1bec
Binary files /dev/null and b/docs/architecture_BD/BD_09-03-2026.png differ
diff --git a/docs/architecture_BD/BD_11-03-2026.png b/docs/architecture_BD/BD_11-03-2026.png
new file mode 100644
index 00000000..1ab94c99
Binary files /dev/null and b/docs/architecture_BD/BD_11-03-2026.png differ
diff --git a/docs/architecture_code/Architecture-09-03-2026.png b/docs/architecture_code/Architecture-09-03-2026.png
new file mode 100644
index 00000000..111c6baf
Binary files /dev/null and b/docs/architecture_code/Architecture-09-03-2026.png differ
diff --git a/docs/architecture_code/Architecture_13-02-2026.png b/docs/architecture_code/Architecture_13-02-2026.png
new file mode 100644
index 00000000..c3a41866
Binary files /dev/null and b/docs/architecture_code/Architecture_13-02-2026.png differ
diff --git a/docs/architecture_code/Architecture_16-01-2026.png b/docs/architecture_code/Architecture_16-01-2026.png
new file mode 100644
index 00000000..2e346016
Binary files /dev/null and b/docs/architecture_code/Architecture_16-01-2026.png differ
diff --git a/docs/classes/BaseController.html b/docs/classes/BaseController.html
deleted file mode 100644
index 642762fb..00000000
--- a/docs/classes/BaseController.html
+++ /dev/null
@@ -1,567 +0,0 @@
-
-
-
Parse and validate a string containing one or more RFC822-style comma-separated email addresses
-of the form "display name <address>" into an array of name/address pairs.
Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer
-can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still
-be modified after calling this function), addition of such addresses is delayed until send().
Parse a string containing one or more RFC822-style comma-separated email addresses
-with the form "display name <address>" into an array of name/address pairs.
The lower maximum line length allowed by RFC 2822 section 2.1.1.
-
-
-
- public
- int
- STD_LINE_LENGTH
- = 76
-
-
-
-
This length does NOT include the line break
-76 means that lines will be 77 or 78 chars depending on whether
-the line break format is LF or CRLF; both are valid.
-
-
-
-
-
-
-
-
-
-
- STOP_CONTINUE
-
-
-
-
-
-
-
Error severity: message, likely ok to continue processing.
The function that handles the result of the send email action.
-It is called out by send() for each email sent.
-
Value can be any php callable: https://www.php.net/is_callable
-
Parameters:
-bool $result result of the send action
-array $to email addresses of the recipients
-array $cc cc email addresses
-array $bcc bcc email addresses
-string $subject the subject
-string $body the email body
-string $from email address of sender
-string $extra extra information of possible use
-'smtp_transaction_id' => last smtp transaction id
-
-
-
-
-
-
-
-
-
-
-
-
- $AllowEmpty
-
-
-
-
-
-
-
-
Whether to allow sending messages with an empty body.
This body can be read by mail clients that do not have HTML email
-capability such as mutt & Eudora.
-Clients that can read HTML will view the normal Body.
-
-
-
-
-
-
-
-
-
-
-
-
- $AuthType
-
-
-
-
-
-
-
-
SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2.
-
-
-
- public
- string
- $AuthType
- = ''
-
-
If not specified, the first one from that list that the server supports will be selected.
html Output escaped, line breaks converted to <br>, appropriate for browser output
-
error_log Output to error log as configured in php.ini
-By default PHPMailer will use echo if run from a cli or cli-server SAPI, html otherwise.
-Alternatively, you can provide a callable expecting two params: a message string and the debug level:
Comma separated list of DSN notifications
-'NEVER' under no circumstances a DSN must be returned to the sender.
-
-
-
- public
- mixed
- $dsn
- = ''
-
-
If you use NEVER all other notifications will be ignored.
-'SUCCESS' will notify you when your mail has arrived at its destination.
-'FAILURE' will arrive if an error occurred during delivery.
-'DELAY' will notify you if there is an unusual delay in delivery, but the actual
-delivery's outcome (success or failure) is not yet decided.
Either a single hostname or multiple semicolon-delimited hostnames.
-You can also specify a different port
-for each host by using this format: [hostname:port]
-(e.g. "smtp1.example.com:25;smtp2.example.com").
-You can also specify encryption type, for example:
-(e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465").
-Hosts will be tried in order.
-
-
-
-
-
-
-
-
-
-
-
-
- $Hostname
-
-
-
-
-
-
-
-
The hostname to use in the Message-ID header and as default HELO string.
-
-
-
- public
- string
- $Hostname
- = ''
-
-
If empty, PHPMailer attempts to find one with, in order,
-$_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value
-'localhost.localdomain'.
If empty, a unique id will be generated.
-You can set your own, but it must be in the format "id@domain",
-as defined in RFC5322 section 3.6.4 or it will be ignored.
Options: null (default), 1 = High, 3 = Normal, 5 = low.
-When null, the header is not set at all.
-
-
-
-
-
-
-
-
-
-
-
-
- $Sender
-
-
-
-
-
-
-
-
The envelope sender of the message.
-
-
-
- public
- string
- $Sender
- = ''
-
-
This will usually be turned into a Return-Path header by the receiver,
-and is the address that bounces will be sent to.
-If not empty, will be passed via -f to sendmail or as the 'MAIL FROM' value over SMTP.
If this is set to true then the connection will remain open after a send,
-and closing the connection will require an explicit call to smtpClose().
-It's a good idea to use this if you are sending multiple messages as it reduces overhead.
-See the mailing list example for how to use it.
-
-
-
-
-
-
-
-
-
-
-
-
- $SMTPOptions
-
-
-
-
-
-
-
-
Options array passed to stream_context_create when connecting via SMTP.
May be a callable to inject your own validator, but there are several built-in validators.
-The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option.
-
If CharSet is UTF8, the validator is left at the default value,
-and you send to addresses that use non-ASCII local parts, then
-PHPMailer automatically changes to the 'eai' validator.
In send(), valid and non duplicate entries are moved to $all_recipients
-and one of $to, $cc, or $bcc.
-This array is used only for addresses with IDN.
Never use a user-supplied path to a file!
-Returns false if the file could not be found or read.
-Explicitly does not support passing URLs; PHPMailer is not an HTTP client.
-If you need to do that, fetch the resource yourself and pass it in via a local file or string.
-
-
-
Parameters
-
-
- $path
- : string
-
-
-
Path to the attachment
-
-
-
-
- $name
- : string
- = ''
-
-
Overrides the attachment name
-
-
-
-
- $encoding
- : string
- = self::ENCODING_BASE64
-
-
File encoding (see $Encoding)
-
-
-
-
- $type
- : string
- = ''
-
-
MIME type, e.g. image/jpeg; determined automatically from $path if not specified
This can include images, sounds, and just about any other document type.
-These differ from 'regular' attachments in that they are intended to be
-displayed inline with the message, not just attached for download.
-This is used in HTML messages that embed the images
-the HTML refers to using the $cid value in img tags, for example <img src="cid:mylogo">.
-Never use a user-supplied path to a file!
-
-
-
Parameters
-
-
- $path
- : string
-
-
-
Path to the attachment
-
-
-
-
- $cid
- : string
-
-
-
Content ID of the attachment; Use this to reference
-the content when using an embedded image in HTML
-
-
-
-
- $name
- : string
- = ''
-
-
Overrides the attachment filename
-
-
-
-
- $encoding
- : string
- = self::ENCODING_BASE64
-
-
File encoding (see $Encoding) defaults to base64
-
-
-
-
- $type
- : string
- = ''
-
-
File MIME type (by default mapped from the $path filename's extension)
-
-
-
-
- $disposition
- : string
- = 'inline'
-
-
Disposition to use: inline (default) or attachment
-(unlikely you want this – addAttachment() instead)
An array of recipients,
-where each recipient is a 2-element indexed array with element 0 containing an address
-and element 1 containing a name, like:
-[['joe@example.com', 'Joe user'], ['zoe@example.com', 'Zoe user']]
This can include images, sounds, and just about any other document type.
-If your filename doesn't contain an extension, be sure to set the $type to an appropriate MIME type.
-
-
-
Parameters
-
-
- $string
- : string
-
-
-
The attachment binary data
-
-
-
-
- $cid
- : string
-
-
-
Content ID of the attachment; Use this to reference
-the content when using an embedded image in HTML
-
-
-
-
- $name
- : string
- = ''
-
-
A filename for the attachment. If this contains an extension,
-PHPMailer will attempt to set a MIME type for the attachment.
-For example 'file.jpg' would get an 'image/jpeg' MIME type.
-
-
-
-
- $encoding
- : string
- = self::ENCODING_BASE64
-
-
File encoding (see $Encoding), defaults to 'base64'
-
-
-
-
- $type
- : string
- = ''
-
-
MIME type - will be used in preference to any automatically derived type
Picks shortest of Q, B, or none. Result includes folding if needed.
-See RFC822 definitions for phrase, comment and text positions,
-and RFC2047 for inline encodings.
Technically this is the value from the last time the headers were created,
-but it's also the message ID of the last sent message except in
-pathological cases.
This is used by msgHTML().
-Note - older versions of this function used a bundled advanced converter
-which was removed for license reasons in #232.
-Example usage:
-
//Use default conversion
-$plain = $mail->html2text($html);
-//Use your own custom converter
-$plain = $mail->html2text($html, function($html) {
- $converter = new MyHtml2text($html);
- return $converter->get_text();
-});
-
-
-
-
Parameters
-
-
- $html
- : string
-
-
-
The HTML text to convert
-
-
-
-
- $advanced
- : bool|callable
- = false
-
-
Any boolean value to use the internal converter,
-or provide your own callable for custom conversion.
-Never* pass user-supplied data into this parameter
-
-
-
-
-
-
-
-
-
-
-
Return values
- string
-
-
-
-
-
- idnSupported()
-
-
-
-
-
-
Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the
-`intl` and `mbstring` PHP extensions.
-
-
- public
- staticidnSupported() : bool
-
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
- —
-
true if required functions for IDN support are present
Automatically inlines images and creates a plain-text version by converting the HTML,
-overwriting any existing values in Body and AltBody.
-Do not source $message content from user input!
-$basedir is prepended when handling relative URLs, e.g. and must not be empty
-will look for an image file in $basedir/images/a.png and convert it to inline.
-If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)
-Converts data-uri images into embedded attachments.
-If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.
-
-
-
Parameters
-
-
- $message
- : string
-
-
-
HTML message string
-
-
-
-
- $basedir
- : string
- = ''
-
-
Absolute path to a base directory to prepend to relative paths to images
-
-
-
-
- $advanced
- : bool|callable
- = false
-
-
Whether to use the internal HTML to text converter
-or your own custom converter
Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format.
-Defaults to CRLF (for message bodies) and preserves consecutive breaks.
-
-
-
Parameters
-
-
- $text
- : string
-
-
-
-
-
- $breaktype
- : string
- = null
-
-
What kind of line break to use; defaults to static::$LE
-
-
-
-
-
-
-
-
-
-
-
Return values
- string
-
-
-
-
-
- parseAddresses()
-
-
-
-
-
-
Parse and validate a string containing one or more RFC822-style comma-separated email addresses
-of the form "display name <address>" into an array of name/address pairs.
Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet.
-This function silently returns unmodified address if:
-
-
No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form)
-
Conversion to punycode is impossible (e.g. required PHP functions are not available)
-or fails for any reason (e.g. domain contains characters not allowed in an IDN).
You should avoid this function - it's more verbose, less efficient, more error-prone and
-harder to debug than setting properties directly.
-Usage Example:
-$mail->set('SMTPSecure', static::ENCRYPTION_STARTTLS);
-is the same as:
-$mail->SMTPSecure = static::ENCRYPTION_STARTTLS;.
-
-
-
Parameters
-
-
- $name
- : string
-
-
-
The property name to set
-
-
-
-
- $value
- : mixed
- = ''
-
-
The value to set the property to
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- setBoundaries()
-
-
-
-
-
-
Set the boundaries to use for delimiting MIME parts.
-
-
- public
- setBoundaries() : void
-
-
-
-
-
If you override this, ensure you set all 3 boundaries to unique values.
-The default boundaries include a "=_" sequence which cannot occur in quoted-printable bodies,
-as suggested by https://www.rfc-editor.org/rfc/rfc2045#section-6.7
ISO 639-1 2-character language code (e.g. French is "fr")
-Optionally, the language code can be enhanced with a 4-character
-script annotation and/or a 2-character country annotation.
-
-
-
-
- $lang_path
- : string
- = ''
-
-
Path to the language file directory, with trailing separator (slash)
-Do not set this from user input!
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
- —
-
Returns true if the requested language was loaded, false otherwise.
Wraps the message body to the number of chars set in the WordWrap property.
-You should only do this to plain-text bodies as wrapping HTML tags may break them.
-This is called automatically by createBody(), so you don't need to call it yourself.
-
-
-
-
-
-
-
-
-
-
-
- sign()
-
-
-
-
-
-
Set the public and private key files and password for S/MIME signing.
true on success, false if address already used or invalid in some way
-
-
-
-
-
-
-
- addOrEnqueueAnAddress()
-
-
-
-
-
-
Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer
-can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still
-be modified after calling this function), addition of such addresses is delayed until send().
Parse a string containing one or more RFC822-style comma-separated email addresses
-with the form "display name <address>" into an array of name/address pairs.
Uses a simpler parser that does not require the IMAP extension but doesnt support
-the full RFC822 spec. For full RFC822 support, use the PHP IMAP extension.
-
-
-
Parameters
-
-
- $addrstr
- : string
-
-
-
The address list string
-
-
-
-
- $charset
- : string
-
-
-
The charset to use when decoding the address list string.
Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication.
-
-
This class does not support APOP authentication.
-
Opening and closing lots of POP3 connections can be quite slow. If you need
-to send a batch of emails then just perform the authentication once at the start,
-and then loop through your mail sending script. Providing this process doesn't
-take longer than the verification period lasts on your POP3 server, you should be fine.
-
This is really ancient technology; you should only need to use it to talk to very old systems.
-
This POP3 class is deliberately lightweight and incomplete, implementing just
-enough to do authentication.
-If you want a more complete class there are other POP3 classes for PHP available.
html Output escaped, line breaks converted to <br>, appropriate for browser output
-
error_log Output to error log as configured in php.ini
-Alternatively, you can provide a callable expecting two params: a message string and the debug level:
How long to wait for commands to complete, in seconds.
-
-
-
- public
- int
- $Timelimit
- = 300
-
-
Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2.
-
-
-
-
-
-
-
-
-
-
-
-
- $Timeout
-
-
-
-
-
-
-
-
The timeout value for connection, in seconds.
-
-
-
- public
- int
- $Timeout
- = 300
-
-
Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2.
-This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
Indexes of the array are extension names.
-Value at index 'HELO' or 'EHLO' (according to command that was sent)
-represents the server name. In case of HELO it is the only element of the array.
-Other values can be boolean TRUE or an array containing extension options.
-If null, no HELO/EHLO string has yet been received.
Optionally, the command this is part of, used only for controlling debug output
-
-
-
-
-
-
-
-
-
-
-
Return values
- int|bool
- —
-
The number of bytes sent to the server or false on error
-
-
-
-
-
-
-
- close()
-
-
-
-
-
-
Close the socket and clean up the state of the class.
-
-
- public
- close() : mixed
-
-
-
-
-
Don't use this function without first trying to use QUIT.
-
-
-
-
-
- Tags
-
-
-
-
-
- see
-
-
- quit()
-
-
-
-
-
-
-
-
-
-
-
- connect()
-
-
-
-
-
-
Connect to an SMTP server.
-
-
- public
- connect(string $host[, int $port = null ][, int $timeout = 30 ][, array<string|int, mixed> $options = [] ]) : bool
-
-
-
-
-
-
Parameters
-
-
- $host
- : string
-
-
-
SMTP server IP or host name
-
-
-
-
- $port
- : int
- = null
-
-
The port number to connect to
-
-
-
-
- $timeout
- : int
- = 30
-
-
How long to wait for the connection to open
-
-
-
-
- $options
- : array<string|int, mixed>
- = []
-
-
An array of options for stream_context_create()
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- connected()
-
-
-
-
-
-
Check connection state.
-
-
- public
- connected() : bool
-
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
- —
-
True if connected
-
-
-
-
-
-
-
- data()
-
-
-
-
-
-
Send an SMTP DATA command.
-
-
- public
- data(string $msg_data) : bool
-
-
-
-
-
Issues a data command and sends the msg_data to the server,
-finalizing the mail transaction. $msg_data is the message
-that is to be sent with the headers. Each header needs to be
-on a single line followed by a <CRLF> with the message headers
-and the message body being separated by an additional <CRLF>.
-Implements RFC 821: DATA <CRLF>.
The method works in three ways, dependent on argument value and current state:
-
-
HELO/EHLO has not been sent - returns null and populates $this->error.
-
HELO has been sent -
-$name == 'HELO': returns server name
-$name == 'EHLO': returns boolean false
-$name == any other string: returns null and populates $this->error
-
EHLO has been sent -
-$name == 'HELO'|'EHLO': returns the server name
-$name == any other string: if extension $name exists, returns True
-or its options (e.g. AUTH mechanisms supported). Otherwise returns False.
Used to identify the sending server to the receiving server.
-This makes sure that client and server are in a known state.
-Implements RFC 821: HELO <SP> <CRLF>
-and RFC 2821 EHLO.
-
-
-
Parameters
-
-
- $host
- : string
- = ''
-
-
The host name or IP to connect to
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- mail()
-
-
-
-
-
-
Send an SMTP MAIL command.
-
-
- public
- mail(string $from) : bool
-
-
-
-
-
Starts a mail transaction from the email address specified in
-$from. Returns true if successful or false otherwise. If True
-the mail transaction is started and then one or more recipient
-commands may be called followed by a data command.
-Implements RFC 821: MAIL <SP> FROM: <CRLF> and
-two extensions, namely XVERP and SMTPUTF8.
-
The server's EHLO response is not checked. If use of either
-extensions is enabled even though the server does not support
-that, mail submission will fail.
-
XVERP is documented at https://www.postfix.org/VERP_README.html
-and SMTPUTF8 is specified in RFC 6531.
-
-
-
Parameters
-
-
- $from
- : string
-
-
-
Source address of this message
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- noop()
-
-
-
-
-
-
Send an SMTP NOOP command.
-
-
- public
- noop() : bool
-
-
-
-
-
Used to keep keep-alives alive, doesn't actually do anything.
Starts a mail transaction from the email address specified in $from.
-Returns true if successful or false otherwise. If True
-the mail transaction is started and then one or more recipient
-commands may be called followed by a data command. This command
-will send the message to the users terminal if they are logged
-in and send them an email.
-Implements RFC 821: SAML <SP> FROM: <CRLF>.
This is an optional command for SMTP that this class does not support.
-This method is here to make the RFC821 Definition complete for this class
-and may be implemented in future.
-Implements from RFC 821: TURN <CRLF>.
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- verify()
-
-
-
-
-
-
Send an SMTP VRFY command.
-
-
- public
- verify(string $name) : bool
-
-
-
-
-
-
Parameters
-
-
- $name
- : string
-
-
-
The name to verify
-
-
-
-
-
-
-
-
-
-
-
Return values
- bool
-
-
-
-
-
- xclient()
-
-
-
-
-
-
Send SMTP XCLIENT command to server and check its return code.
Either before eof or socket timeout occurs on the operation.
-With SMTP we can tell if we have more lines to read if the
-4th character is '-' symbol. If it is a space then we don't
-need to read anything else.
Relies on the host providing the ID in response to a DATA command.
-If no reply has been received yet, it will return null.
-If no pattern was matched, it will return false.
-
-
-
-
-
-
-
-
-
Return values
- bool|string|null
-
-
-
-
-
- sendCommand()
-
-
-
-
-
-
Send a command to an SMTP server and check its return code.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
-
-
-
-
- note
-
-
-
-
This program is distributed in the hope that it will be useful - WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/js/search.js b/docs/js/search.js
deleted file mode 100644
index 093d6d03..00000000
--- a/docs/js/search.js
+++ /dev/null
@@ -1,173 +0,0 @@
-// Search module for phpDocumentor
-//
-// This module is a wrapper around fuse.js that will use a given index and attach itself to a
-// search form and to a search results pane identified by the following data attributes:
-//
-// 1. data-search-form
-// 2. data-search-results
-//
-// The data-search-form is expected to have a single input element of type 'search' that will trigger searching for
-// a series of results, were the data-search-results pane is expected to have a direct UL child that will be populated
-// with rendered results.
-//
-// The search has various stages, upon loading this stage the data-search-form receives the CSS class
-// 'phpdocumentor-search--enabled'; this indicates that JS is allowed and indices are being loaded. It is recommended
-// to hide the form by default and show it when it receives this class to achieve progressive enhancement for this
-// feature.
-//
-// After loading this module, it is expected to load a search index asynchronously, for example:
-//
-//
-//
-// In this script the generated index should attach itself to the search module using the `appendIndex` function. By
-// doing it like this the page will continue loading, unhindered by the loading of the search.
-//
-// After the page has fully loaded, and all these deferred indexes loaded, the initialization of the search module will
-// be called and the form will receive the class 'phpdocumentor-search--active', indicating search is ready. At this
-// point, the input field will also have it's 'disabled' attribute removed.
-var Search = (function () {
- var fuse;
- var index = [];
- var options = {
- shouldSort: true,
- threshold: 0.6,
- location: 0,
- distance: 100,
- maxPatternLength: 32,
- minMatchCharLength: 1,
- keys: [
- "fqsen",
- "name",
- "summary",
- "url"
- ]
- };
-
- // Credit David Walsh (https://davidwalsh.name/javascript-debounce-function)
- // Returns a function, that, as long as it continues to be invoked, will not
- // be triggered. The function will be called after it stops being called for
- // N milliseconds. If `immediate` is passed, trigger the function on the
- // leading edge, instead of the trailing.
- function debounce(func, wait, immediate) {
- var timeout;
-
- return function executedFunction() {
- var context = this;
- var args = arguments;
-
- var later = function () {
- timeout = null;
- if (!immediate) func.apply(context, args);
- };
-
- var callNow = immediate && !timeout;
- clearTimeout(timeout);
- timeout = setTimeout(later, wait);
- if (callNow) func.apply(context, args);
- };
- }
-
- function close() {
- // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
- const scrollY = document.body.style.top;
- document.body.style.position = '';
- document.body.style.top = '';
- window.scrollTo(0, parseInt(scrollY || '0') * -1);
- // End scroll prevention
-
- var form = document.querySelector('[data-search-form]');
- var searchResults = document.querySelector('[data-search-results]');
-
- form.classList.toggle('phpdocumentor-search--has-results', false);
- searchResults.classList.add('phpdocumentor-search-results--hidden');
- var searchField = document.querySelector('[data-search-form] input[type="search"]');
- searchField.blur();
- }
-
- function search(event) {
- // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
- document.body.style.position = 'fixed';
- document.body.style.top = `-${window.scrollY}px`;
- // End scroll prevention
-
- // prevent enter's from autosubmitting
- event.stopPropagation();
-
- var form = document.querySelector('[data-search-form]');
- var searchResults = document.querySelector('[data-search-results]');
- var searchResultEntries = document.querySelector('[data-search-results] .phpdocumentor-search-results__entries');
-
- searchResultEntries.innerHTML = '';
-
- if (!event.target.value) {
- close();
- return;
- }
-
- form.classList.toggle('phpdocumentor-search--has-results', true);
- searchResults.classList.remove('phpdocumentor-search-results--hidden');
- var results = fuse.search(event.target.value, {limit: 25});
-
- results.forEach(function (result) {
- var entry = document.createElement("li");
- entry.classList.add("phpdocumentor-search-results__entry");
- entry.innerHTML += '
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/prompt.txt b/docs/prompt.txt
new file mode 100644
index 00000000..df62c307
--- /dev/null
+++ b/docs/prompt.txt
@@ -0,0 +1,87 @@
+- Donnes moi des idées de graphique interactif
+- Expliques moi comment mieux mettre en avant des données dans des graphes
+- Donnes une liste de graphes à mettre en priorité pour montrer les données
+- Explique moi comment je dois m'y prendre pour re structurer mon code
+- Génère moi la documentation de mon projet
+- Génère moi le CSS de mon projet en utilisant le CSS des pages de base
+- Fait une belle page d'erreur 500
+- Fait moi une belle page d'erreur 404
+- Que signifie ce message d'erreur "{inserer n'importe quelle erreur}" et comment la corriger
+- Tu es un expert en Clean Architecture, DDD et principes SOLID. Ta mission est d'auditer la base de code fournie et de produire un rapport d'audit complet.
+
+ CE QUE TU DOIS VÉRIFIER
+
+ 1. Séparation des couches
+ Identifie les couches présentes (Domain, Application, Infrastructure, Presentation ou équivalent).
+ Vérifie que :
+ - Les couches internes ne dépendent JAMAIS des couches externes
+ - Le Domain ne connaît ni la base de données, ni le framework, ni l'UI
+ - L'Application ne connaît pas l'Infrastructure (pas d'imports directs d'ORM, de HTTP, de fichiers système...)
+ - Les dépendances pointent toujours vers l'intérieur
+
+ 2. Règle de dépendance
+ Pour chaque import/dépendance dans le code, détermine si elle respecte la direction autorisée.
+ Signale chaque violation avec le fichier, la ligne, et pourquoi c'est une violation.
+
+ 3. Responsabilité des classes
+ - Les entités du domaine contiennent-elles de la logique métier ou sont-elles de simples conteneurs de données (anémiques) ?
+ - Les services applicatifs font-ils uniquement de l'orchestration ou contiennent-ils de la logique métier qui devrait être dans le domaine ?
+ - Les repositories sont-ils des abstractions ou des accès directs à la DB ?
+
+ 4. Cas d'utilisation / Use Cases
+ - Chaque action utilisateur a-t-elle un use case dédié ?
+ - Les use cases sont-ils trop larges (font trop de choses) ou trop fragmentés ?
+
+ 5. Dépendances vers des détails techniques
+ Détecte les endroits où du code métier dépend directement de :
+ - Un ORM spécifique (TypeORM, Prisma, Hibernate...)
+ - Un framework HTTP (Express, NestJS, Spring...)
+ - Une librairie de cache, de messaging, de fichiers...
+ Sans passer par une abstraction.
+
+ 6. Cohésion et couplage
+ - Les modules/dossiers regroupent-ils des choses qui changent pour la même raison ?
+ - Y a-t-il des modules qui sont modifiés à chaque nouvelle feature (couplage fort) ?
+
+ FORMAT DU RAPPORT
+ RAPPORT D'AUDIT — Clean Architecture
+ Vue d'ensemble
+ [Résumé en 3-5 phrases de l'état général de l'architecture]
+ Points respectés
+ [Liste des bonnes pratiques détectées]
+ Violations détectées
+ Violation #1 — [Nom court]
+
+ Fichier : chemin/vers/fichier.ts (ligne X)
+ Règle violée : [ex: Dépendance inversée / Séparation des couches / SRP...]
+ Problème : [explication claire]
+ Correction suggérée : [solution concrète]
+
+ [répéter pour chaque violation]
+ Points d'attention (pas des violations mais des risques)
+ [Liste des zones fragiles qui pourraient devenir problématiques]
+ Score par principe
+
+ Séparation des couches : X/10
+ Règle de dépendance : X/10
+ Responsabilité unique : X/10
+ Abstraction des détails techniques : X/10
+ Cohésion des modules : X/10
+
+ Priorités de refactoring
+
+ [Le plus urgent]
+ [...]
+ [...]
+
+ - On a un souci de lisibilité sur le nuage de points Plotly à cause de l'overplotting (trop de points superposés). Est-ce que tu peux me montrer comment forcer une bordure blanche (marker.line) sur les points et augmenter leur size de façon globale ? J'aimerais aussi tester une opacité à 0.8 pour que les trajectoires ressortent mieux sur le fond blanc.
+ - Quelles sont les bonnes pratiques pour gérer les erreurs de AES dans mon pipeline ? Si le script rencontre un code Python mal formé ou une séquence vide, comment je peux faire en sorte que le pipeline continue sur le reste du dataset sans crasher, tout en logguant l'erreur pour PHP ?
+ - Voici les scripts pour faire l'IA et voici un pptx qui est la présentation de l'IA (ce qu'elle est censé faire).
+
+ Je dois faire une IA qui prend les donnés des résultats des étudiants et qui me donne un vecteur en 2 dimensions des trajectoires des étudiants.
+
+ Décris moi comment je peux faire et la structure de mon code.
+ Parle moi aussi des bibliothèques disponibles pour réaliser ce projet.
+ Et parle moi des différentes perspectives d'approche potentielles.
+
+ Tu détailleras bien et expliqueras ton raisonnement
\ No newline at end of file
diff --git a/docs/reports/deprecated.html b/docs/reports/deprecated.html
deleted file mode 100644
index 6a4c4a6f..00000000
--- a/docs/reports/deprecated.html
+++ /dev/null
@@ -1,182 +0,0 @@
-
-
-
-
- SAE Project Documentation » Deprecated elements
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Tag "author" with body "@author Ivan <web AT microstudi DOT com>" has error The author tag does not have a valid e-mail address
-
-
-
-
-
phpmailer.lang-da.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
0
-
Tag "author" with body "@author John Sebastian <jms@iwb.dk>
-Rewrite and extension of the work by Mikael Stokkebro <info@stokkebro.dk>" has error
-
-
-
-
-
phpmailer.lang-fo.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Dávur Sørensen <http://www.profo-webdesign.dk>" has error The author tag does not have a valid e-mail address
-
-
-
-
-
phpmailer.lang-hi.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Yash Karanke <mr.karanke@gmail.com>
-Rewrite and extension of the work by Jayanti Suthar <suthar.jayanti93@gmail.com>" has error
-
-
-
-
-
phpmailer.lang-ja.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
0
-
Tag "author" with body "@author ARAKI Musashi <https://github.com/arakim/>" has error The author tag does not have a valid e-mail address
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Arisophy <https://github.com/arisophy/>" has error The author tag does not have a valid e-mail address
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Yoshi Sakai <http://bluemooninc.jp/>" has error The author tag does not have a valid e-mail address
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Mitsuhiro Yoshida <https://mitstek.com>" has error The author tag does not have a valid e-mail address
-
-
-
-
-
phpmailer.lang-zh.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
0
-
Tag "author" with body "@author Peter Dave Hello <@PeterDaveHello/>" has error The author tag does not have a valid e-mail address
-
-
-
-
-
PHPMailer.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
408
-
Tag "see" with body "@see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed" has error "\PHPMailer\PHPMailer\SMTP::DEBUG_LOWLEVEL:" is not a valid Fqsen.
-
-
-
ERROR
-
408
-
Tag "see" with body "@see SMTP::DEBUG_CONNECTION: As SERVER plus connection status" has error "\PHPMailer\PHPMailer\SMTP::DEBUG_CONNECTION:" is not a valid Fqsen.
-
-
-
ERROR
-
408
-
Tag "see" with body "@see SMTP::DEBUG_SERVER: Client and server messages" has error "\PHPMailer\PHPMailer\SMTP::DEBUG_SERVER:" is not a valid Fqsen.
-
-
-
ERROR
-
408
-
Tag "see" with body "@see SMTP::DEBUG_CLIENT: Client messages" has error "\PHPMailer\PHPMailer\SMTP::DEBUG_CLIENT:" is not a valid Fqsen.
-
-
-
ERROR
-
408
-
Tag "see" with body "@see SMTP::DEBUG_OFF: No output" has error "\PHPMailer\PHPMailer\SMTP::DEBUG_OFF:" is not a valid Fqsen.
-
-
-
-
-
POP3.php
-
-
-
-
Type
-
Line
-
Description
-
-
-
-
-
ERROR
-
75
-
Tag "see" with body "@see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors" has error "\PHPMailer\PHPMailer\POP3::DEBUG_CLIENT:" is not a valid Fqsen.
-
-
-
ERROR
-
75
-
Tag "see" with body "@see POP3::DEBUG_SERVER: Server messages, connection/server errors" has error "\PHPMailer\PHPMailer\POP3::DEBUG_SERVER:" is not a valid Fqsen.
-
-
-
ERROR
-
75
-
Tag "see" with body "@see POP3::DEBUG_OFF: No output" has error "\PHPMailer\PHPMailer\POP3::DEBUG_OFF:" is not a valid Fqsen.