feat: Complete Week 2 - Document Processing Pipeline

- Implement multi-format document support (PDF, XLSX, CSV, PPTX, TXT, Images)
- Add S3-compatible storage service with tenant isolation
- Create document organization service with hierarchical folders and tagging
- Implement advanced document processing with table/chart extraction
- Add batch upload capabilities (up to 50 files)
- Create comprehensive document validation and security scanning
- Implement automatic metadata extraction and categorization
- Add document version control system
- Update DEVELOPMENT_PLAN.md to mark Week 2 as completed
- Add WEEK2_COMPLETION_SUMMARY.md with detailed implementation notes
- All tests passing (6/6) - 100% success rate
This commit is contained in:
Jonathan Pressnell
2025-08-08 15:47:43 -04:00
parent a4877aaa7d
commit 1a8ec37bed
19 changed files with 4089 additions and 308 deletions

View File

@@ -43,26 +43,56 @@ EXCEPTION
WHEN duplicate_object THEN null;
END $$;
-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
CREATE INDEX IF NOT EXISTS idx_documents_created_at ON documents(created_at);
CREATE INDEX IF NOT EXISTS idx_documents_type ON documents(document_type);
CREATE INDEX IF NOT EXISTS idx_commitments_deadline ON commitments(deadline);
CREATE INDEX IF NOT EXISTS idx_commitments_status ON commitments(status);
CREATE INDEX IF NOT EXISTS idx_audit_logs_timestamp ON audit_logs(timestamp);
CREATE INDEX IF NOT EXISTS idx_audit_logs_user_id ON audit_logs(user_id);
DO $$ BEGIN
CREATE TYPE commitment_priority AS ENUM (
'low',
'medium',
'high',
'critical'
);
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
-- Create full-text search indexes
CREATE INDEX IF NOT EXISTS idx_documents_content_fts ON documents USING gin(to_tsvector('english', content));
CREATE INDEX IF NOT EXISTS idx_commitments_description_fts ON commitments USING gin(to_tsvector('english', description));
DO $$ BEGIN
CREATE TYPE tenant_status AS ENUM (
'active',
'inactive',
'suspended',
'pending'
);
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
-- Create trigram indexes for fuzzy search
CREATE INDEX IF NOT EXISTS idx_documents_title_trgm ON documents USING gin(title gin_trgm_ops);
CREATE INDEX IF NOT EXISTS idx_commitments_description_trgm ON commitments USING gin(description gin_trgm_ops);
DO $$ BEGIN
CREATE TYPE tenant_tier AS ENUM (
'basic',
'professional',
'enterprise'
);
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
-- Grant permissions
DO $$ BEGIN
CREATE TYPE audit_event_type AS ENUM (
'login',
'logout',
'document_upload',
'document_download',
'query_executed',
'commitment_created',
'commitment_updated',
'user_created',
'user_updated',
'system_event'
);
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
-- Grant permissions (tables will be created by SQLAlchemy)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO vbm_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO vbm_user;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO vbm_user;