REMOVE LDAP

This commit is contained in:
beabigegg
2025-09-25 08:44:44 +08:00
commit 333a640a3b
53 changed files with 4231 additions and 0 deletions

89
README.md Normal file
View File

@@ -0,0 +1,89 @@
# Temp Spec Management System V4
This project manages the lifecycle of temporary specifications: drafting, approval, extension, termination, and document retention. The application now uses MySQL accounts (no LDAP) and requires users to input explicit email lists for notifications.
## Key Features
- Local account management with selfregistration and full admin CRUD tools.
- Online document editing through ONLYOFFICE with version history.
- Flexible email notifications using semicolonseparated address lists.
- Scheduled reminders for specs expiring in 3 or 7 days.
- Asia/Taipei time handling and a twoextension limit per spec.
- Dockerbased deployment with Redis and optional Nginx reverse proxy.
## System Architecture
```
Temp Spec System V4
• Web UI: Flask + Bootstrap 5
• Business Logic: Flask + SQLAlchemy
• Accounts: MySQL (tst_ tables)
• Document Editing: ONLYOFFICE
• Cache/Scheduler: Redis + APScheduler
• Storage: uploads/ and static/generated/
• Email: SMTP
• Reverse Proxy: Nginx
```
## Quick Start (Docker)
1. Clone the repository
```bash
git clone <repository-url>
cd TEMP_spec_system_noad
```
2. Configure environment variables
Edit the `.env` file in the project root and set database, ONLYOFFICE, SMTP and optional default notification values.
3. Verify `.env` values at minimum
- `DATABASE_URL` e.g. `mysql+pymysql://user:pass@host:port/dbname`
- `DEFAULT_NOTIFICATION_EMAILS` optional semicolonseparated default recipients
- SMTP settings matching the corporate mail server (port, TLS/SSL, credentials)
4. Start the stack
```bash
docker-compose up -d --build
```
5. Initialize the database (DROPs and recreates tables)
```bash
docker-compose exec app python init_db.py
```
6. Visit the application
- Web UI: `http://localhost:12010`
- ONLYOFFICE: `http://localhost:12011`
## Default Accounts and Roles
- The initialization script creates `egg / 123 / 念萱` with the Viewer role.
- Selfregistration and admincreated accounts must use passwords with at least six characters.
- Administrators cannot delete the last Admin or demote themselves.
## Email Notification Rules
- Enter full addresses separated by semicolons, e.g. `mail1@company.com; mail2@company.com`.
- When no addresses are supplied the scheduler will use `DEFAULT_NOTIFICATION_EMAILS` from `.env`.
- Ports 25, 465 and 587 are supported; enable TLS by setting `SMTP_USE_TLS=true` or SSL with `SMTP_USE_SSL=true`.
## Troubleshooting
### Docker Hub Rate Limiting (401 Unauthorized)
If you encounter "401 Unauthorized" errors when building:
1. **Login to Docker Hub** (recommended):
```bash
docker login
```
2. **Use alternative registry** by setting in `.env`:
```bash
# Google Container Registry Mirror
PY_BASE=mirror.gcr.io/library/python:3.10-slim
# Or Alibaba Cloud Registry (for users in China)
PY_BASE=registry.cn-hangzhou.aliyuncs.com/acs/python:3.10-slim
```
3. **Wait and retry**: Rate limits reset every 6 hours
### Other Issues
- 500 on `/list` with Jinja date filter: fixed by timezone utils; ensure containers are rebuilt after updates.
- OnlyOffice callback 302 redirect: Fixed by excluding callback endpoint from authentication check.
## Related Documents
- `USER_MANUAL.md` — user workflow reference.
- `DEPLOYMENT.md` — deployment and maintenance guide.
- `docker-compose.yml` and `.env` — deployment configuration.