Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Citizen Feedback and Sentiment Analysis System
A modern, AI-powered feedback classification and response platform designed for local government agencies (PhilHealth Cauayan City).
test
This repository contains a full-stack Django application that bridges the gap between public service feedback collection and administrative action. By combining an intuitive public submission workflow with an offline Machine Learning pipeline, the system automatically classifies the sentiment of citizen comments to surface urgent concerns instantly.查看完整 README ↗A modern, AI-powered feedback classification and response platform designed for local government agencies (PhilHealth Cauayan City). test This repository contains a full-stack Django application that bridges the gap between public service feedback collection and administrative action. By combining an intuitive public submission workflow with an offline Machine Learning pipeline, the system automatically classifies the sentiment of citizen comments to surface urgent concerns instantly. Administrators are equipped with a comprehensive dashboard containing trends, analytics, action logs, granular reports, and database utilities.
The screenshots below showcase the user interfaces and administrative tools of the system:
Figure 1: Step-by-step form for citizens to log experience ratings and comments.
Figure 2: Success modal displaying unique tracking code after a successful submission.
Figure 3: Secure login portal for administrative staff.
Figure 4: Main analytics dashboard showing metrics, daily/weekly stats, and feedback trends.
Figure 5: Table interface to update statuses, assign categories, and add internal notes/replies.
Figure 6: Real-time sentiment metrics (Positive, Neutral, Negative) and trend over time.
Figure 7: Detailed tabular breakdowns of experience and categorization over custom intervals.
Figure 8: Interface for database backup/restore operations, user accounts, and batch sentiment processing.
FeedbackEntry.topics and shown on the Responses page (column and filter), as "Feedback by Topic" on the Dashboard and Reports (one entry counts once in each topic it names), in the Excel export, and in the daily email. Topics are separate from the staff-assigned Category (complaint, suggestion, compliment, concern). Entries submitted before topics existed have none.Naive Bayes Classifier: A pre-trained scikit-learn pipeline (feedback/ml/sentiment_model.pkl, TF-IDF 1-2 grams + Multinomial Naive Bayes) trained on FiReCS + SentiTaglish, so it reads English, Tagalog, and Taglish comments offline. Training lives in training/train_sentiment_model.ipynb; Cell 19 exports the deployed model.
Deterministic Text Processing: Cleans text exactly as the training notebook does:
stopwords.txt; negation words such as "not" and "hindi" are kept).Replacing the Model: After copying in a new sentiment_model.pkl, re-label every existing comment with python manage.py reanalyze_sentiment --force.
Batch Re-Analysis: Built-in admin utility to re-run predictions across historical entries.
Comment Sentiment: The classifier reads only the comment and stores the result in comment_sentiment. A comment the model cannot classify stays Pending for manual review.
Final Sentiment (rating + comment): sentiment combines the rating with the comment's sentiment (feedback.services.combine_sentiment). The dashboard, reports, filters, and email use this value; the word cloud uses comment_sentiment.
| Rating | Comment Positive | Comment Neutral | Comment Negative |
|---|---|---|---|
| Very Satisfactory | Positive | Neutral | Negative |
| Satisfactory | Positive | Neutral | Negative |
| Unsatisfactory | Neutral | Negative | Negative |
A Negative comment is always Negative. Pending and N/A pass through unchanged, so the rating alone never produces a sentiment.
Deploying this change: Run python manage.py migrate, then python manage.py reanalyze_sentiment --force so existing entries get their final sentiment.
git clone <your-repo-url>
cd philhealth-sentiment-analysis
# Create virtual environment
python -m venv venv
# Activate on Windows
.\venv\Scripts\activate
# Install requirements
pip install -r requirements.txt
Create a .env file in the root directory:
SECRET_KEY=your-django-secret-key
DEBUG=True
DB_NAME=philhealth_feedback
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_HOST=127.0.0.1
DB_PORT=3306
BACKUP_DIR=backups
Before running migrations, make sure your MySQL database philhealth_feedback exists.
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
Visit the application:
http://127.0.0.1:8000/http://127.0.0.1:8000/dashboard/philhealth-sentiment-analysis/
│
├── assets/ # Portfolio screenshots and images
│ └── .gitkeep # Preserves directory in git
│
├── backups/ # Database backups target location
│
├── feedback/ # Public Feedback Submission App
│ ├── ml/ # ML Model, Stemmer and Stopwords files
│ │ ├── sentiment_model.pkl
│ │ └── stopwords.txt
│ ├── models.py # FeedbackEntry, FeedbackConfiguration models
│ ├── services.py # Sentiment Analysis and pre-processing logic
│ └── views.py # Public submit APIs
│
├── feedback_admin/ # Administrative Dashboard App
│ ├── backup_utils.py # JSON fixture backup and restore utilities
│ ├── context_processors.py# Global template stats (e.g. pending items)
│ ├── templates/ # Dashboard, responses, analytics HTML templates
│ └── views.py # Management and reporting logic
│
├── philhealth_feedback/ # Django core settings and routing
│ ├── settings.py
│ └── urls.py
│
├── static/ # Static assets
├── templates/ # Main theme and base layouts
├── requirements.txt # Python packages list
└── manage.py # Django CLI execution entry point