Skip to content

Commit 799174a

Browse files
Merge branch 'monitoring-fields' into 'main'
Added fields to EnrichmentVersion + Config table See merge request disi/innovation/aristote/aristoteapi!92
2 parents 02ebbcb + 9dd4fc8 commit 799174a

40 files changed

+1614
-135
lines changed

.env

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,7 @@ AI_EVALUATION_WORKER_SECRET=
5959
URI_PREFIX=
6060
S3_LINK_EXPIRATION_IN_MINUTES=
6161

62-
TRANSCRIPTION_WORKER_TIMEOUT_IN_MINUTES=
63-
AI_ENRICHMENT_WORKER_TIMEOUT_IN_MINUTES=
64-
AI_EVALUATION_WORKER_TIMEOUT_IN_MINUTES=
65-
66-
MAX_RETRIES=
62+
MAX_UPLOAD_RETRIES=3
6763

6864
AUTO_DELETE_MEDIA_AFTER_TRANSCRIPTION=true
69-
PORTAL_URL=
65+
PORTAL_URL=

.env.test

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,4 @@ DATABASE_URL="postgresql://api:aristote@postgres:5432/aristote-db?serverVersion=
99
OVH_REGION=gra
1010
S3_LINK_EXPIRATION_IN_MINUTES=120
1111

12-
TRANSCRIPTION_WORKER_TIMEOUT_IN_MINUTES=1
13-
AI_ENRICHMENT_WORKER_TIMEOUT_IN_MINUTES=1
14-
AI_EVALUATION_WORKER_TIMEOUT_IN_MINUTES=1
15-
TRANSLATION_WORKER_TIMEOUT_IN_MINUTES=1
16-
17-
MAX_RETRIES=5
12+
MAX_UPLOAD_RETRIES=3

config/admin.yaml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services:
55
- name: sonata.admin
66
model_class: App\Entity\Administrator
77
manager_type: orm
8-
group: Utilisateurs
8+
group: Entités
99
label: Administrateurs
1010
calls:
1111
- [setUserManager, ['@App\Service\UserManager']]
@@ -17,7 +17,7 @@ services:
1717
- name: sonata.admin
1818
model_class: App\Entity\ApiClient
1919
manager_type: orm
20-
group: Utilisateurs
20+
group: Entités
2121
label: Clients API
2222
calls:
2323
- [setApiClientManager, ['@App\Service\ApiClientManager']]
@@ -29,7 +29,7 @@ services:
2929
- name: sonata.admin
3030
model_class: App\Entity\AiModel
3131
manager_type: orm
32-
group: Utilisateurs
32+
group: Entités
3333
label: Modèles IA
3434
public: true
3535

@@ -39,7 +39,7 @@ services:
3939
- name: sonata.admin
4040
model_class: App\Entity\Infrastructure
4141
manager_type: orm
42-
group: Utilisateurs
42+
group: Entités
4343
label: Infrastructures
4444
public: true
4545

@@ -49,6 +49,16 @@ services:
4949
- name: sonata.admin
5050
model_class: App\Entity\Enrichment
5151
manager_type: orm
52-
group: Enrichissements
52+
group: Entités
5353
label: Enrichissements
54-
public: true
54+
public: true
55+
56+
admin.parameter:
57+
class: App\Admin\ParameterAdmin
58+
tags:
59+
- name: sonata.admin
60+
model_class: App\Entity\Parameter
61+
manager_type: orm
62+
group: Entités
63+
label: Paramètres
64+
public: true

config/packages/messenger.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
framework:
22
messenger:
3+
buses:
4+
messenger.bus.default:
5+
middleware:
6+
- 'App\Messenger\RetryCountArgumentAdderMiddleware'
37
transports:
48
# https://symfony.com/doc/current/messenger.html#transport-configuration
59
async:
610
dsn: "%env(MESSENGER_TRANSPORT_DSN)%"
711
options:
812
table_name: "messenger_messages"
913
retry_strategy:
10-
max_retries: 3
14+
max_retries: "%env(int:MAX_UPLOAD_RETRIES)%"
1115
# milliseconds delay
12-
delay: 300000
16+
delay: 1000
1317
# causes the delay to be higher before each retry
1418
# e.g. 1 second delay, 2 seconds, 4 seconds
1519
multiplier: 2

config/services.yaml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ services:
3737
- name: "kernel.event_listener"
3838
event: "league.oauth2_server.event.token_request_resolve"
3939

