presseportale/database/migrations
Kevin Adametz bae8347f6c security: Sicherheitsaudit 07.10.2026 (S-01–S-06) behoben, Passkeys und Zweitfaktor-Pflicht für Admins
Audit: dev/sicherheit/SICHERHEITSAUDIT-2026-10-07.md, Plan und Entscheidungen:
dev/sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md.

- S-01 Legacy-Rechnungen fremder Kunden nur mit billing:manage (auch Kundenroute).
- S-02 Kontaktzuordnung auf der Firmenanzeige verlangt companies:write, $id gesperrt.
- S-03 CompanyMembershipObserver: automatische Firmenrechte werden bei jeder
  Adress-/Zuordnungsänderung sofort neu bewertet; memberships:resync-auto.
- S-04 Passwortwechsel beendet alle anderen Sessions (PasswordChanger), Reset
  alle Sessions und offene Login-Links; Fortify PUT /user/password abgeschaltet.
  API-Tokens bleiben bestehen.
- S-05 Google: email_verified Pflicht, feste Bindung über die Provider-ID;
  Erstverknüpfung bestehender Konten außerhalb gmail/hd nur per Bestätigungslink
  in derselben Browser-Session.
- S-06 Frischer Identitätsnachweis (Passwort, App-Code, E-Mail-Code oder
  Passkey) vor E-Mail-Wechsel, erster 2FA-Einrichtung und Token-Erzeugung;
  Hinweis-Mails an die (bisherige) Kontoadresse.
- Entscheidung 5: Passkeys (Fortify, @laravel/passkeys) für alle; Super-Admins
  und Admins bestätigen die Session für den Admin-Bereich per Passkey oder
  App-Code (EnsureStrongAdminAuthentication, Notfallschalter
  AUTH_REQUIRE_STRONG_ADMIN); Reset des zweiten Faktors durch Super-Admins.

