185 lines
6.2 KiB
Markdown
185 lines
6.2 KiB
Markdown
|
|
# Working Tree Audit
|
||
|
|
|
||
|
|
Project: helpyourneighbour
|
||
|
|
|
||
|
|
## Modified tracked files
|
||
|
|
README.md
|
||
|
|
backend/playwright.config.js
|
||
|
|
backend/scripts/integration-test.mjs
|
||
|
|
|
||
|
|
--- README.md
|
||
|
|
# helpyourneighbour
|
||
|
|
|
||
|
|
Erster funktionaler Backend-Stand für die Vision:
|
||
|
|
|
||
|
|
- Nutzerregistrierung und Login (`/auth/register`, `/auth/login`)
|
||
|
|
- Hilfeanfragen erstellen/listen (`/requests`)
|
||
|
|
- Angebote + Gegenangebote + Deal-Annahme (`/offers/...`)
|
||
|
|
- Bewertungsgrundlage mit 2-14 Tage Prompt-Fenster (`/reviews/:dealId`)
|
||
|
|
- Datenmodell inkl. postalischer Adress-Verifikation (`backend/sql/schema.sql`)
|
||
|
|
- Address-Change-Flow mit Briefcode (`/addresses/change-request`, `/addresses/verify`)
|
||
|
|
- Kontaktdatenaustausch nach Deal (`/contacts/request`, `/contacts/respond`, `/contacts/deal/:dealId`)
|
||
|
|
- Serverseitige AES-256-GCM-Verschlüsselung für Adresse/Telefon (`DATA_ENCRYPTION_KEY`)
|
||
|
|
|
||
|
|
## Docker-Test (Unraid Host)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./scripts/test-in-docker.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
## Start
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
cp .env.example .env
|
||
|
|
npm install
|
||
|
|
npm run db:init
|
||
|
|
npm run start
|
||
|
|
```
|
||
|
|
|
||
|
|
## Forgejo Tasks
|
||
|
|
|
||
|
|
- #1 Backend Grundgerüst + Auth API
|
||
|
|
- #2 Datenmodell für Request/Offer/Negotiation/Deal
|
||
|
|
- #3 Bewertungssystem 2-14 Tage Verzögerung
|
||
|
|
- #4 Adressänderung nur per Briefbestätigung
|
||
|
|
|
||
|
|
## API Governance
|
||
|
|
|
||
|
|
- Dispute-Flow Doku: `docs/dispute-flow.md`
|
||
|
|
|
||
|
|
- OpenAPI: `openapi.yaml` (Spiegel: `docs/openapi.yaml`)
|
||
|
|
- Versioning/Deprecation Policy: `docs/api-versioning.md`
|
||
|
|
- Rollen- und Rechtekonzept: `docs/roles-and-permissions.md`
|
||
|
|
|
||
|
|
## Development Quickstart (auto-synced)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm install
|
||
|
|
npm test
|
||
|
|
npm run start
|
||
|
|
```
|
||
|
|
|
||
|
|
|
||
|
|
--- backend/playwright.config.js
|
||
|
|
const { defineConfig } = require('@playwright/test');
|
||
|
|
|
||
|
|
module.exports = defineConfig({
|
||
|
|
testDir: './tests',
|
||
|
|
timeout: 30000,
|
||
|
|
expect: {
|
||
|
|
timeout: 5000
|
||
|
|
},
|
||
|
|
fullyParallel: true,
|
||
|
|
forbidOnly: !!process.env.CI,
|
||
|
|
retries: process.env.CI ? 2 : 0,
|
||
|
|
workers: process.env.CI ? 1 : undefined,
|
||
|
|
reporter: 'html',
|
||
|
|
use: {
|
||
|
|
actionTimeout: 0,
|
||
|
|
baseURL: 'http://localhost:3000',
|
||
|
|
trace: 'on-first-retry',
|
||
|
|
},
|
||
|
|
projects: [
|
||
|
|
{
|
||
|
|
name: 'chromium',
|
||
|
|
use: {
|
||
|
|
...devices['Desktop Chrome'],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
});
|
||
|
|
--- backend/scripts/integration-test.mjs
|
||
|
|
// Einfacher HTTP-Test ohne Playwright
|
||
|
|
// Funktion zum Senden einer HTTP-Anfrage
|
||
|
|
async function testHealthEndpoint() {
|
||
|
|
try {
|
||
|
|
const response = await fetch('http://localhost:3000/health');
|
||
|
|
if (response.status === 200) {
|
||
|
|
console.log('Integration test passed: API server is running and healthy');
|
||
|
|
return true;
|
||
|
|
} else {
|
||
|
|
console.error(`Integration test failed: Expected status 200, got ${response.status}`);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Integration test failed:', error.message);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Führe den Test aus
|
||
|
|
testHealthEndpoint().then(success => {
|
||
|
|
if (!success) {
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
## Untracked files
|
||
|
|
.DS_Store
|
||
|
|
._.DS_Store
|
||
|
|
PROJECT_SUMMARY.md
|
||
|
|
STATUS.md
|
||
|
|
backend/.DS_Store
|
||
|
|
backend/._.DS_Store
|
||
|
|
backend/playwright-report/index.html
|
||
|
|
backend/playwright.config.mjs
|
||
|
|
backend/test-results/.last-run.json
|
||
|
|
backend/tests/integration-test.spec.js
|
||
|
|
docs/plans/2026-03-06-continue-working-the-helpyourneighbour-project-after.md
|
||
|
|
docs/plans/2026-03-06-implement-the-next-concrete-improvement-for.md
|
||
|
|
docs/plans/2026-03-06-initial-session-startup-and-greeting.md
|
||
|
|
docs/plans/2026-03-06-start.md
|
||
|
|
docs/runtime/agent_state_helpyourneighbour.json
|
||
|
|
docs/runtime/backlog_item_helpyourneighbour.md
|
||
|
|
docs/runtime/generated_artifacts_helpyourneighbour.md
|
||
|
|
docs/runtime/goal_brief_helpyourneighbour.md
|
||
|
|
docs/runtime/goal_targets_helpyourneighbour.md
|
||
|
|
docs/runtime/integration_candidates_helpyourneighbour.md
|
||
|
|
docs/runtime/integration_context_helpyourneighbour.md
|
||
|
|
docs/runtime/integration_repair_brief_helpyourneighbour.md
|
||
|
|
docs/runtime/integration_status_helpyourneighbour.env
|
||
|
|
docs/runtime/integration_targets_helpyourneighbour.md
|
||
|
|
docs/runtime/integration_test_helpyourneighbour.log
|
||
|
|
docs/runtime/integration_triage_helpyourneighbour.md
|
||
|
|
docs/runtime/notion_recall_helpyourneighbour.md
|
||
|
|
docs/runtime/project_snapshot_helpyourneighbour.md
|
||
|
|
docs/runtime/smoke_status_helpyourneighbour.env
|
||
|
|
docs/runtime/smoke_test_helpyourneighbour.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_backlog-goal-verify.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_backlog-inspect.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_backlog-project-snapshot.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-check.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-context-audit.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-failure-blocked.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-repair-brief.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-targets.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_integration-triage.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_no-work.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_project-snapshot.log
|
||
|
|
docs/runtime/task_helpyourneighbour_1_working-tree-audit.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_backlog-goal-brief.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_backlog-goal-targets.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_generated-artifacts-review.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_integration-candidates.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_integration-failure-blocked.log
|
||
|
|
docs/runtime/task_helpyourneighbour_2_no-work.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_backlog-goal-verify.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_backlog-inspect.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_backlog-project-snapshot.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_integration-check.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_integration-failure-blocked.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_integration-repair-brief.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_integration-targets.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_integration-triage.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_no-work.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_1_project-snapshot.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_backlog-goal-brief.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_backlog-goal-targets.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_generated-artifacts-review.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_integration-candidates.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_integration-failure-blocked.log
|
||
|
|
docs/runtime/verify_helpyourneighbour_2_no-work.log
|
||
|
|
docs/runtime/working_tree_audit_helpyourneighbour.md
|