Files
TEMP_spec_system_noad/README.md
2025-09-25 08:44:44 +08:00

90 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.