40+
App\Messenger\RetryCountArgumentAdderMiddleware:
41+
tags:
42+
- { name: messenger.middleware }
43+
4044
League\OAuth2\Server\Repositories\ClientRepositoryInterface:
4145
class: App\Service\ApiClientManager
4246

@@ -108,13 +112,6 @@ services:
108112
arguments:
109113
$enrichmentWorkerService: '@app.translation_worker'
110114

111-
App\Repository\EnrichmentRepository:
112-
arguments:
113-
$maxRetries: "%env(MAX_RETRIES)%"
114-
$transcriptionWorkerTimeoutInMinutes: "%env(TRANSCRIPTION_WORKER_TIMEOUT_IN_MINUTES)%"
115-
$aiEnrichmentWorkerTimeoutInMinutes: "%env(AI_ENRICHMENT_WORKER_TIMEOUT_IN_MINUTES)%"
116-
$aiEvaluationWorkerTimeoutInMinutes: "%env(AI_EVALUATION_WORKER_TIMEOUT_IN_MINUTES)%"
117-
$translationWorkerTimeoutInMinutes: "%env(TRANSLATION_WORKER_TIMEOUT_IN_MINUTES)%"
118115

119116
App\Controller\Api\TranscribingWorkerController:
120117
arguments:
@@ -123,3 +120,7 @@ services:
123120
App\Controller\Api\EnrichmentsController:
124121
arguments:
125122
$autoDeleteMediaAfterTranscription: "%env(bool:AUTO_DELETE_MEDIA_AFTER_TRANSCRIPTION)%"
123+
124+
App\MessageHandler\FileUploadFromUrlMessageHandler:
125+
arguments:
126+
$maxUploadRetries: "%env(int:MAX_UPLOAD_RETRIES)%"

docker-compose.yml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,5 @@ services:
8888
volumes:
8989
- ./minio:/data:rw
9090