Neue Migration: create_passkeys_table. Suite 2.403 grün (1 übersprungen),
Larastan ohne Meldung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:09:35 +00:00
..
0001_01_01_000000_create_users_table.php first commit 2025-10-20 17:53:02 +02:00
0001_01_01_000001_create_cache_table.php first commit 2025-10-20 17:53:02 +02:00
0001_01_01_000002_create_jobs_table.php first commit 2025-10-20 17:53:02 +02:00
2025_07_21_124334_add_two_factor_columns_to_users_table.php first commit 2025-10-20 17:53:02 +02:00
2025_07_21_124345_create_personal_access_tokens_table.php first commit 2025-10-20 17:53:02 +02:00
2026_04_23_163135_expand_users_table_for_migration_2026.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_163251_create_permission_tables.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_163305_create_magic_links_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_163305_create_profiles_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_164018_create_companies_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_164018_create_company_user_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_164018_create_contacts_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_170557_create_categories_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_170557_create_category_translations_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_171000_create_press_releases_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_171001_create_press_release_images_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_171002_create_press_release_contact_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_172142_create_newsletter_subscriptions_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_174502_create_billing_addresses_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_174502_create_invoice_billing_addresses_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_174844_create_payment_options_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_174846_create_payment_option_translations_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175304_create_user_payment_options_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175305_create_user_payment_option_company_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175306_create_user_payments_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175631_create_invoices_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175632_create_legacy_invoices_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_23_175633_create_legacy_import_map_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_24_120000_create_user_filter_presets_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_24_183000_create_contact_user_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_27_115212_expand_phone_fax_columns.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_28_142555_create_admin_presets_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_29_132601_create_api_usage_logs_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_29_132809_add_admin_performance_indexes.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_04_29_140616_add_admin_search_fulltext_indexes.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_05_04_112430_create_footer_codes_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_05_04_115118_create_press_release_status_logs_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_05_04_122603_add_legacy_pdf_payload_to_legacy_invoices_table.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
2026_05_20_143424_add_boilerplate_to_companies.php create PM v0.5 2026-05-20 19:14:39 +02:00
2026_05_20_143424_add_phase7_fields_to_press_releases.php create PM v0.5 2026-05-20 19:14:39 +02:00
2026_05_20_143424_create_press_release_attachments_table.php create PM v0.5 2026-05-20 19:14:39 +02:00
2026_05_21_180700_add_customer_press_kit_index_performance_indexes.php 22-05-2026 Optimierung der User und Admin Panels 2026-05-22 11:18:59 +02:00
2026_05_29_130110_add_placeholder_variant_to_press_releases.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_05_29_130849_add_license_fields_to_press_release_images.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_05_29_134459_add_press_release_quota_to_users.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_06_10_154249_add_rights_detail_fields_to_press_release_images_table.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_06_11_131506_add_classification_to_press_releases.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_06_11_131506_create_ki_audits_table.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_06_11_150538_add_content_score_to_press_releases.php User Panel: Phase-8-Abschluss, Titelbild/Lizenzen/Zeitzonen und KI-Pruef-Pipeline 2026-06-12 08:30:13 +00:00
2026_06_12_100632_create_customer_columns.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100633_create_subscriptions_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100634_create_subscription_items_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100635_add_meter_id_to_subscription_items_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100636_add_meter_event_name_to_subscription_items_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100724_create_invoice_number_sequences_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100724_create_plans_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_100724_create_single_purchases_table.php Phase 9D: Tarif-Datenmodell, Cashier und hybride Rechnungskreise STR-/MAN- 2026-06-12 10:15:46 +00:00
2026_06_12_105216_add_vat_fields_for_billing.php USt-Behandlung: Netto-Preise, VatResolver und Steuer-Ausweis im MAN-Kreis 2026-06-12 10:58:43 +00:00
2026_06_12_115633_drop_press_release_quota_stub_from_users.php Phase 9E (Abschluss): Checkout-Flows und Plan-Kontingent statt Quota-Stub 2026-06-12 12:10:32 +00:00
2026_06_12_142356_extend_billing_addresses_with_person_and_company.php User-Panel-Restarbeiten: PM-Guard, Profil-Rework, USt-ID-Prüfung, Buchungspflicht-Adresse 2026-06-12 14:36:18 +00:00
2026_06_12_160000_add_is_ai_generated_to_press_release_images.php KI-generierte Bilder: eigener Lizenztyp, Anbieter-Bestätigung, Kennzeichnung 2026-06-12 16:04:12 +00:00
2026_06_15_101337_backfill_email_verified_at_for_existing_users.php WS-6: E-Mail-Verifizierung, Auth-Flow-Fixes & Legacy-Rollen-Sicherheitsfix 2026-06-16 08:16:41 +00:00
2026_06_16_080913_downgrade_legacy_editor_users_to_customer.php WS-6: E-Mail-Verifizierung, Auth-Flow-Fixes & Legacy-Rollen-Sicherheitsfix 2026-06-16 08:16:41 +00:00
2026_06_16_103238_add_oauth_provider_columns_to_users.php WS-6: Google-Login via Laravel Socialite 2026-06-16 10:39:19 +00:00
2026_06_16_134458_create_legal_requests_table.php WS-3: Recht & Compliance – Rechts-Kern (DSGVO/Persönlichkeitsrecht/Melden + Queue) 2026-06-16 14:20:05 +00:00
2026_06_17_141218_create_credit_wallets_table.php Credit-Wallet + Ledger + Tier-Preisableitung (Fundament) 2026-06-17 14:16:43 +00:00
2026_06_17_141219_create_credit_transactions_table.php Credit-Wallet + Ledger + Tier-Preisableitung (Fundament) 2026-06-17 14:16:43 +00:00
2026_06_17_141703_create_review_checks_table.php Pruefzaehler + Pruefkontingent (Decision-Update Phase-2 vorgezogen) 2026-06-17 14:19:37 +00:00
2026_06_17_142008_create_boosts_table.php Boost-Geschaeftslogik (Decision-Update 2.2) 2026-06-17 14:22:12 +00:00
2026_06_17_145303_create_credit_topups_table.php Wallet-Topup ueber Stripe (Credit-Pakete mit Bonus-Staffel) 2026-06-17 14:56:23 +00:00
2026_06_18_183248_add_benefits_to_plans_table.php Paket-Vorteile: dynamische, im Admin pflegbare Vorteilsliste je Tarif 2026-06-18 16:36:09 +00:00
2026_07_03_115818_create_withdrawal_requests_table.php Recht: Online-Widerruf ohne Login (gesetzlicher Widerrufsbutton) - Backend 2026-07-03 10:03:37 +00:00
2026_07_03_132503_create_termination_requests_table.php Recht: Kuendigungsbutton nach Par. 312k BGB - Backend + Admin-Queue 2026-07-03 11:32:43 +00:00
2026_07_03_133618_add_withdrawal_waiver_to_press_releases.php Recht: Erloeschensklausel-Checkbox im Publikationsflow (Par. 356 BGB) 2026-07-03 11:41:31 +00:00
2026_07_03_180922_create_booking_confirmations_table.php T1neu: Unternehmer-Pflicht-Checkbox im Checkout, protokolliert mit AGB-Version 2026-07-03 16:17:59 +00:00
2026_07_06_111754_create_legal_documents_table.php E3: Rechtstext-Versionierung in der DB (legal_documents) 2026-07-06 09:21:52 +00:00
2026_07_06_111755_add_legal_document_id_to_booking_confirmations_table.php E3: Rechtstext-Versionierung in der DB (legal_documents) 2026-07-06 09:21:52 +00:00
2026_07_06_112202_create_rejection_categories_table.php Ablehnungskategorien live aus der DB (rejection_categories) 2026-07-06 09:25:16 +00:00
2026_07_06_113811_add_depublished_at_to_press_releases_table.php T12: Depublikations-Checkout mit Tombstone (config-gated) 2026-07-06 09:46:25 +00:00
2026_07_06_162634_create_contact_messages_table.php Backend-WIP: Kontakt-Queue, Page-Cache, Validierungs-Feedback, i18n 2026-07-09 15:38:11 +00:00
2026_07_07_121625_add_web_search_fulltext_index_to_press_releases.php Suche: Volltext-Index + Fix fuer doppelte Alpine-Instanz 2026-07-07 13:03:14 +00:00
2026_07_07_124816_add_pending_email_to_users_table.php QA-Befunde A4: 2FA-Bestätigungsschritt + sicherer E-Mail-Wechsel 2026-07-07 10:53:24 +00:00
2026_07_07_153200_add_scheduled_change_to_subscriptions_table.php Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende 2026-07-07 13:38:57 +00:00
2026_07_07_155322_add_web_archive_indexes_to_press_releases_table.php Backend-WIP: Kontakt-Queue, Page-Cache, Validierungs-Feedback, i18n 2026-07-09 15:38:11 +00:00
2026_07_07_165034_add_depublication_to_single_purchases_type_enum.php single_purchases: type-ENUM um depublication erweitern 2026-07-07 14:51:56 +00:00
2026_07_08_111908_add_agency_name_to_users_table.php Profilfeld users.agency_name für Übermittler-Attribution 2026-07-08 09:20:32 +00:00
2026_07_08_172023_add_ai_declaration_to_press_releases.php KI-Kennzeichnung (Art. 50 KI-VO): Pflicht-Deklaration für Text & Bilder 2026-07-09 13:54:43 +00:00
2026_07_08_172023_create_press_release_ai_declarations_table.php KI-Kennzeichnung (Art. 50 KI-VO): Pflicht-Deklaration für Text & Bilder 2026-07-09 13:54:43 +00:00
2026_07_08_172113_backfill_ai_declaration_on_press_release_images.php KI-Kennzeichnung (Art. 50 KI-VO): Pflicht-Deklaration für Text & Bilder 2026-07-09 13:54:43 +00:00
2026_07_10_114915_create_press_release_events_table.php PM-Tracking: Ereignis-Log fuer Aufrufe + Shares (press_release_events) 2026-07-10 09:56:42 +00:00
2026_07_10_154103_create_email_notification_opt_outs_table.php E-Mail-Praeferenzen: Opt-out je Mail-Typ + One-Click-Unsubscribe ohne Login 2026-07-10 17:15:05 +00:00
2026_07_10_155535_create_app_settings_table.php Legacy-API-Paritaet S1+S2: connektar-Flow verhaltensgleich + KI-Schalter 2026-07-10 14:09:40 +00:00
2026_07_13_140855_add_placement_to_boosts_table.php Boost-Slot-Grenzen (5/3) + Kategorie-Boost zum halben Satz 2026-07-13 12:28:03 +00:00
2026_07_14_125600_create_boost_slot_locks_table.php billing: Nebenläufigkeit & Idempotenz härten (H4, Stripe, Boost-Slots) 2026-07-14 13:47:21 +00:00
2026_07_14_125700_add_unique_stripe_invoice_id_to_invoices_table.php billing: Nebenläufigkeit & Idempotenz härten (H4, Stripe, Boost-Slots) 2026-07-14 13:47:21 +00:00
2026_07_14_125841_add_scheduled_publication_index_to_press_releases_table.php press-releases: Publish-Rechte, Quota-Races & Slug vereinheitlichen 2026-07-14 13:47:51 +00:00
2026_07_15_174809_create_activity_events_table.php admin: Aktivitäts-Verlauf unter Reports ▸ Verlauf 2026-07-15 16:00:58 +00:00
2026_07_20_120000_add_feed_order_index_to_press_releases_table.php web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query 2026-07-20 14:53:09 +00:00
2026_07_21_111646_create_newsletter_campaign_tables.php admin: internes Newsletter-Modul mit Filtern, Protokoll und Abmeldung 2026-07-21 09:26:57 +00:00
2026_07_22_151506_add_sync_lock_to_press_releases_table.php recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur 2026-07-22 15:56:34 +00:00
2026_07_22_151507_add_meldeverfahren_fields_to_legal_requests_table.php recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur 2026-07-22 15:56:34 +00:00
2026_07_22_151507_create_press_release_redaction_snapshots_table.php recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur 2026-07-22 15:56:34 +00:00
2026_07_22_171134_add_report_purpose_to_magic_links_table.php recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur 2026-07-22 15:56:34 +00:00
2026_07_23_113508_add_change_to_single_purchases_type_enum.php recht: Meldeverfahren v2 Phasen 5+7 — DSGVO-Strukturformular, 10-€-Checkout mit KI-Vorprüfung, Triage & Panel-Modal 2026-07-23 13:02:57 +00:00
2026_08_25_120000_seed_press_release_view_watermark.php technik: Aufrufe über ein Ereignis-Log zählen statt im Request 2026-09-01 11:05:28 +00:00
2026_08_25_140000_create_press_release_search_table.php technik: Volltext-Indizes von press_releases in eine eigene Suchtabelle auslagern 2026-09-01 11:04:43 +00:00
2026_08_25_150000_drop_fulltext_indexes_from_press_releases.php technik: Volltext-Indizes von press_releases in eine eigene Suchtabelle auslagern 2026-09-01 11:04:43 +00:00
2026_08_25_160000_add_gone_at_to_companies_and_press_releases_tables.php web: Entfernung mit 410 Gone als Alternative zur Löschung 2026-09-01 11:06:35 +00:00
2026_09_01_090000_add_gone_restore_state_to_companies_and_press_releases_tables.php web: Entfernung mit 410 Gone als Alternative zur Löschung 2026-09-01 11:06:35 +00:00
2026_09_01_091000_add_email_index_to_companies_table.php db: Index auf companies.email 2026-09-01 11:08:06 +00:00
2026_09_01_100000_create_conversion_events_table.php conversion: Konversionsleiter mit Herkunft auf dem Magic-Link-Token (Block 0) 2026-09-01 13:12:12 +00:00
2026_09_01_100100_add_source_to_magic_links_table.php conversion: Konversionsleiter mit Herkunft auf dem Magic-Link-Token (Block 0) 2026-09-01 13:12:12 +00:00
2026_09_11_100000_create_company_email_groups_table.php companies: Adress-Klassifizierung persistieren (Roadmap 1a.2, E1 = 3) 2026-09-11 09:11:09 +00:00
2026_09_15_100000_create_company_merges_tables.php companies: Zusammenführung im Bestand, rückabwickelbar (Roadmap 1a.3) 2026-09-15 08:43:46 +00:00
2026_09_15_120000_create_email_suppressions_tables.php mail: zentrale Bounce-Suppression mit Versand-Gate und Circuit Breaker (Roadmap 1b.6, Schritte 1–2) 2026-09-15 13:48:56 +00:00
2026_09_16_100000_create_email_domain_checks_table.php mail: Kontakterreichbarkeit - Formpruefung, Domainpruefung, Einlieferer-Bericht 2026-09-16 09:22:39 +00:00
2026_09_16_120000_add_dunning_columns_to_invoices_table.php billing: MAN-Rechnungen fuer Ueberweisungskunden bearbeiten, hold-Altlast bereinigen 2026-09-16 10:56:29 +00:00
2026_09_16_140000_add_manual_review_gate_to_press_releases_table.php press-releases: begrenzter Pruefkreislauf mit Admin-Queue (Roadmap 1d.4, E3) 2026-09-16 14:30:26 +00:00
2026_09_18_090000_create_press_release_crawler_hits_table.php web: Crawler-Abruf-Protokoll und Panel „Auslieferung" ohne Google-Link (Anhang 1: 1c.0, 1c.1, 1c.6) 2026-09-17 14:21:35 +00:00
2026_09_18_090100_create_press_release_index_checks_table.php admin: Indexierungsstatus aus der Search Console, Kundenansicht vorbereitet und zu (Anhang 1: 1c.4, E8) 2026-09-17 14:21:51 +00:00
2026_09_18_100000_add_content_hash_and_canonical_to_press_releases_table.php web: Doppelveröffentlichung — Prüfsumme, kanonische Zuordnung (aus bis E9), Quellenauskunft, noindex im Portal (Anhang 2) 2026-09-17 16:09:16 +00:00
2026_09_18_100100_add_user_canonical_to_press_release_index_checks_table.php web: Doppelveröffentlichung — Prüfsumme, kanonische Zuordnung (aus bis E9), Quellenauskunft, noindex im Portal (Anhang 2) 2026-09-17 16:09:16 +00:00
2026_09_18_110000_add_unique_user_to_newsletter_campaign_recipients_table.php security/api/betrieb: Fortify-2FA-Nebenwege gesperrt, Policy nur für aktive Super-Admins, Nachprüfungen aus dem Umsetzungsaudit (Block 7, U08–U10, U13, 7.1, 7.2, 7.5) 2026-09-18 12:03:04 +00:00
2026_09_18_150000_add_granted_via_to_company_user_table.php auth: automatische Firmenrechte mit Herkunft und Entzug, Nachweis vor Sicherheitsaktionen (Audit Block 1, Deploy C) 2026-09-18 10:19:28 +00:00
2026_09_18_160000_add_email_index_to_contacts_table.php web/api/ki: Soft Deletes wieder wirksam, Caches bei Firmenwechsel, KI-Ergebnis an Inhalt gebunden (Audit Block 3+4, Deploy D) 2026-09-18 10:40:48 +00:00
2026_09_18_170000_add_content_hash_to_ki_audits_table.php web/api/ki: Soft Deletes wieder wirksam, Caches bei Firmenwechsel, KI-Ergebnis an Inhalt gebunden (Audit Block 3+4, Deploy D) 2026-09-18 10:40:48 +00:00
2026_09_18_170100_add_quota_period_to_users_table.php web/api/ki: Soft Deletes wieder wirksam, Caches bei Firmenwechsel, KI-Ergebnis an Inhalt gebunden (Audit Block 3+4, Deploy D) 2026-09-18 10:40:48 +00:00
2026_09_18_180000_add_billing_hold_to_user_payment_options_table.php billing/dev: Vertragsende in der MAN-Abrechnung, Rechnungslauf ohne Tageskappe, Qualitätsgates (Audit Block 5+6, Deploy E) 2026-09-18 10:41:04 +00:00
2026_09_18_180100_add_grandfathering_expiry_markers_to_user_payment_options_table.php billing: Vertragsablauf bedingt beenden, Kundenmail nachholbar (Block 7, U11/U12) 2026-09-18 12:03:04 +00:00
2026_09_18_190000_backfill_press_release_quota_period.php ki/quota: Hash-Bindung atomar bis in den Publish-Lock, roter Re-Check lehnt ab, Kontingent-Altbestand (Block 7, U02–U04) 2026-09-18 12:22:22 +00:00
2026_09_21_100000_create_feed_fetches_table.php web: Abruf-Protokoll der RSS-Feeds — Reader-Dienst, gemeldete Abonnenten, Admin-Bericht, Panel (Roadmap 3.1) 2026-09-21 09:00:09 +00:00
2026_09_22_100000_add_rights_v2_fields_to_press_release_images_table.php images: Datenmodell, Textarchiv, Herkunftsprüfung und gemeinsamer Uploader für Formular v2 (Bildkennzeichnung Block A) 2026-09-22 09:22:05 +00:00
2026_09_22_100100_create_legal_texts_table.php images: Datenmodell, Textarchiv, Herkunftsprüfung und gemeinsamer Uploader für Formular v2 (Bildkennzeichnung Block A) 2026-09-22 09:22:05 +00:00
2026_09_22_100200_create_image_rights_confirmations_table.php images: Datenmodell, Textarchiv, Herkunftsprüfung und gemeinsamer Uploader für Formular v2 (Bildkennzeichnung Block A) 2026-09-22 09:22:05 +00:00
2026_09_22_110000_add_published_ever_at_to_press_releases_table.php images: Lebenszyklus — Veröffentlichungsgate, published_ever_at, Snapshot der veröffentlichten Fassung, Sofortlöschung, Legacy-Bereinigung, Beweiszugriff, Korrekturweg (Bildkennzeichnung Block E) 2026-09-22 09:53:49 +00:00
2026_09_22_110100_add_withheld_at_to_press_release_images_table.php images: Lebenszyklus — Veröffentlichungsgate, published_ever_at, Snapshot der veröffentlichten Fassung, Sofortlöschung, Legacy-Bereinigung, Beweiszugriff, Korrekturweg (Bildkennzeichnung Block E) 2026-09-22 09:53:49 +00:00
2026_09_22_110200_create_image_declaration_corrections_table.php images: Lebenszyklus — Veröffentlichungsgate, published_ever_at, Snapshot der veröffentlichten Fassung, Sofortlöschung, Legacy-Bereinigung, Beweiszugriff, Korrekturweg (Bildkennzeichnung Block E) 2026-09-22 09:53:49 +00:00
2026_09_22_120000_create_archive_entries_table.php archive: Beweisarchiv — verschlüsselte Einträge, Legal Hold, Purge mit Tombstone, Restore-Abgleich, Auslöser und Admin-Seite (Bildkennzeichnung Block F) 2026-09-22 10:04:21 +00:00
2026_09_22_130000_create_legal_document_acceptances_table.php legal/web: Zustimmungsgate je Dokumentversion (aus bis AGB 0.7), OG-Variante mit eingebranntem Bildnachweis, Nachweis in Teasern (Bildkennzeichnung Blöcke G und H) 2026-09-22 10:12:17 +00:00
2026_09_22_140000_add_precheck_fields_to_press_release_images_table.php images: KI-Vorab-Check für Titelbilder — Vision-Sichtung mit definiertem Ausgang je Befund, Admin-Queue, Protokoll und Archiv-Snapshot (Bildkennzeichnung Block K) 2026-09-22 13:27:31 +00:00
2026_09_22_140100_add_precheck_snapshot_to_image_rights_confirmations_table.php images: KI-Vorab-Check für Titelbilder — Vision-Sichtung mit definiertem Ausgang je Befund, Admin-Queue, Protokoll und Archiv-Snapshot (Bildkennzeichnung Block K) 2026-09-22 13:27:31 +00:00
2026_09_25_153354_add_legal_request_id_to_archive_entries_table.php audit: Nacharbeit Umsetzungsaudit 25.09.2026 — Bildfreigabe, Beweisarchiv, KI-Atomarität, Berichte (Block 8, N01–N05, N07, N08, N10–N21, 5.1, 5.2) 2026-09-25 14:26:49 +00:00
2026_09_25_153355_add_archive_pending_at_to_press_releases_table.php audit: Nacharbeit Umsetzungsaudit 25.09.2026 — Bildfreigabe, Beweisarchiv, KI-Atomarität, Berichte (Block 8, N01–N05, N07, N08, N10–N21, 5.1, 5.2) 2026-09-25 14:26:49 +00:00
2026_09_29_170000_add_content_changed_at_to_press_releases_table.php web/seo: Änderungsdatum unabhängig von Aufrufen, EN-URLs in Sitemap und Legacy-API, signierte Bounce-Referenz, Merge/Canonical konsistent (Umsetzungsaudit 29.09.: R-02 bis R-11, N17, N18, OPT-1, OPT-2; 02.10.: O01) 2026-10-02 13:09:00 +00:00
2026_09_29_170100_add_merged_value_to_company_merge_moves_table.php web/seo: Änderungsdatum unabhängig von Aufrufen, EN-URLs in Sitemap und Legacy-API, signierte Bounce-Referenz, Merge/Canonical konsistent (Umsetzungsaudit 29.09.: R-02 bis R-11, N17, N18, OPT-1, OPT-2; 02.10.: O01) 2026-10-02 13:09:00 +00:00
2026_09_29_180000_add_precheck_withheld_at_to_press_release_images_table.php images: nur freigegebene Bilder in Feed und PDF, versionierte Veröffentlichungssnapshots, Bestätigung an das gezeigte Bild gebunden, getrennte Rückhaltegründe (Umsetzungsaudit 29.09.: B-01 bis B-14, N09, OPT-3 bis OPT-5; 02.10.: O03) 2026-10-02 13:09:01 +00:00
2026_09_29_180100_backfill_precheck_withheld_at_on_press_release_images.php images: nur freigegebene Bilder in Feed und PDF, versionierte Veröffentlichungssnapshots, Bestätigung an das gezeigte Bild gebunden, getrennte Rückhaltegründe (Umsetzungsaudit 29.09.: B-01 bis B-14, N09, OPT-3 bis OPT-5; 02.10.: O03) 2026-10-02 13:09:01 +00:00
2026_09_29_180200_add_image_confirmation_purpose_to_magic_links_table.php auth/security: API-Firmenzuordnung nur für Mitglieder oder Allowlist, Google-Vorabübernahme geschlossen, gemeinsamer Login-Abschluss (Umsetzungsaudit 29.09.: R-01, K-04, K-07, K-08, B-10) 2026-10-02 13:09:00 +00:00
2026_09_29_190000_create_archive_pending_jobs_table.php archive: Auftragstabelle statt Marker, exklusiver Abschluss, Quarantäne, Restore über Payload-Identität und signierte Exporte, Schlüsselrotation (Umsetzungsaudit 29.09.: A-01 bis A-15, OPT-6, 5.1 d; 02.10.: O04, O05, O07, O08) 2026-10-02 13:09:01 +00:00
2026_09_29_190100_add_key_id_and_payload_path_index_to_archive_entries_table.php archive: Auftragstabelle statt Marker, exklusiver Abschluss, Quarantäne, Restore über Payload-Identität und signierte Exporte, Schlüsselrotation (Umsetzungsaudit 29.09.: A-01 bis A-15, OPT-6, 5.1 d; 02.10.: O04, O05, O07, O08) 2026-10-02 13:09:01 +00:00
2026_09_29_190200_add_admin_identity_to_archive_access_log_table.php archive: Auftragstabelle statt Marker, exklusiver Abschluss, Quarantäne, Restore über Payload-Identität und signierte Exporte, Schlüsselrotation (Umsetzungsaudit 29.09.: A-01 bis A-15, OPT-6, 5.1 d; 02.10.: O04, O05, O07, O08) 2026-10-02 13:09:01 +00:00
2026_10_06_164009_add_invoice_delivery_to_billing_addresses_table.php billing: Rechnungsversand — PDF im Anhang der Zahlungsmail, optionale Rechnungs-E-Mail, Stripe-Rechnungs-PDF direkt aus dem Kundenbereich 2026-10-06 14:47:49 +00:00
2026_10_06_172532_create_failed_login_tallies_table.php auth: fehlgeschlagene Anmeldungen mit Einstieg (livewire/fortify/two-factor); unbekannte Adressen als Tageszähler statt Verlaufseintrag, Kachel im Systemstatus, Löschfrist 90 Tage 2026-10-06 15:30:29 +00:00
2026_10_07_165740_create_passkeys_table.php security: Sicherheitsaudit 07.10.2026 (S-01–S-06) behoben, Passkeys und Zweitfaktor-Pflicht für Admins 2026-10-07 16:09:35 +00:00