feat: Marktchancen — Netzwerk-Hinweise tab (human-sourced market intel)
- MarktHinweis domain type: SUCHE/VERFUEGBARKEIT direction, INTERN/PLATTFORM visibility, anonymization flag, source tracking - Full data layer: IMarktHinweisProvider, MockupMarktHinweisProvider, service, hooks - 7 seed entries: mix of intern/shared, demand/supply, own/partner Verwaltungen - Marktchancen gets two-tab layout: Digitale Signale (crawler) + Netzwerk (human) - HinweisListItem: direction icon, visibility badge (Intern/Geteilt/partner name) - HinweisDetail: note card, portfolio match (SUCHE) or availability info (VERFUEGBARKEIT) - HinweisErfassenDialog: direction toggle, asset type, location, area range, company + anonymize switch, source, note, card-based visibility picker - HinweisPropertyCard: same Anschreiben composer pattern as crawler side Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
|
||||
import { marktHinweisService } from '../services/marktHinweisService'
|
||||
import type { CreateMarktHinweisInput } from '../domain/marktHinweis'
|
||||
|
||||
export function useMarktHinweise() {
|
||||
return useQuery({
|
||||
queryKey: ['marktHinweise'],
|
||||
queryFn: () => marktHinweisService.getAll(),
|
||||
staleTime: 60_000,
|
||||
})
|
||||
}
|
||||
|
||||
export function useCreateMarktHinweis() {
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: (data: CreateMarktHinweisInput) => marktHinweisService.create(data),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['marktHinweise'] })
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user