feat: cont demo public cu resetare automată a datelor la 3 ore

- Cont demo (demo@example.com/demo1234) activ implicit, identificat prin
  settings.demo_email — fără configurare în env; DEMO_EMAIL="" îl dezactivează
- Contul demo nu poate fi modificat prin API (email/parolă/status blocate 403)
- reset_demo.py: șterge idempotent toate datele demo și recrează proprietatea
  demo cu 3 spații și 5 rezervări exemplu cu date relative la ziua curentă
- entrypoint.sh: reset la boot + buclă la 3h (DEMO_RESET_INTERVAL)
- start.sh (dev): reset la fiecare pornire
- Login.vue: hint cu credențialele demo (click = precompletare) și mesajul
  de resetare la 3 ore

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-07-10 20:07:16 +00:00
parent c5a882ba6f
commit 98059a8a70
7 changed files with 311 additions and 0 deletions

View File

@@ -41,6 +41,11 @@
<p class="register-link">
Don't have an account? <router-link to="/register">Register</router-link>
</p>
<p class="demo-hint">
Cont demo: <button type="button" class="demo-credentials" @click="fillDemo">demo@example.com / demo1234</button><br />
Datele contului demo se resetează automat la fiecare 3 ore.
</p>
</div>
</div>
</template>
@@ -59,6 +64,11 @@ const password = ref('')
const error = ref('')
const loading = ref(false)
const fillDemo = () => {
email.value = 'demo@example.com'
password.value = 'demo1234'
}
const handleLogin = async () => {
error.value = ''
loading.value = true
@@ -123,6 +133,27 @@ h2 {
text-decoration: underline;
}
.demo-hint {
text-align: center;
margin-top: 1rem;
font-size: 0.8rem;
color: var(--color-text-secondary);
line-height: 1.6;
}
.demo-credentials {
background: none;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
color: var(--color-accent);
}
.demo-credentials:hover {
text-decoration: underline;
}
.error {
margin-top: 1rem;
padding: 0.75rem;