91-
pgadmin:
92-
image: dpage/pgadmin4
93-
container_name: aristote-pgadmin
94-
restart: always
95-
ports:
96-
- "8888:80"
97-
environment:
98-
PGADMIN_DEFAULT_EMAIL: aristote@api.com
99-
PGADMIN_DEFAULT_PASSWORD: arisote
100-
volumes:
101-
- pgadmin-data:/var/lib/pgadmin
102-
- ./servers.json:/pgadmin4/servers.json
103-
10491
volumes:
10592
db-data:
106-
pgadmin-data:
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DoctrineMigrations;
6+
7+
use DateTimeImmutable;
8+
use Doctrine\DBAL\Schema\Schema;
9+
use Doctrine\Migrations\AbstractMigration;
10+
11+
/**
12+
* Auto-generated Migration: Please modify to your needs!
13+
*/
14+
final class Version20250426173627 extends AbstractMigration
15+
{
16+
public function getDescription(): string
17+
{
18+
return '';
19+
}
20+
21+
public function up(Schema $schema): void
22+
{
23+
// this up() migration is auto-generated, please modify it to your needs
24+
$this->addSql('ALTER TABLE enrichment ADD initial_enrichment_version_id UUID DEFAULT NULL');
25+
$this->addSql('ALTER TABLE enrichment ADD last_enrichment_version_id UUID DEFAULT NULL');
26+
$this->addSql('ALTER TABLE enrichment ADD enrichment_retries INT DEFAULT 0 NOT NULL');
27+
$this->addSql('ALTER TABLE enrichment ADD translation_retries INT DEFAULT 0 NOT NULL');
28+
$this->addSql('ALTER TABLE enrichment ADD evaluation_retries INT DEFAULT 0 NOT NULL');
29+
$this->addSql('ALTER TABLE enrichment ADD media_text_length INT DEFAULT NULL');
30+
$this->addSql('ALTER TABLE enrichment ADD media_duration_in_seconds INT DEFAULT NULL');
31+
$this->addSql('ALTER TABLE enrichment RENAME COLUMN retries TO transcription_retries');
32+
$this->addSql('ALTER TABLE enrichment RENAME COLUMN transribing_started_at TO transcribing_started_at');
33+
$this->addSql('ALTER TABLE enrichment RENAME COLUMN transribing_ended_at TO transcribing_ended_at');
34+
$this->addSql('COMMENT ON COLUMN enrichment.initial_enrichment_version_id IS \'(DC2Type:uuid)\'');
35+
$this->addSql('COMMENT ON COLUMN enrichment.last_enrichment_version_id IS \'(DC2Type:uuid)\'');
36+
$this->addSql('ALTER TABLE enrichment ADD CONSTRAINT FK_BCDAF6CEA8CB0384 FOREIGN KEY (initial_enrichment_version_id) REFERENCES enrichment_version (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
37+
$this->addSql('ALTER TABLE enrichment ADD CONSTRAINT FK_BCDAF6CEF485E793 FOREIGN KEY (last_enrichment_version_id) REFERENCES enrichment_version (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
38+
$this->addSql('CREATE UNIQUE INDEX UNIQ_BCDAF6CEA8CB0384 ON enrichment (initial_enrichment_version_id)');
39+
$this->addSql('CREATE UNIQUE INDEX UNIQ_BCDAF6CEF485E793 ON enrichment (last_enrichment_version_id)');
40+
$this->addSql('ALTER TABLE enrichment_version ADD initial_enrichment_version_of_id UUID DEFAULT NULL');
41+
$this->addSql('ALTER TABLE enrichment_version ADD last_enrichment_version_of_id UUID DEFAULT NULL');
42+
$this->addSql('ALTER TABLE enrichment_version ADD ai_processed_by_id VARCHAR(80) DEFAULT NULL');
43+
$this->addSql('ALTER TABLE enrichment_version ADD ai_evaluated_by_id VARCHAR(80) DEFAULT NULL');
44+
$this->addSql('ALTER TABLE enrichment_version ADD transcribed_by_id VARCHAR(80) DEFAULT NULL');
45+
$this->addSql('ALTER TABLE enrichment_version ADD translated_by_id VARCHAR(80) DEFAULT NULL');
46+
$this->addSql('ALTER TABLE enrichment_version ADD ai_enrichment_started_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
47+
$this->addSql('ALTER TABLE enrichment_version ADD ai_enrichment_ended_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
48+
$this->addSql('ALTER TABLE enrichment_version ADD transcribing_started_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
49+
$this->addSql('ALTER TABLE enrichment_version ADD transcribing_ended_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
50+
$this->addSql('ALTER TABLE enrichment_version ADD translation_started_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
51+
$this->addSql('ALTER TABLE enrichment_version ADD translation_ended_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
52+
$this->addSql('ALTER TABLE enrichment_version ADD ai_evaluation_started_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
53+
$this->addSql('ALTER TABLE enrichment_version ADD ai_evaluation_ended_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
54+
$this->addSql('ALTER TABLE enrichment_version ADD notified_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
55+
$this->addSql('ALTER TABLE enrichment_version ADD notification_status VARCHAR(255) DEFAULT NULL');
56+
$this->addSql('ALTER TABLE enrichment_version ADD evaluation_mark NUMERIC(6, 3) DEFAULT NULL');
57+
$this->addSql('ALTER TABLE enrichment_version ADD generate_metadata BOOLEAN DEFAULT true NOT NULL');
58+
$this->addSql('ALTER TABLE enrichment_version ADD generate_quiz BOOLEAN DEFAULT true NOT NULL');
59+
$this->addSql('ALTER TABLE enrichment_version ADD generate_notes BOOLEAN DEFAULT false NOT NULL');
60+
$this->addSql('ALTER TABLE enrichment_version ADD failure_cause VARCHAR(255) DEFAULT NULL');
61+
$this->addSql('ALTER TABLE enrichment_version ADD enrichment_retries INT DEFAULT 0 NOT NULL');
62+
$this->addSql('ALTER TABLE enrichment_version ADD translation_retries INT DEFAULT 0 NOT NULL');
63+
$this->addSql('ALTER TABLE enrichment_version ADD evaluation_retries INT DEFAULT 0 NOT NULL');
64+
$this->addSql('COMMENT ON COLUMN enrichment_version.initial_enrichment_version_of_id IS \'(DC2Type:uuid)\'');
65+
$this->addSql('COMMENT ON COLUMN enrichment_version.last_enrichment_version_of_id IS \'(DC2Type:uuid)\'');
66+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B20482AF0314 FOREIGN KEY (initial_enrichment_version_of_id) REFERENCES enrichment (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
67+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B20430B0ECC2 FOREIGN KEY (last_enrichment_version_of_id) REFERENCES enrichment (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
68+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B204C34C8145 FOREIGN KEY (ai_processed_by_id) REFERENCES api_client (identifier) NOT DEFERRABLE INITIALLY IMMEDIATE');
69+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B204CCBB448C FOREIGN KEY (ai_evaluated_by_id) REFERENCES api_client (identifier) NOT DEFERRABLE INITIALLY IMMEDIATE');
70+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B204ED22A2D3 FOREIGN KEY (transcribed_by_id) REFERENCES api_client (identifier) NOT DEFERRABLE INITIALLY IMMEDIATE');
71+
$this->addSql('ALTER TABLE enrichment_version ADD CONSTRAINT FK_C544B204406E6639 FOREIGN KEY (translated_by_id) REFERENCES api_client (identifier) NOT DEFERRABLE INITIALLY IMMEDIATE');
72+
$this->addSql('CREATE UNIQUE INDEX UNIQ_C544B20482AF0314 ON enrichment_version (initial_enrichment_version_of_id)');
73+
$this->addSql('CREATE UNIQUE INDEX UNIQ_C544B20430B0ECC2 ON enrichment_version (last_enrichment_version_of_id)');
74+
$this->addSql('CREATE INDEX IDX_C544B204C34C8145 ON enrichment_version (ai_processed_by_id)');
75+
$this->addSql('CREATE INDEX IDX_C544B204CCBB448C ON enrichment_version (ai_evaluated_by_id)');
76+
$this->addSql('CREATE INDEX IDX_C544B204ED22A2D3 ON enrichment_version (transcribed_by_id)');
77+
$this->addSql('CREATE INDEX IDX_C544B204406E6639 ON enrichment_version (translated_by_id)');
78+
$this->addSql('CREATE TABLE parameter (id UUID NOT NULL, name TEXT NOT NULL, description TEXT NOT NULL, value TEXT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
79+
$this->addSql('CREATE UNIQUE INDEX UNIQ_2A9791105E237E06 ON parameter (name)');
80+
$this->addSql('COMMENT ON COLUMN parameter.id IS \'(DC2Type:uuid)\'');
81+
$this->addSql('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"');
82+
// Insert default parameters
83+
$now = (new DateTimeImmutable())->format('Y-m-d H:i:s');
84+
85+
$this->addSql(sprintf(
86+
"INSERT INTO parameter (id, name, description, value, created_at, updated_at) VALUES
87+
(uuid_generate_v4(), 'MAX_TRANSCRIPTION_RETRIES', 'Maximum number of retries for transcription', '2', '%s', '%s'),
88+
(uuid_generate_v4(), 'MAX_ENRICHMENT_RETRIES', 'Maximum number of retries for enrichment', '2', '%s', '%s'),
89+
(uuid_generate_v4(), 'MAX_TRANSLATION_RETRIES', 'Maximum number of retries for translation', '2', '%s', '%s'),
90+
(uuid_generate_v4(), 'MAX_EVALUATION_RETRIES', 'Maximum number of retries for evaluation', '2', '%s', '%s'),
91+
(uuid_generate_v4(), 'MAX_MEDIA_DURATION_IN_SECONDS', 'Maximum allowed media duration in seconds', '14400', '%s', '%s'),
92+
(uuid_generate_v4(), 'MAX_TEXT_LENGTH', 'Maximum allowed text length', '-1', '%s', '%s'),
93+
(uuid_generate_v4(), 'TRANSCRIPTION_WORKER_TIMEOUT_IN_MINUTES', 'Timeout before retrying transcription', '60', '%s', '%s'),
94+
(uuid_generate_v4(), 'AI_ENRICHMENT_WORKER_TIMEOUT_IN_MINUTES', 'Timeout before retrying enrichment', '60', '%s', '%s'),
95+
(uuid_generate_v4(), 'TRANSLATION_WORKER_TIMEOUT_IN_MINUTES', 'Timeout before retrying translation', '10', '%s', '%s'),
96+
(uuid_generate_v4(), 'AI_EVALUATION_WORKER_TIMEOUT_IN_MINUTES', 'Timeout before retrying evaluation', '120', '%s', '%s')
97+
",
98+
$now, $now,
99+
$now, $now,
100+
$now, $now,
101+
$now, $now,
102+
$now, $now,
103+
$now, $now,
104+
$now, $now,
105+
$now, $now,
106+
$now, $now,
107+
$now, $now,
108+
));
109+
}
110+
111+
public function down(Schema $schema): void
112+
{
113+
// this down() migration is auto-generated, please modify it to your needs
114+
$this->addSql('DROP TABLE parameter');
115+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B20482AF0314');
116+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B20430B0ECC2');
117+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B204C34C8145');
118+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B204CCBB448C');
119+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B204ED22A2D3');
120+
$this->addSql('ALTER TABLE enrichment_version DROP CONSTRAINT FK_C544B204406E6639');
121+
$this->addSql('DROP INDEX UNIQ_C544B20482AF0314');
122+
$this->addSql('DROP INDEX UNIQ_C544B20430B0ECC2');
123+
$this->addSql('DROP INDEX IDX_C544B204C34C8145');
124+
$this->addSql('DROP INDEX IDX_C544B204CCBB448C');
125+
$this->addSql('DROP INDEX IDX_C544B204ED22A2D3');
126+
$this->addSql('DROP INDEX IDX_C544B204406E6639');
127+
$this->addSql('ALTER TABLE enrichment_version DROP initial_enrichment_version_of_id');
128+
$this->addSql('ALTER TABLE enrichment_version DROP last_enrichment_version_of_id');
129+
$this->addSql('ALTER TABLE enrichment_version DROP ai_processed_by_id');
130+
$this->addSql('ALTER TABLE enrichment_version DROP ai_evaluated_by_id');
131+
$this->addSql('ALTER TABLE enrichment_version DROP transcribed_by_id');
132+
$this->addSql('ALTER TABLE enrichment_version DROP translated_by_id');
133+
$this->addSql('ALTER TABLE enrichment_version DROP ai_enrichment_started_at');
134+
$this->addSql('ALTER TABLE enrichment_version DROP ai_enrichment_ended_at');
135+
$this->addSql('ALTER TABLE enrichment_version DROP transcribing_started_at');
136+
$this->addSql('ALTER TABLE enrichment_version DROP transcribing_ended_at');
137+
$this->addSql('ALTER TABLE enrichment_version DROP translation_started_at');
138+
$this->addSql('ALTER TABLE enrichment_version DROP translation_ended_at');
139+
$this->addSql('ALTER TABLE enrichment_version DROP ai_evaluation_started_at');
140+
$this->addSql('ALTER TABLE enrichment_version DROP ai_evaluation_ended_at');
141+
$this->addSql('ALTER TABLE enrichment_version DROP notified_at');
142+
$this->addSql('ALTER TABLE enrichment_version DROP notification_status');
143+
$this->addSql('ALTER TABLE enrichment_version DROP evaluation_mark');
144+
$this->addSql('ALTER TABLE enrichment_version DROP generate_metadata');
145+
$this->addSql('ALTER TABLE enrichment_version DROP generate_quiz');
146+
$this->addSql('ALTER TABLE enrichment_version DROP generate_notes');
147+
$this->addSql('ALTER TABLE enrichment_version DROP failure_cause');
148+
$this->addSql('ALTER TABLE enrichment_version DROP enrichment_retries');
149+
$this->addSql('ALTER TABLE enrichment_version DROP translation_retries');
150+
$this->addSql('ALTER TABLE enrichment_version DROP evaluation_retries');
151+
$this->addSql('ALTER TABLE enrichment DROP CONSTRAINT FK_BCDAF6CEA8CB0384');
152+
$this->addSql('ALTER TABLE enrichment DROP CONSTRAINT FK_BCDAF6CEF485E793');
153+
$this->addSql('DROP INDEX UNIQ_BCDAF6CEA8CB0384');
154+
$this->addSql('DROP INDEX UNIQ_BCDAF6CEF485E793');
155+
$this->addSql('ALTER TABLE enrichment ADD retries INT DEFAULT 0 NOT NULL');
156+
$this->addSql('ALTER TABLE enrichment ADD transribing_started_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
157+
$this->addSql('ALTER TABLE enrichment ADD transribing_ended_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL');
158+
$this->addSql('ALTER TABLE enrichment DROP transcribing_started_at');
159+
$this->addSql('ALTER TABLE enrichment DROP transcribing_ended_at');
160+
$this->addSql('ALTER TABLE enrichment DROP initial_enrichment_version_id');
161+
$this->addSql('ALTER TABLE enrichment DROP last_enrichment_version_id');
162+
$this->addSql('ALTER TABLE enrichment DROP transcription_retries');
163+
$this->addSql('ALTER TABLE enrichment DROP enrichment_retries');
164+
$this->addSql('ALTER TABLE enrichment DROP translation_retries');
165+
$this->addSql('ALTER TABLE enrichment DROP evaluation_retries');
166+
$this->addSql('ALTER TABLE enrichment DROP media_text_length');
167+
$this->addSql('ALTER TABLE enrichment DROP media_duration_in_seconds');
168+
}
169+
}

servers.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)