Refresh roadmap after Helpdesk validation

This commit is contained in:
Jason Thistlethwaite
2026-04-24 23:58:58 +00:00
parent fb6d0c2736
commit dde4dca8a2
4 changed files with 77 additions and 33 deletions
+43 -26
View File
@@ -146,6 +146,12 @@ Planned/implemented locally but not fully LAN-validated as a complete workflow:
- `journal_message.created`
- `journal_message.updated`
The Helpdesk user workflow itself is now live-smoke-tested, including inbound
Mailpit import, `issueWithHelpdesk()` metadata, default non-email updates, and
explicit customer-visible Helpdesk replies. The remaining gap is validating that
those same controlled actions produce the expected outbox rows and derived
worker documents.
### 3. Local Helpdesk Plugin Fork Changes
We made targeted changes to the local fork of `redmine_contacts_helpdesk`:
@@ -279,6 +285,19 @@ If Mailpit moves, pass the host that Redmine can reach:
./reset_helpdesk_mail_settings.py --mailpit-host 192.168.50.170
```
### 8. redMCP Helpdesk Semantics
The redMCP wrapper now makes Helpdesk behavior explicit:
- `issueWithHelpdesk()` composes normal issue data with Helpdesk ticket/message
metadata.
- `updateIssue()` is safe by default and does not send customer email.
- `updateIssue(..., ['send_helpdesk_email' => true])` and
`sendHelpdeskIssueResponse()` deliberately use the Helpdesk email path.
The live smoke test verifies both default non-email updates and explicit
customer-visible replies through Mailpit.
## LAN Deployment Progress
The LAN Redmine copy at `192.168.50.170` was inspected and updated via SSH.
@@ -304,16 +323,18 @@ The deployed helpdesk search routes were verified with:
## What Is Not Finished Yet
### 1. The Real Worker/Indexer
### 1. Worker Validation
This is the main unfinished piece.
This is the next implementation milestone.
Still needed:
- run and document end-to-end validation of `redmine_outbox_worker.py` against
the LAN copy
- decide the first real external index target
- map the derived JSONL document shape into that index
controlled Helpdesk activity on the LAN copy
- prove that imported Helpdesk issues, Helpdesk replies, and normal issue
updates create the expected event rows
- verify the derived JSONL document shape is useful and does not leak unsafe
content
### 2. External Search Index
@@ -326,17 +347,10 @@ Planned direction:
- ticket-level docs for "which issue mentioned this?"
- message-level docs for "how did we handle a similar case?"
### 3. Full Helpdesk Event Validation
This should wait until the worker validation pass has documented the derived
document shape that will feed the index.
The local code includes helpdesk outbox hooks and read-only helpdesk API
changes, but the complete create/update test matrix for:
- `helpdesk_ticket.*`
- `journal_message.*`
still needs to be run and documented cleanly on the LAN copy.
### 4. Pre-Existing UI/Plugin Bugs
### 3. Pre-Existing UI/Plugin Bugs
We discovered old plugin issues while working:
@@ -356,6 +370,8 @@ Project docs:
- [docs/event_outbox_spec.md](/home/iadnah/redmine/docs/event_outbox_spec.md:1)
- [docs/redmineup_local_fork_changelog.md](/home/iadnah/redmine/docs/redmineup_local_fork_changelog.md:1)
- [docs/helpdesk_smoke_test.md](/home/iadnah/redmine/docs/helpdesk_smoke_test.md:1)
- [docs/test_instance_post_import.md](/home/iadnah/redmine/docs/test_instance_post_import.md:1)
- [docs/pre_existing_issues.md](/home/iadnah/redmine/docs/pre_existing_issues.md:1)
Tooling:
@@ -372,16 +388,15 @@ Local plugin work:
If continuing this project, the next best work is:
1. Stop treating the CLI exporter as the end product.
2. Build the external worker that consumes `event_outbox_events`.
3. Start with a simple derived output target:
- JSONL
- SQLite
- or local files
4. Then connect that worker to:
- Qdrant
- OpenAI embeddings
5. Validate end-to-end helpdesk search using real historical message data.
1. Run the post-import validator and Helpdesk smoke test to establish a clean
baseline.
2. Generate controlled Helpdesk activity in `fud-helpdesk`.
3. Inspect `event_outbox_events` for the corresponding issue, journal,
Helpdesk ticket, and journal message rows.
4. Run `redmine_outbox_worker.py --dry-run --batch-size 10` and document the
derived JSONL output shape.
5. Process a bounded batch only after the dry-run output is correct.
6. Choose the first external index target after the worker output is validated.
## Practical Commands
@@ -452,4 +467,6 @@ is the authoritative customer communication layer, plus the first safe event and
export tooling around it.
The repo is now at the point where the next meaningful leap is an external
worker/indexer, not more Redmine UI surface.
worker validation pass, not more Redmine UI surface. The Qdrant/OpenAI index
work should follow once the worker output is proven against controlled Helpdesk
activity.