Conversation
Replace email-based admin notifications with Slack messages when speakers submit their information. This aligns with the existing pattern used across other CMS hooks (deploy, publication, transcripts, etc.) where all admin notifications go through Slack. The message includes a direct link to the speaker record in Directus for easy access. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Add Slack notifications to member matching on failures Member matching now alerts the team when: - No speaker names are found in a transcript (transcript format issue) - No members can be matched to speakers (missing database entries) - A general error occurs during matching Also added support for triggering on podcast creation (previously only on update), ensuring member matching works even when transcript_text is included at creation time. Fixed Jest config to resolve ESM .js imports to .ts source files. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Use .ts import extension for postSlackMessage to match codebase convention Removes the jest.config.ts moduleNameMapper change that was only needed because the imports used .js extensions. All other files in the codebase import postSlackMessage with .ts, so this aligns with that convention. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Address all code review points: remove unused prompt files, extract shared LLM utilities, remove fallback prompts and dangerous environment variable fallbacks, add Slack failure notifications with Directus links, handle content unapproval, fix asset regeneration to avoid broken references, and use Directus date-created for generated_at timestamps. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Merge multiple token-based approaches into a single authenticated Directus composable (useAuthenticatedDirectus) to centralize CMS operations. Unify directusAdminToken + directusTicketToken into a single directusApiToken. Fix race condition in webhook idempotency by restoring atomic filter-based updates. Extend type definitions to include missing speaker portal and ticket fields, removing unnecessary 'as any' casts. Move ticket Directus types to directus.ts and ticket checkout types to items.ts (deleted tickets.ts). Consolidate all validation schemas into a single schema.ts file (deleted ticketSchemas.ts). Net reduction of 266 lines of code. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replace external Wix.com ticket links with internal /konferenzen/[slug]/tickets route. Remove obsolete fields (tickets, tickets_url, tickets_on_sale) from DirectusConferenceItem. Use ticketing_enabled flag and conference end_on date to control ticket section visibility. Enable server-side ticketing_enabled guard in checkout endpoint. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Centralizes the VAT rate (19%) into config.ts constants (VAT_RATE and VAT_RATE_PERCENT), adds an optional VAT ID input field to company billing info with proper schema validation, and refactors the checkout endpoint into typed helper functions for better maintainability. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors ticketing, speaker portal, and Directus extension automation by consolidating schemas/types, switching to a unified authenticated Directus client for server operations, and improving operational notifications (Slack) + generated content metadata handling.
Changes:
- Moved ticketing schemas into a shared server schema module and reorganized ticket-related TypeScript types across
types/. - Introduced a server-side authenticated Directus SDK helper and updated ticket/speaker-portal endpoints to use it.
- Refactored Directus extension bundle utilities (Gemini + template rendering), added Slack notifications, and adjusted generated content/asset metadata fields.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| nuxt-app/types/tickets.ts | Removed legacy ticket type definitions (migrated elsewhere). |
| nuxt-app/types/items.ts | Added checkout-flow request/response types and related DTOs. |
| nuxt-app/types/index.ts | Stopped exporting removed tickets types module. |
| nuxt-app/types/directus.ts | Updated Directus item types (ticketing + speaker portal fields). |
| nuxt-app/services/directus.ts | Added ticket_settings to the typed Directus collections map. |
| nuxt-app/server/utils/ticketSettings.ts | Kept pricing helpers; updated imports to new type location. |
| nuxt-app/server/utils/ticketSchemas.ts | Removed dedicated ticket schema file (moved to shared schema). |
| nuxt-app/server/utils/schema.ts | Centralized Zod schemas for speaker portal + ticket checkout + discount validation. |
| nuxt-app/server/utils/index.ts | Exported new authenticated Directus helper; removed old ticketSchemas export. |
| nuxt-app/server/utils/authenticatedDirectus.ts | Added authenticated Directus SDK wrapper for server-side Directus operations. |
| nuxt-app/server/api/tickets/webhook.post.ts | Switched Directus update logic to authenticated SDK helper for idempotent updates. |
| nuxt-app/server/api/tickets/validate-discount.post.ts | Uses centralized schema + authenticated Directus ticket settings fetch. |
| nuxt-app/server/api/tickets/settings.get.ts | Removed public settings endpoint (frontend fetches settings directly from Directus). |
| nuxt-app/server/api/tickets/create-checkout.post.ts | Refactored checkout creation: shared schemas, authenticated Directus, VAT constants, helper builders. |
| nuxt-app/server/api/speaker-portal/validate.get.ts | Uses authenticated Directus helper instead of raw fetch + admin token. |
| nuxt-app/server/api/speaker-portal/submit.post.ts | Uses centralized schema + authenticated Directus helper for read/update/upload. |
| nuxt-app/pages/konferenzen/[slug]/index.vue | Replaced Wix ticket link logic with internal ticket route + ticketing enabled/ended gating. |
| nuxt-app/nuxt.config.ts | Consolidated Directus server token config into directusApiToken. |
| nuxt-app/config.ts | Added VAT constants for reuse across frontend/server. |
| nuxt-app/composables/useTicketCheckoutStore.ts | Uses shared VAT config; fetches public ticket settings directly via Directus composable. |
| nuxt-app/composables/useDirectus.ts | Requests new ticketing_enabled field; fetches ticket settings directly from Directus singleton. |
| nuxt-app/components/tickets/TicketStepQuantity.vue | Uses VAT percent from config for UI text. |
| nuxt-app/components/tickets/TicketStepBilling.vue | Added VAT ID input for company billing. |
| nuxt-app/components/tickets/TicketPurchaseFlow.vue | Updated props typing (removed discount code field). |
| nuxt-app/components/tickets/TicketPricingSummary.vue | Uses VAT percent from config for UI text. |
| directus-cms/schema.json | Updated schema metadata to mark fields as date-created. |
| directus-cms/prompts/social-media.md | Removed prompt templates from repo (now expected from CMS). |
| directus-cms/prompts/shownotes.md | Removed prompt templates from repo (now expected from CMS). |
| directus-cms/extensions/.../speaker-portal-notifications/index.ts | Switched admin notification from email to Slack message. |
| directus-cms/extensions/.../shared/templateRenderer.ts | Extracted reusable template renderer into shared utility. |
| directus-cms/extensions/.../shared/gemini.ts | Extracted reusable Gemini helpers (text/image + JSON extraction). |
| directus-cms/extensions/.../member-matching/matchMembers.ts | Added Slack notifications on missing matches / failures. |
| directus-cms/extensions/.../member-matching/index.ts | Expanded hook to run on create+update; added Slack notification on failure. |
| directus-cms/extensions/.../heise-integration/index.ts | Stopped manually setting generated_at (now handled by schema). |
| directus-cms/extensions/.../content-generation/index.ts | Added Slack notification on hook failures. |
| directus-cms/extensions/.../content-generation/generateContent.ts | Enforced required prompts from CMS; moved shared helpers to shared module. |
| directus-cms/extensions/.../content-approval/index.ts | Added “unapproval” handling to revert podcast status when content is unapproved. |
| directus-cms/extensions/.../asset-generation/index.ts | Added Slack notifications for asset generation failures. |
| directus-cms/extensions/.../asset-generation/generateAssets.ts | Moved shared helpers to shared module; made storage selection explicit; improved regeneration safety. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/matchMembers.ts
Show resolved
Hide resolved
directus-cms/extensions/directus-extension-programmierbar-bundle/src/member-matching/index.ts
Show resolved
Hide resolved
...ctus-cms/extensions/directus-extension-programmierbar-bundle/src/content-generation/index.ts
Show resolved
Hide resolved
directus-cms/extensions/directus-extension-programmierbar-bundle/src/asset-generation/index.ts
Show resolved
Hide resolved
...xtensions/directus-extension-programmierbar-bundle/src/content-generation/generateContent.ts
Show resolved
Hide resolved
...s/extensions/directus-extension-programmierbar-bundle/src/asset-generation/generateAssets.ts
Show resolved
Hide resolved
...s/extensions/directus-extension-programmierbar-bundle/src/asset-generation/generateAssets.ts
Show resolved
Hide resolved
Contributor
…endpoint (#147) * Initial plan * Fix: Return 404 when conference not found in create-checkout endpoint Co-authored-by: denbec <193931+denbec@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: denbec <193931+denbec@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refactored tickets and AI automation code after code review from @Jan0707.