feat: remove Administration workspace — keep only Verwaltung + Suche

- Delete all ops page components (ReviewQueue, AIMonitoring, Governance,
  SourceMonitoring, ActivityTimeline, SignalPipeline)
- Remove OPERATIONS workspace from AppShell config, nav order, path detection
- Remove all /ops/* routes from App.tsx
- Remove WorkspaceType.OPERATIONS from allowedWorkspaces in authService,
  sessionStore, permissions
- Keep MarketIntelligence page (already moved to /supply/market-intelligence)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Sutter
2026-05-19 20:32:41 +02:00
parent d22e72f945
commit d15a13e485
378 changed files with 35441 additions and 42 deletions
@@ -0,0 +1,172 @@
// ── Asset Types ───────────────────────────────────────────────────────────────
export const AssetType = {
OFFICE: 'OFFICE',
RETAIL: 'RETAIL',
GASTRO: 'GASTRO', // legacy kept for mock-data compatibility
LIGHT_INDUSTRIAL: 'LIGHT_INDUSTRIAL',
LOGISTICS: 'LOGISTICS',
PRODUCTION: 'PRODUCTION',
MIXED: 'MIXED',
UNKNOWN: 'UNKNOWN',
} as const
export type AssetType = typeof AssetType[keyof typeof AssetType]
// ── Result Types ──────────────────────────────────────────────────────────────
export const ResultType = {
VERIFIED_PORTFOLIO: 'VERIFIED_PORTFOLIO',
EXTERNAL_MARKET: 'EXTERNAL_MARKET',
FUTURE_AVAILABILITY: 'FUTURE_AVAILABILITY',
} as const
export type ResultType = typeof ResultType[keyof typeof ResultType]
// ── Match Strength ─────────────────────────────────────────────────────────────
export const MatchStrength = {
STRONG: 'STRONG',
MODERATE: 'MODERATE',
WEAK: 'WEAK',
} as const
export type MatchStrength = typeof MatchStrength[keyof typeof MatchStrength]
// ── Match Status ──────────────────────────────────────────────────────────────
export const MatchStatus = {
PENDING_REVIEW: 'PENDING_REVIEW',
APPROVED: 'APPROVED',
REJECTED: 'REJECTED',
SHORTLISTED: 'SHORTLISTED',
ARCHIVED: 'ARCHIVED',
} as const
export type MatchStatus = typeof MatchStatus[keyof typeof MatchStatus]
// ── Risk Level ────────────────────────────────────────────────────────────────
export const RiskLevel = {
LOW: 'LOW',
MEDIUM: 'MEDIUM',
HIGH: 'HIGH',
CRITICAL: 'CRITICAL',
} as const
export type RiskLevel = typeof RiskLevel[keyof typeof RiskLevel]
// ── Confidence Level (qualitative) ───────────────────────────────────────────
export const ConfidenceLevel = {
VERY_HIGH: 'VERY_HIGH', // >= 0.90
HIGH: 'HIGH', // >= 0.75
MEDIUM: 'MEDIUM', // >= 0.55
LOW: 'LOW', // >= 0.35
VERY_LOW: 'VERY_LOW', // < 0.35
} as const
export type ConfidenceLevel = typeof ConfidenceLevel[keyof typeof ConfidenceLevel]
// ── Data Quality Level (qualitative) ─────────────────────────────────────────
export const DataQualityLevel = {
HIGH: 'HIGH', // >= 0.80
MEDIUM: 'MEDIUM', // >= 0.60
LOW: 'LOW', // < 0.60
INCOMPLETE: 'INCOMPLETE', // missing critical fields
} as const
export type DataQualityLevel = typeof DataQualityLevel[keyof typeof DataQualityLevel]
// ── Availability Status ───────────────────────────────────────────────────────
export const AvailabilityStatus = {
AVAILABLE_NOW: 'AVAILABLE_NOW',
AVAILABLE_SOON: 'AVAILABLE_SOON',
FUTURE_SIGNAL: 'FUTURE_SIGNAL',
OCCUPIED: 'OCCUPIED',
UNKNOWN: 'UNKNOWN',
} as const
export type AvailabilityStatus = typeof AvailabilityStatus[keyof typeof AvailabilityStatus]
// ── Availability Type (structural distinction) ────────────────────────────────
export const AvailabilityType = {
CONFIRMED: 'CONFIRMED', // verified, date known
INDICATIVE: 'INDICATIVE', // external listing, unconfirmed
PROBABILISTIC: 'PROBABILISTIC', // AI signal, no confirmed date
} as const
export type AvailabilityType = typeof AvailabilityType[keyof typeof AvailabilityType]
// ── Source Type ───────────────────────────────────────────────────────────────
export const SourceType = {
ERP_IMPORT: 'ERP_IMPORT',
MANUAL_ENTRY: 'MANUAL_ENTRY',
IMMOSCOUT_SCRAPE: 'IMMOSCOUT_SCRAPE',
HOMEGATE_SCRAPE: 'HOMEGATE_SCRAPE',
NEWHOME_SCRAPE: 'NEWHOME_SCRAPE',
MATCHOFFICE_SCRAPE: 'MATCHOFFICE_SCRAPE',
MAISON_WORK_SCRAPE: 'MAISON_WORK_SCRAPE',
AI_SIGNAL: 'AI_SIGNAL',
PARTNER_FEED: 'PARTNER_FEED',
UNKNOWN: 'UNKNOWN',
} as const
export type SourceType = typeof SourceType[keyof typeof SourceType]
// ── Freshness Status ──────────────────────────────────────────────────────────
export const FreshnessStatus = {
FRESH: 'FRESH', // updated within 48h
STALE: 'STALE', // 214 days old
OUTDATED: 'OUTDATED', // > 14 days old
} as const
export type FreshnessStatus = typeof FreshnessStatus[keyof typeof FreshnessStatus]
/** @deprecated Use FreshnessStatus — kept for mock-data backward compatibility */
export const DataFreshness = FreshnessStatus
export type DataFreshness = FreshnessStatus
// ── Review Status ─────────────────────────────────────────────────────────────
export const ReviewStatus = {
UNREVIEWED: 'UNREVIEWED',
IN_REVIEW: 'IN_REVIEW',
APPROVED: 'APPROVED',
REJECTED: 'REJECTED',
FLAGGED: 'FLAGGED',
} as const
export type ReviewStatus = typeof ReviewStatus[keyof typeof ReviewStatus]
// ── Sensitivity Level ─────────────────────────────────────────────────────────
export const SensitivityLevel = {
PUBLIC: 'PUBLIC',
INTERNAL: 'INTERNAL',
CONFIDENTIAL: 'CONFIDENTIAL',
RESTRICTED: 'RESTRICTED',
} as const
export type SensitivityLevel = typeof SensitivityLevel[keyof typeof SensitivityLevel]
// ── Shortlist Status ──────────────────────────────────────────────────────────
export const ShortlistStatus = {
DRAFT: 'DRAFT',
REVIEW_READY: 'REVIEW_READY',
FINALIZED: 'FINALIZED',
ACTIVE: 'ACTIVE',
SHARED: 'SHARED',
ARCHIVED: 'ARCHIVED',
CONVERTED: 'CONVERTED',
} as const
export type ShortlistStatus = typeof ShortlistStatus[keyof typeof ShortlistStatus]
// ── User Role ─────────────────────────────────────────────────────────────────
export const UserRole = {
SUPER_ADMIN: 'SUPER_ADMIN',
ORGANIZATION_ADMIN: 'ORGANIZATION_ADMIN',
PROPERTY_MANAGER: 'PROPERTY_MANAGER',
REVIEWER: 'REVIEWER',
OWNER_VIEWER: 'OWNER_VIEWER',
DEMAND_USER: 'DEMAND_USER',
} as const
export type UserRole = typeof UserRole[keyof typeof UserRole]
// ── Signal Type ───────────────────────────────────────────────────────────────
export const SignalType = {
EXPANSION: 'EXPANSION',
POSSIBLE_MOVE_OUT: 'POSSIBLE_MOVE_OUT',
CONSTRUCTION_PROJECT: 'CONSTRUCTION_PROJECT',
RESTRUCTURING: 'RESTRUCTURING',
PROJECT_DEVELOPMENT: 'PROJECT_DEVELOPMENT',
SPACE_CONSOLIDATION: 'SPACE_CONSOLIDATION',
} as const
export type SignalType = typeof SignalType[keyof typeof SignalType]
// ── Workspace ─────────────────────────────────────────────────────────────────
export const WorkspaceType = {
SUPPLY: 'SUPPLY',
DEMAND: 'DEMAND',
OPERATIONS: 'OPERATIONS',
} as const
export type WorkspaceType = typeof WorkspaceType[keyof typeof WorkspaceType]