- Nowa kolumna member_since w tabeli companies
- Karta "Członek Izby NORDA od" na profilu firmy (niebieski kolor #3b82f6)
- Wyświetlanie liczby lat w Izbie
- Import 57 dat przystąpienia z pliku Excel od Artura
- Skrypt import_member_since.py do importu dat
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Frontend was reading data.data.seo_score but API returns
data.seo_audit.pagespeed.seo_score. Fixed path to show
actual scores instead of dashes in batch audit progress.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Batch SEO audit was stopping after 10 companies due to
restrictive rate limit. Increased to 200/hour to allow
full batch processing of all companies.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Search Brave API for company news and web results
- Fetch company website content with BeautifulSoup
- Combine all sources (database, Brave, website) in AI prompt
- Return source usage info in API response
Bug: When page fetch fails (SSL error), result['onpage'] is None.
Using dict.get('key', {}) returns None when key exists with None value.
Fix: Use 'or {}' pattern to handle both missing keys and None values.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New modal with animated progress bar and percentage
- Step-by-step log showing:
- Initialization
- Data collection
- AI prompt preparation
- Gemini API call
- Response parsing
- Results summary (services, USPs, tags, etc.)
- Cancel button with AbortController support
- Success/error states with appropriate icons
- Footer with "Close" and "Refresh page" buttons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add "Wzbogac dane AI" button visible to all users
- Button enabled only for admins and company owners
- New API endpoint POST /api/company/<id>/enrich-ai
- Integrates with Gemini AI to generate:
- Business summary
- Services list
- Target market
- Unique selling points
- Company values
- Certifications
- Industry tags
- Rate limited to 5 requests/hour per user
- Results saved to CompanyAIInsights table
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Progress section with bar and percentage
- Real-time log showing each company being processed
- Score display with color indicators (🟢🟡🔴)
- Cancel button to stop audit mid-process
- Summary at the end with success/failed/skipped counts
- 500ms delay between requests to avoid API overload
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rewrite PKD extraction to find all codes in the section
- Primary regex finds PKD section first, then extracts codes
- Fallback regex for edge cases
- Deduplicate PKD codes (same code may appear in different 'wpis')
- Clean up multi-line descriptions
- LENAP now shows 33 PKD codes (was showing only 1)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Show all PKD codes from KRS audit (not just main one)
- Primary PKD highlighted with 'GŁÓWNY' badge
- Secondary PKDs listed below with descriptions
- Fallback to CEIDG data if no KRS audit data
- Shows source (eKRS or CEIDG) and total count
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- All columns now sortable (click header to sort asc/desc)
- PKD codes displayed with primary code highlighted (★)
- Show first 2 PKD codes, click '+N more' for tooltip with all
- Backend returns full PKD codes list instead of just count
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Increase rate limit from 20/hour to 200/hour for batch operations
- Add nip, regon, liczba_udzialow, prokurenci_count to API response
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Process companies one by one with real-time progress
- Show detailed info for each company:
- NIP, REGON
- Kapitał, udziały
- Zarząd, wspólnicy, prokurenci
- PKD count
- Add data-company-id attribute to table rows
- Style improvements for log entries
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shows visual progress:
- Wyszukiwanie pliku PDF
- Pobieranie danych z PDF
- Parsowanie odpisu KRS
- Zapisywanie do bazy
- Wyniki z szczegółami
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New admin panel /admin/krs-audit for KRS data extraction
- Full PDF parser extracting: company data, capital, shares, PKD codes,
management board, shareholders, procurators, financial reports
- API endpoints for single/batch audits and PDF download
- Company profile shows "Odpis PDF" button and last audit date
- Database migration for krs_audits, company_pkd, company_financial_reports
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move sections to new order:
1. Zarząd i Wspólnicy (people info first)
2. Właściciel JDG
3. Informacje prawne i biznesowe
4. Dane kontaktowe (contact info last)
5. Social Media
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Verified (has person_id): green background, clickable
- Unverified (no person_id): blue background, not clickable
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add person_id column to users table
- Template shows person profile link when person_id exists
- Add script to match and link users to persons by name
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Person with company: both badges link to company profile
- Person without company: non-clickable badge
- Added hover effects for person badge
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Person badge: blue background with user icon
- Company badge: red/pink background, clickable link to company profile
- Hover effects on company badge
- Applied system-wide to all calendar events
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add explicit instruction to give EXACT number requested
- Change list format to single-line items (prevents numbering reset)
- Show correct vs incorrect format examples in prompt
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add comprehensive formatting instructions to AI system prompt
- Update linkifyText() and linkifyNordaGPT() to parse markdown:
- **bold** to <strong>
- Newlines to <br>
- Numbered lists (1. 2. 3.) to <ol>
- Bullet lists (- *) to <ul>
- Add CSS styles for AI response lists
- Fix NordaGPT minimize: banner now pulses and shows active state
- Banner button changes to "Wznów chat" when minimized
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Entire banner is now clickable (onclick on div)
- Added hover effect (translateY, shadow, brightness)
- Changed input/button to spans for cleaner click handling
- Fixed title element ID reference
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Step 1: POST /api/chat/start to create conversation
- Step 2: POST /api/chat/<id>/message to send messages
- Fixed response field from 'response' to 'message'
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Purple-themed banner similar to event banner style
- Click to expand to fullscreen chat modal
- Minimize button returns to banner (shows "Chat aktywny")
- Close button resets chat
- Uses existing /api/chat endpoint
- Typing indicator animation
- Link/email auto-linking in responses
- Escape key minimizes, click outside minimizes
- Only visible for authenticated users
Also includes SEO audits in AI context (from previous work)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Import CompanyWebsiteAnalysis model
- Query PageSpeed scores: SEO, performance, accessibility, best practices
- Add SEO audits description to system prompt
- Include website URLs and profile links
- AI can now answer questions about website SEO scores
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>